Slide 1

Slide 1 text

WordMoveで WordPressサイトの ⾃動deploy @wtnabe Kanazawa.rb meetup #48 2016-08-20 (Sat) at IT Plaza MUSASHI

Slide 2

Slide 2 text

⾃⼰紹介 (ry

Slide 3

Slide 3 text

お品書き 悲しみのWordPress WordMove WordMove利⽤上の注意 応⽤ まとめ

Slide 4

Slide 4 text

悲しみのWordPress

Slide 5

Slide 5 text

WordPress使ってますか? 〜 悲しみに溢れたde facto standard 〜

Slide 6

Slide 6 text

悲しみ その1 環境構築がレガシー過ぎる Composerもフレームワークもない世界 DBパスワードも⽣書きが基本 どうやってバージョン管理しろと どうやってバージョン管理しろと

Slide 7

Slide 7 text

悲しみ その2 コンテンツがなぜかURL prefix⼊り ローカルの環境はあくまでベツモノ DBを書き換えるかhosts頼み 本番環境でテストするのが結局早い 本番環境でテストするのが結局早い

Slide 8

Slide 8 text

悲しみ その3 ファントムファイル前提のDB設計 『SQLアンチパターン』11章 deploy時にはファイルとDB両⽅必要 メンテナンスdownを避けがたい

Slide 9

Slide 9 text

悲しみ その4 HTML混⼊前提のDB設計

Slide 10

Slide 10 text

悲しみ その5 グローバルな状態に依存したコード群

Slide 11

Slide 11 text

などなど まだあるけどdeployの話から離れるので割愛

Slide 12

Slide 12 text

WordMove

Slide 13

Slide 13 text

Wordmove by welaika http://welaika.github.io/wordmove/ Capistrano for Wordpress

Slide 14

Slide 14 text

特徴 みんな⼤好きRuby製 ftp + photocopier gem || ssh + rsync

Slide 15

Slide 15 text

できること 複数のWordPress環境間で同期を⾏う 同期コンテンツの限定 DBの接続 / dump / restoreの⾃動化 URL prefixの⾃動書き換え の⾃動書き換え

Slide 16

Slide 16 text

FTP support is planned to be discontinued

Slide 17

Slide 17 text

環境構築の問題以外は 解決するのでは?

Slide 18

Slide 18 text

よい点 DVCSっぽい語彙(push, pull) Rubyはremoteには不要 全体、テーマ、 全体、テーマ、DBなど個別に同期可能 など個別に同期可能

Slide 19

Slide 19 text

悪い点 外部コマンド(lftp, rsync)が必要 WordMove単体では動かない あくまでWordPressが(WordMoveか ら⾒て)localhostに必要 同期にしか使えない DBの⾃動backupには使えない

Slide 20

Slide 20 text

やること YAMLでWordPress環境を定義(Movefile) ホスト名、DB接続情報、除外対象 これをホストの数だけ増やせばよい erbサポートはあるけど後述

Slide 21

Slide 21 text

利⽤例 wordmove push -t -e staging localからstagingへthemesを同期 wordmove pull --all -e production productionからlocalへすべて同期

Slide 22

Slide 22 text

WordMove利⽤上の注意

Slide 23

Slide 23 text

問題 v2.0時点 1. Movefileに秘密情報が⼊る 2. wordpress_pathが絶対パス 3. うっかりpush --allが怖い

Slide 24

Slide 24 text

回避策 1. ⾃前でDotenv ファイル名Movefile.erbは避ける 2. symbolic linkとか 3. ⾃前で定型化(1も合わせてRakeとか)

Slide 25

Slide 25 text

応⽤

Slide 26

Slide 26 text

CIからthemesだけdeploy

Slide 27

Slide 27 text

bundle installが必要

Slide 28

Slide 28 text

deployスクリプトが必要

Slide 29

Slide 29 text

localの準備 wordpress_pathの補正 sudo ln -s /path /var/www/wordpress wordmove実⾏時のパスの補正 cd /var/www/wordpress

Slide 30

Slide 30 text

wordmove push -t -e #{env}

Slide 31

Slide 31 text

remoteの準備 need ssh connection ssh host command cd /var/www/wordpress && wp-cli ex) Nginx Cache Controller

Slide 32

Slide 32 text

まとめ

Slide 33

Slide 33 text

結構便利 秘密情報の扱いには注意が必要 Capistranoを名乗るには弱い hookもrollbackもない 最後はWordPressの制限がつらい