Published on

Google Cloud Platform+Ghost でブログサイトを構築した話

Authors

ブログサイトを新たに構築したので構築手順と Tips をまとめておきます。

(構築時に取っておいたメモを誤って消してしまったので具体的なコマンドは割愛します…。)

使用したサービス・ツール

  • Google Cloud Platform
  • Google Compute Engine
  • Google Cloud Networking
  • Ubuntu 16.04
  • Nginx
  • Node.js 4.2
  • Ghost 0.11.2
  • お名前.com

はじめに

アウトプットする習慣・場を最適化し続けていますが,GitHub Pages・Medium を試してきて自分には合わなくて放置気味にしていたところ,ふと Ghost を思い出してサイトを見たところだいぶ洗練されてきているように見えた。

それと,React.js のサンプル作ったけど deploy する場所無いんだよなと思っていたところだったので,それならサーバから建てようと思ってえいやで構築した。

結論としては色々ハマった点が有って勉強になったし,Ghost かなり使いやすいので満足度は非常に高いです。

ホスティング先の選定からブログサイト構築手順及びハマった点をまとめていきます。

ホスティング先をどこにするか

各社 VPS・クラウドで悩んで,Google Compute Engine を選択することにした。

PaaS は経験有るが IaaS は使ったことがなく,さすがにクラウド使ったことないとかダメだろうということで AWS か GCP の 2 択で悩む。AWS のサービス群が自分には分かりづらく心理的ハードルが高かったのと,[60 日間無料試用 300クレジットキャンペーンで3ヶ月無料](https://cloud.google.com/freetrial/)microインスタンスならおよそ300 クレジットキャンペーンで 3 ヶ月無料](https://cloud.google.com/free-trial/),micro インスタンスならおよそ5/月,Google Compute Engine が便利で良かった件を読んで,コスト・利便性を重視して GCE にした。

インスタンスを作成する

クラウドを使ってのホスティングは初めてだったので,かなりの衝撃を受けた。

ウェブサイトがサインアップから 30 分程度で構築できたのだ。

  1. Google Cloud Platform にサインアップする
  2. 「Google Compute Engine を試す」という 15 分のチュートリアルで雰囲気を掴む
    1. インスタンス作成
    2. SSH 接続
    3. HTTP サーバ起動
    4. インスタンスの削除
  3. Google Cloud Console でプロジェクトを作成する
  4. Google Cloud Console で Google Compute Engine を選択し,インスタンスを作成する
    1. ゾーンは asia-east-a を選択
    2. マシンタイプは f1-micro を選択
    3. OS は Ubuntu 16.04 を選択
  5. IP でアクセスできるウェブサイトの構築が完了

続いて各種ソフトウェアをインストールする

  1. Linux に Ghost をインストールする方法 を参考に Ghost をインストールし,
  2. Ghost をデプロイする方法 を参考に
    1. 起動スクリプトで Ghost を終了しないようにし,
    2. サイトを公開するために Nginx をインストール・設定し,
  3. IP でアクセスできるブログサイトの構築が完了

独自ドメインでアクセス可能にする

  1. Google Cloud Console にアクセスし,ネットワーク > 外部 IP アドレスで固定 IP を取得する
  2. Google Compute Engine のインスタンスに固定 IP を設定
  3. Ghost をデプロイする方法 を参考に
    1. 独自ドメインで運用するために Ghost を設定
  4. お名前.com の DNS レコード設定で固定 IP とドメインを A レコードで紐付ける
  5. 独自ドメインでアクセスできるブログサイトの構築が完了

以上でブログサイトの構築が完了で,想定を遥かに超える簡単さだった。


続いて構築時にハマった点も書いておきます。

  • Ghost 0.11.2 が対応しているNode.js のバージョンが 4.2 のみで,ローカル環境に構築した時にハマった。Ghost 0.11.3 (2016-11-02 released) では Node v6 に対応しているようなので,これから構築する人はハマらないはず。
  • Ghost が終了しないように起動スクリプトを使う方式を選択して $ sudo update-rc.d ghost defaults を実行したところエラーが出て,Ubuntu Server 12.04: 警告「Setting locale failed」への対処法を参考に ~/.bashrc に export LC_ALL=en_US.UTF-8 を追加して $ source ~/.bashrc をして解決
  • DNS レコード設定に Cloud DNS を使うかお名前を使うかで悩んだ。単純に DNS 周りの知識が足りてないということが原因で TRY & ERROR を繰り返し,お名前側で設定することで運用に乗せた
  • トップレベルドメイン(www 無)の設定を A レコードで設定する方法が分からなかった。お名前の設定画面でサブドメイン必須だと勘違いしていて,それ Empty で設定できるよと教えてもらって解決できた

まとめ

  • GCE 超便利。クラウドを苦手意識で試さないのは勿体無い
  • Ghost が自分的にかなりしっくり来てる。既に何エントリか書いているけど,モバイルウェブでも書きやすい。そして当たり前だけどブログの基本機能は揃ってるし,モダンな AMP 対応も簡単にできた。

Ghost 自体の開発も続いていて1.0 リリースも近そうなので,これからブログサイト構築・リニューアルしようとしてる人はブログツール候補として十分候補にして良いと思う。

さてアウトプットしやすい環境ができたので,アウトプットに注力していかねば。