Google Compute Engine で無料 Wordpress 環境を構築

Google Compute Engine で無料 WordPress 環境を構築

前回、Google Cloud Platform (GCP) の Storage サービス上で静的ウェブサイトを構築する記事を書きました。こちら無償で利用できる Always Free の枠内で運用できる格安ソリューションですが、Wordpress などの動的環境は運用できません。GCP 上で WordPress を稼働させる方法として、Azure でいう Web Apps のようなタイプの「App Engine」を使うか、「Compute Engine」で VM を立ち上げてそのうえで OS ごとホスティングするか、いずれかの方法があります。

App Engine を利用するソリューションのほうは Always Free 枠に SQL が含まれていないため有償での運用になってしまいます。いずれは App Engine での実験も行いたいのですが、今回は Always Free 枠内で WordPress 環境を構築するため Compute Engine による環境を構築していきます。

前提条件としては、「すでに Google Cloud Platform」にアカウントを持っている状態を想定しております。

まず、 GCP にログインし、メイン画面より左上の 「三」 ボタンを押し、[Marketplace] をクリックします

GCP Marketplace のメニュー

検索ボックスに「Wordpress」と入力しエンター

GCP Marketplace 検索に WordPress と入力

検索結果の中から WordPress をクリック

GCP Marketplace で表示される WordPress

[COMPUTE ENGINE 上で起動]をクリック

GCP COMPUTE ENGINE上で起動

設定画面が表示されるので、無料で運用するために以下のように設定します。

GCP 新しい WordPress のデプロイ

Deployment name : なんでもよいです
Zone: [us-east4] を除く米国リージョンに設定する必要があります。
Machine type : ひとまず「small」を選択(インスタンス作成後にf1-microに変更)
Administrator e-mail address : メールアドレス(Wordpress の管理者になります)
Boot disk size in GB : 30
Allow HTTP traffic from the Internet : チェック
Allow HTTPS traffic from the Internet : チェック

以上設定したら画面左下の「デプロイ」ボタンを押します。

デプロイが完了しました。Wordpress へのログイン情報などの情報が記載されたページが表示されます。この画面は メニュー > Deployment Manager からいつでも参照することができます。

GCP WordPress デプロイ完了画面

正しく動作していることを確認するため、右側にある Site address のリンクをクリックしてみます。Wordpress のウェブサイトが表示されたら正しく動作しているということになります。

GCP インストール直後のWordpress画面

さて、先ほど Machine type を small でデプロイを進めたので、ここで無料枠用の micro に変更してあげる必要があります。

「三」- 「Compute Engine」 > 「VM インスタンス」 をクリックします。

変更するためいったん VM を停止します。

GCP VMの停止

停止後、VM をクリックし、 VM インスタンスの詳細 にて「編集」を押します。

GCP VMインスタンスの詳細で編集ボタンを押す

編集画面内、「マシンの構成」で「マシンタイプ」より「f1-micro」を選択します。

併せて、 HTTP トラフィックを許可する 、 HTTPS トラフィックを許可する にチェックを入れ

さらに「ネットワークインターフェース」より静的 IP を予約します。

GCP 静的IPの予約

最後に、設定画面左下にある「保存」ボタンを押し、設定を保存したうえで、VMインスタンスの「起動」を行います。これで GCP 無料枠での WordPress 運用環境が構築できました。

WordPress 環境の設定

デプロイ直後の WordPress は英語環境になっていますので、ログイン後、[Settings] – [General Settings] の [ Site Language ] を [日本語] にして [Save Changes]ボタンを押すと日本語環境になります。ついでに、タイムゾーンも「東京」に変更するとよいです。

独自ドメインの接続

他のブログ記事では Cloud DNS 内のゾーンを作成して GCP 内でドメイン管理を行うような設定をしているところがほとんどですが、Cloudflare などの外部 DNS を使う場合、特に Cloud DNS を作成・設定する必要はありません。

先ほど作成した静的 IP を外部 DNS 側で A レコードもしくは CNAME レコードで追加してあげれば、独自ドメインで GCP 上の WordPress にアクセスすることができます。

例として、Cloudflare 上の DNS を使い、googlecloud.avalon-studio.work というアドレスで先ほどの WordPress 環境にアクセスさせたい場合、

Cloudflare上でDNSを設定する

上図のように設定し、DNS が浸透した数時間後に、Wordpress 管理画面にログインし「設定」-「一般設定」の「サイトアドレス」および「WordPress アドレス」を IP からアドレスに変更してあげると、独自ドメインで WordPress 環境にアクセスできます。

GCP WordPress のサイトアドレス入力欄

(オプション) 設定した独自ドメインへの SSL サーバー証明書の組み込み

以下の手順で上記環境に対して、https 通信を行うための SSL サーバー証明書を組み込むことができます。まず GCP の管理画面から SSH のシェルウインドウを起動します。

GCP VMのSSHへ入るボタン

SSH の画面で以下のコマンドを実行します。(hoge.example.com, admin@example.com の部分は適宜自身のドメインアドレスに置き換えてください)

wget https://dl.eff.org/certbot-auto && sudo chmod a+x certbot-auto
./certbot-auto certonly --webroot -w /var/www/html/ -d hoge.example.com --email admin@example.com

すると様々なことを聞かれますが、SSL サーバー証明書が発行されます。その後以下のコマンドを実行します。

sudo nano /etc/apache2/sites-available/default-ssl.conf

すると画面全体がエディタ画面になり、ファイルの編集を行うことができるようになりますので、下図のようにテキストを編集します。

SSL証明書の default-ssl.conf への組み込み
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLCertificateFile "/etc/letsencrypt/live/hoge.example.com/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/hoge.example.com/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/hoge.example.com/chain.pem"

編集が終わったら ctrl + o を入力して変更を保存、続いて ctrl + x を押してシェル画面に戻ります。

続いて以下のコマンドを実行します。

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart

すると SSL サーバー証明書が組み込まれ、ウェブサーバーが再起動します。試しに独自ドメインで https:// アクセスしてみましょう。証明書情報で以下のように Let’s Encrypt の証明書情報が表示されたら設定は正しく完了しています。

Edge で確認する Let's Encrypt 証明書

この後、SSH シェルで以下のコマンドを実行することで、証明書の自動更新設定を行うことができます、

sudo mv certbot-auto /etc/letsencrypt/
sudo crontab -e

編集画面にて以下の行を挿入

45 2 * * 6 cd /etc/letsencrypt/ && ./certbot-auto renew && /etc/init.d/apache2 restart

CTRL + X、Y、Enterの順に押して、crontab ファイルを保存

以上で、Google Cloud Platform 上で SSL 通信が可能な無料 WordPress 環境が構築できました。
Linux 系の知識がないと敷居が高い GCP ですが、高速に動くことも魅力のひとつですので、利用シーンに応じて検討を。