数億年ぶりにブログを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.phpWP_HOMEWP_SITEURL を https へ変更する。

nginx 動かす

sudo /opt/bitnami/ctlscript.sh start nginx

今回の場合ここまできてアクセス出来るようになるはず。

GCS の設定と WP-Stateless の連携

GCS 設定

GCSバケットの設定。

バケット名は gcs.mydomain.com とするのが丸いらしい (あまりよくわかってない)。

CNAMEレコードは以下を追加。

タイプ名前ターゲット
CNAMEgcsc.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 テーマの内製化。

  • あくまでブログとして扱っていきたい
    • 無駄なものは無くしつつ、カテゴリなどはわかりやすく分けたい