数億年ぶりにブログをWordPressへ戻した。
以前利用していたときは XSERVER 使ったりもしたけど、今っぽく GCP に載せることに。
構成としては Cloudflare(CDN) + Compute Engine + Cloud Storage。
- VM 負荷軽減のためにメディア保管には GCS を利用したい
- Cloudflare がなくても良さそうな気がしますが先駆者が結構使っていること、利用経験を積んでみたかったので採用
GCPプロジェクト作成・デプロイ
今回はあまり手間をかけずに運用していきたいので Bitnami を採用。
マーケットプレイスから「WordPress with NGINX and SSL Certified by Bitnami」を検索して運用開始。
- us-west1
- e2-micro
- 10GB
上記仕様でスモールスタート。
IPの固定
VPCネットワーク → IPアドレス から外部IP に静的IP を予約。
反映されると固定IPが付与されるので、DNS の Aレコードに設定。
本来この段階でドメイン名でのアクセスは出来るようになる。
(今回は .dev ドメインを利用するため SSL の設定が終わるまでアクセス出来ない)
このタイミングで予算アラートを設定しておく。
SSH 設定
証明書の発行をするのに SSH 接続出来るようにする。
おま環なのかブラウザからのSSHが出来なかった。
gcloud からアクセス出来るので特段困らず。
nginx 止める
証明書の設定をやるので一旦落とす。
sudo /opt/bitnami/ctlscript.sh stop nginx
証明書の発行・更新の自動化
とりあえず Let’s Encrypt で発行する。
Bitnami + nginx の場合、Alternative approach となる。公式リファレンス参照。
発行した証明書は nginx の証明書へリンクを張っておく。
sudo ln -sf /opt/bitnami/letsencrypt/certificates/MY_DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/MY_DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo chown root:root /opt/bitnami/nginx/conf/bitnami/certs/server*
sudo chmod 600 /opt/bitnami/nginx/conf/bitnami/certs/server*
nginx 止めて Let’s Encrypt で証明書発行して nginx 起動するスクリプトを書いて、crontab に登録しておく。
WordPress 側の設定変更 (https 対応)
WordPress のサイトアドレスが http として設定されているものを https へ変更しないとエラーが出るようなので修正。
/opt/bitnami/wordpress/wp-config.php の WP_HOME と WP_SITEURL を https へ変更する。
nginx 動かす
sudo /opt/bitnami/ctlscript.sh start nginx
今回の場合ここまできてアクセス出来るようになるはず。
GCS の設定と WP-Stateless の連携
GCS 設定
GCSバケットの設定。
バケット名は gcs.mydomain.com とするのが丸いらしい (あまりよくわかってない)。
CNAMEレコードは以下を追加。
| タイプ | 名前 | ターゲット |
|---|---|---|
| CNAME | gcs | c.storage.googleapis.com. |
バケットへの権限追加。
「新しいメンバー」に「allUser」、「ロール」を「Storageオブジェクト閲覧者」に設定し保存。
WP-Stateless の導入
WordPress にプラグイン「WP-Stateless - Google Cloud Storage」をインストール。
「Stateless Setup」から GCP を利用しているアカウントでログインし、プロジェクトとバケットを選択、以下のように設定し保存。
- Mode: Stateless
- Domain:
https://gcs.mydomain.com(https://バケット名)
画像をアップロードし、ファイルの URL がバケット名になっていることが確認できればOK。
今後やってみたいこと
証明書周りがいまいちなので変更していきたい。
- 証明書の発行を Cloudflare に移管
- ワイルドカード証明書へ変更
WordPress テーマの内製化。
- あくまでブログとして扱っていきたい
- 無駄なものは無くしつつ、カテゴリなどはわかりやすく分けたい