サーバーなしで
WordPress運用、
できますよ。


2024/12/22 @sogaoh
https://phpcon.php.gr.jp/2024/

About Me


Hisashi SOGA
合同会社 ant-in-giant 代表社員 (2022/03〜)
一般社団法人 SRE NEXT 理事 (2022/01〜)
・7社で業務委託するクラウドインフラ仕事人
 ・最近はリソース最適化・SREを休ませる
  ための可視化ダッシュボード布教に注力

おことわり




こちら の現場での実際の成功事例です
前述「7社」のうちの1つ

AGENDA


  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

  • 資料は公開してあります -> https://bit.ly/4fzeTmx

  • ※1. 履歴が増殖するため、シークレットウィンドウでご覧ください(Chromeを推奨)
  • ※2. ところどころのの文字や一部の画像はリンクになっています
  • ※3. スペースで次のページに進みます([o]でOverviewが見れます))

  • (SpeakerDeck版 はダウンロードしたPDFならリンクに飛べるのでご利用ください)
  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

構成


・中心は ECS (Fargate)
・EFS をマウント
MariaDBのDataFileを
 Fargate起動時にEFSからrsync

(・Fargateに通信を送る
 "道"としてALBを利用[現在] )

・S3 は時点backup兼開発用
 DataSync で 置きに行く

起動〜通常稼働時


cronをインストールしておく
・EFSのpersistenceからrsyncした
 DataFileでMariaDB起動
・uploads等の画像・動画類は
 EFSマウントで配信

・cronで2回/h
 ・DB DataFile -> persistence
 ・DB dump -> dump用領域 (gz)
 ・uploads等 -> contents用領域 (xz)

記事更新ない時


・s3のuploads -> EFSへ(初回)

・DataSync Task を夜に1回/day
 ・DB dump (gz) -> s3
 ・contents (xz) -> s3
  ・prod -> dev [EFS]

・開発はs3のを使う(dump,contents)
・だいぶフレッシュな状態
ローカル・検証環境でも利用
  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

plugin管理:composer


だいたいのプラグインは wpackagist にある
 ex) siteguard, contact-form-7
composer search セヨ
・そして composer require
こんな感じになっていく
どうしてもない・・のは物理的投入

設定管理:wp-cli


https://wp-cli.org/ja/
・wp user ...
・wp plugin activate ...
・wp option update ...
・wp language ...
・wp config set ...

--allow-root を添えて
& を入れて非同期に

掟破りの Dockerfile


「土台」

mariadb-server・cron・aws-cli
もはやサーバー扱い
"土台から上" の整備(後半)

  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

ワンポチCD

1.少数の選択肢を指定するだけで

3.CodePipelineの結果をSlackに通知

2.デプロイが走り出して、CodePipelineを叩いて成功

秘技 awsume


https://awsu.me/
AWSのSwitchRole運用に役立つ超絶便利ツール
・クレデンシャルの転記操作が不要になる
・マネコンをコマンド一発で起動できる
・多段SwitchRoleを実現する(中級)
・パスワードマネージャ連携もある(上級)
saml2aws を加えればさらに最強に(上級)
など、本当に凄い。使ってみて。

開発者に IaC を伝授

Terraform AWS modules

a minimal deployment tool for AWS Lambda

deployment tool for Amazon ECS
Declarative CLI Version manager
  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

アップロードできない問題


プラグイン動作しなくなる問題


  • Fargate移行前は動いていたWordPress編集機能に問題発生
  • EC2環境では Genesis Custom Blocks プラグインが期待動作
  • 移行担当者が休暇取得した日に激詰めに遭うteammate (誇張あり)

  • 取り急ぎDNSを切り戻して原因調査、再移行を選択
  • 原因はPHPバージョンを上げた (7 -> 8) ことによる挙動の変化
  • 事態の深刻化の理由は検証不足 (WordPressナメてましたすみません)

検索されちゃう問題


  • 検証用のドメインがGoogle検索でHitしている〜、と至急の調査依頼
  • SEOに影響あるのですぐ直すように激詰め (誇張あり)
  • そもそも Search Console 管理者誰?という状態なことがそこで発覚

  • 本番以外の全環境でインデックス無効化設定をまずした
  • Googleへインデックス削除申請を行い数日程度で反映された
  • 該当サイトの Search Console 管理者を棚卸
  • ごめんなさいぜんぜん気にしてませんでした (それこそ激詰め) (me)



  • 構成、これを実現する大神技
  • 実現を支える中神技たち
  • 使ってもらうための工夫
  • ここまでにあったトラブル
  • まとめと補足

まとめ


サーバーなしでWordPress運用はできる。
WordPressだからこそ逆にできる。

でもね、抑えるべきところはちゃんと
いろんな目線で見るようにしとかないとね。

補足


EC2運用時代(4台)のコスト推移
サーバーなし運用分(7sites)のコスト推移


End


お気づきの点あれば @sogaoh まで







recruit
手伝ってくれる方を随時募集してます