Slide 1

Slide 1 text

サーバーなしで WordPress 運用、 できますよ。 2024/12/22 @sogaoh https://phpcon.php.gr.jp/2024/ 1

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

AGENDA 構成、これを実現する大神技 実現を支える中神技たち 使ってもらうための工夫 ここまでにあったトラブル まとめと補足 資料は公開してあります -> ※1. 履歴が増殖するため、シークレットウィンドウでご覧ください(Chrome を推奨) ※2. ところどころの青の文字や一部の画像はリンクになっています ※3. スペースで次のページに進みます([o] でOverview が見れます) ) ( はダウンロードしたPDF ならリンクに飛べるのでご利用ください) https://bit.ly/4fzeTmx SpeakerDeck 版 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

構成 ・中心は ECS (Fargate) ・EFS をマウント ・MariaDB のDataFile を  Fargate 起動時にEFS からrsync ( ・Fargate に通信を送る  " 道" としてALB を利用[ 現在] ) ・S3 は時点backup 兼開発用  DataSync で 置きに行く 6

Slide 7

Slide 7 text

起動〜通常稼働時 ・cron をインストールしておく ・EFS のpersistence からrsync した  DataFile でMariaDB 起動 ・uploads 等の画像・動画類は  EFS マウントで配信 ・cron で2 回/h  ・DB DataFile -> persistence  ・DB dump -> dump 用領域 (gz)  ・uploads 等 -> contents 用領域 (xz) 7

Slide 8

Slide 8 text

記事更新ない時 ・s3 のuploads -> EFS へ(初回) ・DataSync Task を夜に1 回/day  ・DB dump (gz) -> s3  ・contents (xz) -> s3   ・prod -> dev [EFS] ・開発はs3 のを使う(dump,contents) ・だいぶフレッシュな状態 ・ローカル・検証環境でも利用 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

設定管理:wp-cli ・wp user ... ・wp plugin activate ... ・wp option update ... ・wp language ... ・wp config set ... --allow-root を添えて & を入れて非同期に https://wp-cli.org/ja/ 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

ワンポチCD 1. 少数の選択肢を指定するだけで 3.CodePipeline の結果をSlack に通知 2. デプロイが走り出して、CodePipeline を叩いて成功 14

Slide 15

Slide 15 text

秘技 awsume AWS のSwitchRole 運用に役立つ超絶便利ツール ・クレデンシャルの転記操作が不要になる ・マネコンをコマンド一発で起動できる ・多段SwitchRole を実現する(中級) ・パスワードマネージャ連携もある(上級) ・ を加えればさらに最強に(上級) など、本当に凄い。使ってみて。 がおそらく元祖紹介記事 に秀逸な記事2つ にかなり詳しい紹介 https://awsu.me/ saml2aws マネコン起動もできるAWS のスイッチロール用CLI ツール「AWSume 」 の紹介 | DevelopersIO 「awsume 」in vauge memory AWSume とは?概要と基本機能 | 株式会社一創 15

Slide 16

Slide 16 text

開発者に IaC を伝授 Terraform AWS modules a minimal deployment tool for AWS Lambda deployment tool for Amazon ECS Declarative CLI Version manager 16

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

アップロードできない問題 管理画面から突然画像アップロードができなくなった 神々の不在時に何かが起きるの法則 羽田でSlack の連絡みながら対応した人がいる(me ) 結局構築者を叩き起こして処置(離陸に間に合わず) 割と頻発して応急処置は ECS Exec して chown ・chmod 根本原因は DataSync の Copy ownership (EFS 設定不備) see AWS DataSync User Guide > Configuring how to handle files, objects, and metadata > Metadata handling options 18

Slide 19

Slide 19 text

プラグイン動作しなくなる問題 Fargate 移行前は動いていたWordPress 編集機能に問題発生 EC2 環境では Genesis Custom Blocks プラグインが期待動作 移行担当者が休暇取得した日に激詰めに遭うteammate ( 誇張あり) 取り急ぎDNS を切り戻して原因調査、再移行を選択 原因はPHP バージョンを上げた (7 -> 8) ことによる挙動の変化 see 事態の深刻化の理由は検証不足 (WordPress ナメてましたすみません) 【PHP7 から8 へ切替】Warning: Undefined variable が表示された場合の修正方法 19

Slide 20

Slide 20 text

検索されちゃう問題 検証用のドメインがGoogle 検索でHit している〜、と至急の調査依頼 SEO に影響あるのですぐ直すように激詰め ( 誇張あり) そもそも Search Console 管理者誰?という状態なことがそこで発覚 本番以外の全環境でインデックス無効化設定をまずした Google へインデックス削除申請を行い数日程度で反映された 該当サイトの Search Console 管理者を棚卸 ごめんなさいぜんぜん気にしてませんでした ( それこそ激詰め) (me) 20

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

まとめ サーバーなしでWordPress 運用はできる。 WordPress だからこそ逆にできる。 でもね、抑えるべきところはちゃんと いろんな目線で見るようにしとかないとね。 22

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

End お気づきの点あれば まで @sogaoh 24 手伝ってくれる方を随時募集してます