GCPの無料枠 Always Freeで爆速WordPressを構築する
ブログを始めてみたい。無料ブログは広告だらけで嫌だ。だけどお金はかけたくない。そんなわがままが叶えられるのか?
叶えられます!そう、Google Cloud Platformなら
ブログシステムと言えば無料のAmeba, LINE, Hatenaなどのブログサービスが有名どころでしょうか。しかし、挿入広告を無くしたりデザインを自由にカスタマイズしたい場合、これらのサービスでは物足りなくなることがあるでしょう。
そんな時におすすめしたいのがWordPressです。しかし、WordPress単体は無料なのですがレンタルサーバーの費用が安くても500円ほどかかってしまいます。
大したことない金額に思えますが年間にすると6000円ほど… 6000円あればここのグルメサイトに乗っている寿司をいただくことができてしまいます!

しかし、心配は無用です。Google Cloud Platfrom (Googleが運営するクラウドコンピューティングサービス)を使えば無料でWordPressを始めることができます!
今回はGoogle Cloud Platformを使って無料でWordPressサーバーを構築していこうと思います。
Google Cloud Platformのセットアップ
最初にGoogle Cloud Platform (以下GCP)のセットアップについて説明します。なお、アカウント登録が済んでいることを前提にしているのでここから登録を事前に完了させてください。
アカウント登録が完了するとMy First Projectというような名前のプロジェクトが作成されていると思います。下の画像の赤枠で囲われているところです。プロジェクト名を変更したり新規に作成したい場合はここをクリックするとできます。

プロジェクトの準備が整ったら左上のハンバーガーアイコン(横の3本線のアイコン)をクリックしてメニューを表示しましょう。

1.インスタンスの作成
最初にサーバーのインスタンスの作成を行います。まず、下画像の赤枠で囲われたCompute Engineをクリックしてください。

Compute Engineが開けたら、左のメニューにあるイメージを選択します。 そしてイメージの作成をクリックします。

次に、上のプラスアイコンのイメージを作成をクリックします。

下の画像の赤枠で囲われたフォームに好きな名前を入力しましょう。今回はkusanagi-wordpress-imageにしました。

次に、ソースをCloud Storageファイルにします。

ソースをCloud StorageファイルにするとCloud Storage ファイルの参照が出てきますkusanagi-for-gcp/kusanagi-for-gcp.tar.gzを入力してください。入力を終えるとチェックが走り完了すると緑色のチェックがつきます。

最後に、作成を押してイメージを作成します。ごくたまにですが、作成中…のまま画面が切り替わらない場合があります。数分たっても切り替わらない場合は再びイメージの画面に戻ってリロードしてみてください。

次に、VMインスタンスメニューをクリック → VMインスタンスの作成を押してVMインスタンスを作成します。

名前には好きな文字列を入れてください。

赤枠のリージョンはデフォルトの設定のままで良いはずです。ただし、GCPの無料枠 Always Freeはf1-microインスタンスのみでus-central1、us-east1、us-west1リージョンにある必要があります。これ以外のインスタンスやリージョンを設定すると無料にはならないので今一度確認してください。

次に、マシンタイプを選択します。選択肢からf1-microインスタンスを選んでください。

赤枠で囲まれたところにf1-microインスタンスがあります。

次にディスクイメージの変更を行ます。デフォルトではDebian GNU/Linux 9 (stretch)が選択されていると思います。変更を押してください。

カスタムイメージを押してから先ほど作成したイメージを選択してください。また、30GBまでは無料枠に含まれるのでサイズは30に変更してください。

最後にHTTPトラフィックを許可するとHTTPSトラフィックを許可するにチェックをつけてインスタンスを作成してください。

2. ネットワークのセットアップ
ネットワークのセットアップを行ます。先ほどのインスタンスセットアップの時と同様にハンバーガーメニューを開きます。下にスクロールするとネットワーキングのグループの中にVPCネットワークと言う項目があります。それをクリックしましょう。

次に、外部IPアドレスの項目をクリックします。

すると使用リソース欄に先ほど作成したVMインスタンスの名前が表示されたIPアドレスがあると思います。赤枠で囲われたタイプの部分がデフォルトだとエフェメラル(VMの起動毎に変わってしまう)になっています。毎回IPアドレスが変わってしまうとアクセスができなくなるので、ここを静的に変更してください。

静的アドレスの予約画面が出てきます。名前を入力してから予約を押してください。

次に独自ドメインを持っている方はネームサーバーのセットを行ましょう。まだ取得していない方はお名前.comなどでドメインを取得しましょう。
3. サーバーのセットアップ
これからサーバーのセットアップを行います。ここではKusanagiとWordPressのインストールも行います。早速、WordPressをインストールしたいところですが、前準備が必要です。
GCPのAlways Freeはメモリ0.6GBと10年以上前のPC並です。これだとWordPressを動かすのに必要なMariaDBというデーターベースの起動に失敗します。よってスワップエリアを作成しメモリに余裕を持たせます。
まず、VMインスタンスの画面に移動しSSHのボタンを押してコマンドラインを起動します。

下のようなWebターミナルが開きます。接続が完了するまでしばらく待ちましょう。

接続が完了すると下のような黒背景に白文字のいかにもコマンドラインと言う感じの画面になります。普段からコマンドライン操作に慣れていない人は敷居が高いように感じるかもしれません。しかし、ほとんどコピペで完了するので安心してください。

スワップエリアを作成するには下記のコマンドを実行します。今回は約1GBのスワップを作成します。しばらく時間がかかることがあるので数分気長に待ちましょう。
$ sudo su -
$ dd if=/dev/zero of=/swapfile bs=1M count=1024
パーミッションを変更します
$ chmod 600 /swapfile
スワップを作成します
$ mkswap /swapfile
このままでは、再起動時にスワップが有効にならないので設定ファイルを編集します。下記のコマンドを実行して/etc/fstabに設定を追加してください。
echo '/swapfile swap swap defaults
0 0' >> /etc/fstab
再起動してから、スワップが有効になっていることを確認してください。Webターミナルを使用している方は再接続のボタンを押すとそのまま開けます。
$ reboot
$ free -m
total used free shared buff/cache available
Mem: 588 243 97 4 247 241
Swap: 1023 0 1023
Kusanagiのセットアップ
スワップエリアを作成しKusanagiをセットアップする準備が整いました。公式ドキュメントにも記述されている通りに進めます。
$ sudo su -
$ yum --enablerepo=remi,remi-php56 update -y
一度サーバーを再起動します。
$ reboot
再起動が完了したら、kusanagi initで初期セットアップを行います。初回は鍵の生成など時間がかかりますが気長に待ちましょう
$ sudo su -
$ kusanagi init
まずタイムゾーンを聞かれます。リストの中からAsia/Tokyoを選択します。timezone: の続きにAsia/Tokyoを入力しても選択することができます。

次に言語について聞かれます。2の日本語を選択しましょう。
Applying Location: Asia/Tokyo.
Select your using language.
1 : English
2 : 日本語
q : quit
Which are you using?:
キーボードレイアウトに関してもJapanese(日本語)を選択しましょう。
You choose: Japanese
Select your keyboard layout.
1 : English
2 : Japanese
q : quit
Kusanagiのパスワードを更新します。任意のセキュアなパスワードを決めて入力しましょう。この操作は再入力を含めて2回あります。
kusanagi user password using in software update.
Changing password for user kusanagi.
New password:
次に鍵を生成する際のパスフレーズを決定します。ここも先ほどと同様に進めます。
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
次に使用するWebサーバーを選択します。ここではKusanagiのデフォルトであるNGINXを使用します。一部Apacheでないと動作しないプラグインも存在しますがNGINXの方が軽いため、非力なf1-microインスタンスに適しています。
KUSANAGI can choose middlewares.
Please tell me your web server option.
1) NGINX(Default)
2) Apache
Which you using?(1):
PHP7が登場するまではPHPは非常に遅かったためHHVMを選択していました。PHP7はHHVMにも匹敵する速さを持つことからも今回はこれを採用します。なお、HHVMはPHP互換があるのでこれでも問題ありません。ただしPHP5は、f1-microインスタンスでは重いので、特別な事情がない限りはオススメしません。
You choose: NGINX
use nginx
Done.
Then, Please tell me your application server option.
1) PHP7(Default)
2) HHVM
3) PHP5
Which you using?(1):
Rubyのバージョンを選択します。とい言っても1つしか選択肢がないのでそのまま進みます。
Then, Please tell me your ruby version.
1) Ruby2.4
Which you using?(1):
次にデーターベースシステムを選択します。MariaDB (MySQL)とPostgreSQLを選択できますがWordPressはMariaDBでしか動作しません*。デフォルトのMariaDBのまま進んでください。 * WordPressをPostgreSQLで動作させることはできますがKusanagiの自動インストールでは使えません。
Then, Please tell me your Database system.
1) MariaDB(Default)
2) PostgreSQL
Which you using?(1):
MariaDBのrootパスワードを設定します。なるべく推測されにくい文字列にするようにしてください。
Enter MySQL root password. Use [a-zA-Z0-9.!#%+_-] 8 characters minimum.
WordPressのセットアップ
Kusanagiのセットアップが完了したところで、次はWordPressの構築作業に入ります。
kusanagi provision –WordPress [サイト名など] を実行してWordPress環境をインストールします。以下のコマンドは例です。
$ kusanagi provision --WordPress tipstock_dev
次にWordPressの言語を聞かれるので2のja(日本語)を選択してください。
Target directory is /home/kusanagi/tipstock_dev.
Choose the installation language of WordPress.
1 : en_US
2 : ja
q : quit
Which do you choose?:
次にホスト名を聞かれます。ホスト名とはgoogle.co.jpのようなURLになります。用意したドメイン名を入力しましょう。
Enter hostname(fqdn) for your website. ex) kusanagi.tokyo
tipstock.net
次にLet’s EncryptでSSL化をします。GoogleのクローラーがSSL化されているサイトを優先することからもSEO的に設定しておくべきです。Let’s Encryptに登録するE-mailアドレスを入力するだけで自動でSSL化が完了します。
In order to use Let's Encrypt services, you must agree to Let's Encrypt's Term of Services.
If you agree to this TOS, type your email address; if not, hit enter twice.
TOS of Let's Encrypt : https://letsencrypt.org/repository/
次に作成するデーターベースの名前を決定します。ここに入力した名前は後々の設定で必要なのでメモを取るなどして忘れないようにしましょう。
Enter the name of your database.
tipstock
Re-type database name you create.
tipstock
先ほど作成したデーターベースのユーザー名を決定します。これも覚えておきましょう。
Enter user name for database tipstock.
tipstock
Re-type user name for database tipstock
tipstock
次にデーターベースのパスワードを決定します。セキュリティの観点からもKusanagiの初期設定に使ったrootとは異なるものにしてください。また、これも覚えて置いてください。
Enter password for database user 'tipstock'. USE [a-zA-Z0-9.!#%+_-] 8 characters minimum.
ここまで、正常に完了すると自動的にWordPressをダウンロードし、必要な設定を完了させてくれます。
次にブラウザであなたの設定したドメイン(URL)を開きます。正常にセットアップが完了していると以下のような画面が表示されます。さあ始めましょうを押して先に進みましょう。

次にデーターベースの情報を設定するページに飛びます。先ほどセットアップしたデーターベース情報を入力しましょう。

最後にサイトの基本情報を入力してWordPressのダッシュボードが表示されれば終了です!お疲れ様でした。

Google PageSpeed Insightでも画像などが多い中スコア83となかなか良い結果だと思います。無料で立てられるサーバーの中では爆速の部類に入るでしょう。

今回はGCPを使って無料でWordPressサーバーを構築しました。ブログを初めてみたい方やWordPressをいじってみたい方にはおすすめします。是非、手を動かして試してみてください。
GCPで立てたWordPressブログのアクセスが多くなるようでしたら、広告などを掲載し収益化するとともに有料プランへの切り替えをおすすめします。無料枠では、どうしても捌ききれなくなってしまいます。
また、その場合はGCPよりも他のレンタルサーバーやVPSをおすすめします。GCPはコストが高くWordPressには性能過剰です。レンタルサーバーであればエックスサーバーやVPSであればConoha
などもおすすめです。