WordMoveでWordPressサイトの自動deployができるよ。注意点と応用の話も。
WordMoveでWordPressサイトの⾃動deploy@wtnabeKanazawa.rb meetup #482016-08-20 (Sat) at IT Plaza MUSASHI
View Slide
⾃⼰紹介(ry
お品書き悲しみのWordPressWordMoveWordMove利⽤上の注意応⽤まとめ
悲しみのWordPress
WordPress使ってますか?〜 悲しみに溢れたde facto standard 〜
悲しみ その1環境構築がレガシー過ぎるComposerもフレームワークもない世界DBパスワードも⽣書きが基本どうやってバージョン管理しろとどうやってバージョン管理しろと
悲しみ その2コンテンツがなぜかURL prefix⼊りローカルの環境はあくまでベツモノDBを書き換えるかhosts頼み本番環境でテストするのが結局早い本番環境でテストするのが結局早い
悲しみ その3ファントムファイル前提のDB設計『SQLアンチパターン』11章deploy時にはファイルとDB両⽅必要メンテナンスdownを避けがたい
悲しみ その4HTML混⼊前提のDB設計
悲しみ その5グローバルな状態に依存したコード群
などなどまだあるけどdeployの話から離れるので割愛
WordMove
Wordmove by welaikahttp://welaika.github.io/wordmove/Capistrano for Wordpress
特徴みんな⼤好きRuby製ftp + photocopier gem || ssh + rsync
できること複数のWordPress環境間で同期を⾏う同期コンテンツの限定DBの接続 / dump / restoreの⾃動化URL prefixの⾃動書き換えの⾃動書き換え
FTP support is planned to be discontinued
環境構築の問題以外は解決するのでは?
よい点DVCSっぽい語彙(push, pull)Rubyはremoteには不要全体、テーマ、全体、テーマ、DBなど個別に同期可能など個別に同期可能
悪い点外部コマンド(lftp, rsync)が必要WordMove単体では動かないあくまでWordPressが(WordMoveから⾒て)localhostに必要同期にしか使えないDBの⾃動backupには使えない
やることYAMLでWordPress環境を定義(Movefile)ホスト名、DB接続情報、除外対象これをホストの数だけ増やせばよいerbサポートはあるけど後述
利⽤例wordmove push -t -e staginglocalからstagingへthemesを同期wordmove pull --all -e productionproductionからlocalへすべて同期
WordMove利⽤上の注意
問題v2.0時点1. Movefileに秘密情報が⼊る2. wordpress_pathが絶対パス3. うっかりpush --allが怖い
回避策1. ⾃前でDotenvファイル名Movefile.erbは避ける2. symbolic linkとか3. ⾃前で定型化(1も合わせてRakeとか)
応⽤
CIからthemesだけdeploy
bundle installが必要
deployスクリプトが必要
localの準備wordpress_pathの補正sudo ln -s /path /var/www/wordpresswordmove実⾏時のパスの補正cd /var/www/wordpress
wordmove push -t -e #{env}
remoteの準備need ssh connectionssh host commandcd /var/www/wordpress && wp-cliex) Nginx Cache Controller
まとめ
結構便利秘密情報の扱いには注意が必要Capistranoを名乗るには弱いhookもrollbackもない最後はWordPressの制限がつらい