定期的に論争になりますが、企業がコーポレートサイトなどでCMSを構築するとなると、なんやかんやでWordpressになりがちです。多くの人がWordpressを望んでいるからです。ただしエンジニア除く。
-
マーケター:プラグイン入れるだけでSEOも資料請求フォームも全部できる。
- metaタグの順序やルール入れ替えるのにいちいちエンジニアに声かけるとか意味わからんよね
- はやりのLLMO?とかももうプラグイン出てるみたい。
- できれば別ドメインじゃなくサブディレクトリに作れる?
-
制作会社:サイトデザイン+CMSテンプレート化するってなったらWordpressが一番安くできます。
- ReactやVueもできますけど、テンプレートシステムはなんです?スクラッチ?それに対応するのは大変ですねぇ。SEO要件とかで変更も多そうですし。
-
インターン生:WordpressかWix、StudioのCMSならいじれます!
- あ、構築とかはやったことないので、投稿画面で入稿するだけっす。
- スマホでトップ画像作るので、スマホから画像アップできるやつでお願いします。
CMSはもはや「Webアプリケーション」ではなくマーケティングプラットフォームなんだと思います。Hubspotとかと同じジャンル。
社内エンジニアは往々にして「コーポレートサイトごとき」に工数を割くくらいなら自社プロダクトを作るほうに工数を割きたいですよね。というかWordpressの運用って地雷が多いわりに得られるものが少なくてつらいですし・・
WordpressのSaaSはどうなの?
じゃあSaaSにすればいいじゃんとなるのですが、選択肢が少ないです。海外のサービスなので、ドキュメントやサポートが英語になる場合もあります。
- 本家Wordpress.com・・・月500円程度から始められるがカスタマイズに大きく制約あり。
- kinsta・・・速度、セキュリティ万全だが1サイト月5000円($35)~
あとはレンタルサーバーにインストールして運用ってパターンが多いですね。ワンクリックインストールや、海外アクセス制限などWAF的なものも提供されますし。ただ共有サーバだと負荷が安定しなかったり、セキュリティ対応は結局自前で管理なので大変なことには変わりません。
サブディレクトリでやりたい問題
SEOの観点でメインサイトと同じドメイン上にサブディレクトリとして構築したい場合があると思います。こうなってくるとけっこうなCMS SaaSが脱落します。自前構築かヘッドレスCMSしかありません。
はてなブログは頑張っていますが、構築大変そうでした(打合せが何回も必要だった)
https://help.hatenablog.com/entry/subdirectory
なんとかWordpressを安く堅牢に運営したい
さて、そんな「マーケツール」としてのWordpressですが、セルフホストするのであればそれを安全に保つのはエンジニアの責務になってしまいます。かつ、CMSって意外と予算でないんですよね。初期構築はともかくホスティング費に月何万円も出してくれにくい。
そこでどうするか、 コンテナ(CloudRun)(+ SQLite) です。
この構成のコンセプトというか特色は以下の通りです。よく聞く企業の運営を想定しています。
- ComposerでWordpressとPluginをGithub管理し、管理画面でいじらせない
- テーマは制作会社が用意してくれるステージングからFTPで適宜落としてきて同様にGithub管理します
- 本番環境はコンテナでCloudRunやFly.ioで運用します。
- GCSやS3、R2などに保管するプラグインを入れて画像はオブジェクトストレージで読み書きします
- その結果、コンテナのローカルディスクは読み書き禁止というか書き込んでもインスタンスが適宜終了するので消えます。
- Wordpressの脆弱性を悪用されるとだいたいファイルが設置・改ざんされるのでこの問題をほぼ解決できます。
- オプションでコスト面ではDBが多くをしめ、HA構成のMySQLは最安値でも月2,3万円するので、そこをSQLite+バックアップシステムにすることで安く抑えます。
- WordpressってMySQLでしょ?SQLiteで動くんですか?はい、おおむね動きます。公式プラグインあります。
- CloudRunはゼロスケールするのでめちゃ安いです。ネットワークが高いですが画像の配信を外部ストレージにすれば問題ないでしょう。
これで、タイトルにある 「堅牢」かつ「月1000円以下」 が実現可能です。まぁHAのMySQLインスタンスがすでにあるよって人はそっちにdatabase追加して使ったほうがいいです。HAのって書いたのは、CMSごとき※のためにDBの保守をしたくないからです。マネージドサービスのHAにまかせましょう。
(※CMSごとき、というのは多くのエンジニアにとってメイン業務じゃない、という意味です。CMSを本業として開発運用されている方を貶す意図はありません)
この構成だと業務フローはこうなる
いろんな関係者の作業はどうなるか考えてみましょう。
初期構築・・・制作会社のレンサバ→コンテナ化
エックスサーバーなどのレンタルサーバーで、FTPアクセスとかで構築します。このときに、テーマフォルダの中以外は改造禁止というのをお願いしておきましょう。
必要なプラグインの選定もこの段階で済ましておきます。
構築が終わったら、FTPでテーマディレクトリだけ落としてきて、Dockerfileビルド時にCOPYするようにしましょう。プラグインはwpackagistからプラグイン名を控えてComposerに記入していきます。WP本体やプラグインのコードは手元におかず常に最新版をコンテナビルド時にインストールします。
記事入稿・・・本番環境でOK
記事入稿は普通に本番環境で行って大丈夫です。記事はすべてDBとオブジェクトストレージに保管されるので、コンテナがダウンしても問題ありません。
同様にマーケターがSEOプラグインを使ってメタデータを編集する場合やAdvanced Custom Fieldsなどを使う場合もDBに格納されるため、コンテナが消えても大丈夫です。セキュリティを考えるなら、認証付きの管理画面コンテナ(マスターDBに接続)と、管理画面を削除したコンテナ(リードレプリカに接続)に分けてもいいですね。
プラグインの追加やテーマの改修・・初期と同じ手順
テーマの編集やプラグインの追加は、ステージングで行ってもらって、動作確認したら初期構築と同様の手順でビルドします。(テーマは取り込む、プラグインはcomposer追加)
どのみちステージングで動作確認しますよね!本番でプラグイン試したりテーマ直接編集したりしませんよね!ね!
Wordpressのバージョンアップ・・GithubActionsで自動化
エンジニアの業務としてのWordpress本体やプラグインのバージョンアップですが、これはコンテナを再ビルドするだけです。Coomposerのバージョン指定に"*"を書いておいて、commposer.lockをあえてつくらなければ毎回フレッシュインストールされます。
作業としてもGithubActionsで自動化しておけば楽ちんですよね。
既存サイトからの移行はどうすれば?
魔改造していない、シンプルなコーポレートサイトでしたら、Wordpressのインポート・エクスポートプラグインを使えばたいてい問題ありません。画像パス周りが面倒ですが、それも対応したプラグインやノウハウがそこらへんにあふれています。そう、Wordpressならね。
・・・
おわり
というわけで、この記事が人気が出たらCloudRunとFly.ioで1000円以下で構築するファイル一式を提供する予定です。シェアまたはつっこみコメントまたはWordpressへの怨嗟を吐いてみてくださいね!(この記事は100%人間が書きました)
