このサイトは以前書いたようにソースコードはGitHubにpushし、werckerを使用してデプロイしていたのですが、全てVPSで行うように変更しました。

変更前



この図には書いていないのですが、生成前のMarkdowやJavaScriptなども全てGitHubにpushしてました。GitHubにpushしてwerckerをキック。さくらのVPSにsshでファイル転送という方法をとっていました。やり方は以前の記事に書いてます

変更後


※変更前の図(mountのところなど)が一部変だったのでそれも修正してます。

対して、変更後は生成前のMarkdowやテーマ等のJavaScriptはGitBucketにpushしています(ちなみにテーマは以前からVPS上のGitBucketで管理してました)。Hexoで生成したhtmlはGitBucketとは別のGitベアリポジトリにpushしてGit hook内で一旦一時ディレクトリにcloneした後に、不要ディレクトリやファイル(.gitなど)を削除してコピーしています。

本当は全てGitBucketで管理したかったのですが、ちょっといろいろあって、別のリポジトリを設けてます。この辺りの理由はこっちに書いてます。また、厳密にはGitBucketと同一ネットワーク上のnginxに直接httpsでpushしているわけではなくて、図の右側のnginxを一度はさんでいるのですが、図が複雑になるので省略してます。

また、Assertibleというサービスを利用してサイトの稼働状況(レスポンスタイム)等を図っていたのですがバッジを張り付けて満足していただけだったので、リソースを使うのは忍びないと思ったのでそれもやめました。

VPSへの直接のデプロイを確認した後は下記のような作業も行いました。

  • GitHub上のリポジトリの削除
  • werckerのサイト関連のJobを削除
  • VPSからwercker用のユーザや鍵などを削除

なんで変更したのか?


下記の理由で変更しました。

  • GitHubを使用する理由がなくなった
  • werckerのデプロイが遅い
  • werckerのデプロイがごくまれに失敗する
  • werckerにセキュリティ絡みの情報を持たせたくなかった

もともと、VPSを契約する前はGitHubPages + 独自ドメイン(リポジトリのルートにCNAMEを設定)でサイトを運用していました。ですので、全てGitHubにpushしていたのですが、VPSを契約した時点でこれが不要になりました。また、GitHubにはNo License、つまり、「いかなる使用・変更・共有・再頒布も許可していない」でコードを公開してたのですが、たまにTrafficを確認するとクローンしている人もいたので、そのあたりも「何となく嫌だな~」という気持ちがありました。

一番大きいのはwercker関連で、上記に書いた通りデプロイが3~5分くらいかかっていました。これって、私のような超絶イラチな人間には結構キツイんですよ。これはwerckerのサーバが海外で、しかも都度全てGitHubからクローンしたうえで、sshでVPSに転送しているのが原因であって別にwerckerが悪いわけではないです。念のため。おまけに、werckerのデプロイ(VPSへの転送部分)がまれに失敗するというのもありました。変更後のデプロイフローではおおよそ5秒以内でサイトが更新されるという爆速になりました。スゲースッキリです。大満足。

後はwerckerからsshでVPSに転送するということはwercker側にVPSのユーザ + 秘密鍵 + sshポートの情報を持たせておく必要があり、これも嫌でした。もちろん、wercker専用のユーザ + 鍵を作成していましたし、werckerのログもprivateにしていたので私以外は解らないと言えばわからない状態でしたが、うっかりログをpublicにしてしまう可能性とかで漏れてしまう可能性もないとは言い切れなかったというのがあります。

GitHubのアクティビティ


デプロイ周り以外で別の理由が一つありました。それは、サイトの更新以外で自分がどれくらいのコミットを行っているのか知りたかったのです。果たして自分はサイト以外でどれくらいコミットしているのか…。サイト関連のリポジトリを削除して確認してみたかったのです。下記がその結果です。

削除前

削除後

メッチャ減りましたけど、思ってたよりコミットしてました。むしろ、何にそんななにコミットしてるんですかね?私もわかりませぬ。

その他


VPS内でのデプロイの案は複数あったのですがボツになった案はこちらに書きました