Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automate WordPress deployment with WordMove

wtnabe
August 20, 2016

Automate WordPress deployment with WordMove

WordMoveでWordPressサイトの自動deployができるよ。注意点と応用の話も。

wtnabe

August 20, 2016
Tweet

More Decks by wtnabe

Other Decks in Programming

Transcript

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

    View full-size slide

  2. ⾃⼰紹介
    (ry

    View full-size slide

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

    View full-size slide

  4. 悲しみのWordPress

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. FTP support is planned to be discontinued

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. WordMove利⽤上の注意

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. CIからthemesだけdeploy

    View full-size slide

  25. bundle installが必要

    View full-size slide

  26. deployスクリプトが必要

    View full-size slide

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

    View full-size slide

  28. wordmove push -t -e #{env}

    View full-size slide

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

    View full-size slide

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

    View full-size slide