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 Slide

  2. ⾃⼰紹介
    (ry

    View Slide

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

    View Slide

  4. 悲しみのWordPress

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. WordMove

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. FTP support is planned to be discontinued

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. WordMove利⽤上の注意

    View Slide

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

    View Slide

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

    View Slide

  25. 応⽤

    View Slide

  26. CIからthemesだけdeploy

    View Slide

  27. bundle installが必要

    View Slide

  28. deployスクリプトが必要

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. まとめ

    View Slide

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

    View Slide