WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~

23,229 views

Published on

WordCamp Kansai 2014 登壇スライド。
コードのGit管理を前提とし、それを活かしたよりストレスフリーなデプロイメントを紹介しました。紹介したのはツール、サービス、そして最近海外では話題になりつつあるフルスタック系のツールキット。

Slide from my presentation at WordCamp Kansai 2014 (7 June 2014), titled "Considering WordPress Site Deployment - utilizing Git and Deployment Services-"

Published in: Technology

WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~

  1. 1. WordPress サイト制作における デプロイメントを考える Toru Miki (@waviaei) WordCamp Kansai 2014 ∼Git とデプロイメントサービスの活用∼ 7 June 2014
  2. 2. Contributed to:
 - WordPress Core (inline doc)
 - WordPress Japanese package
 - WordCamps as a staff / leading organizer
 - Japanese translations plugins and Codex I have shared through:
 - Blog articles
 - Book 『WordPress 逆引きデザイン辞典PLUS』 Webmaster @ テンプル大学ジャパンキャンパス Toru Miki Toru / @waviaei http://profiles.wordpress.org/Toru
  3. 3. スピーカー | WordCamp Kansai 2014
 http://2014.kansai.wordcamp.org/speakers/#wcorg-speaker-miki
  4. 4. What is Deploy / Deployment?
  5. 5. 定義
  6. 6. デプロイとは、主にネットワークを通じて提供されるWeb アプリケーションなどのシステム開発工程において、システ ムを利用可能な状態にすることである。 ! デプロイはソフトウェアのリリースやインストールも含んだ 意味の広い言葉であり、開発環境からステージング環境へシ ステムを反映させることも、ステージング環境から本番環境 へ反映させることも、「デプロイする」と表現できる。 deployとは - IT用語辞典 Weblio辞書
 http://www.weblio.jp/content/deploy
  7. 7. 「ウェブサイトをサーバーへアップロードする」
  8. 8. Work With Us — Automattic
 http://automattic.com/work-with-us/
  9. 9. Deploy という言葉は元々「配置する」「展開する」
 といった意味の英語
  10. 10. U.S. Deploys Troops in Search for Kidnapped Nigerian Girls | TIME
 http://time.com/108025/nigeria-chad-boko-haram-american-troops-obama/
  11. 11. Today s Agenda
  12. 12. 今日は主に Code Deployment の 話をします。
  13. 13. Code、つまり テーマやプラグイン、コアなどの ファイルのデプロイメントです。
  14. 14. これらのファイルは ! ! で管理できますよね?
  15. 15. 今日紹介するのは ! ! でファイル、つまりコードを管理している ことが前提のツールやサービスです。
  16. 16. Git でコードを管理している 状況を活かしつつ、 デプロイツールやサービスを活用し、 よりストレスフリーな デプロイメントに挑戦してみましょう。
  17. 17. Where should I git init ?
  18. 18. WordPress サイトのどの部分を Git の管理下におくか?
  19. 19. 特定のテーマのみ cd wp-content/themes/my-theme git init
  20. 20. 特定のプラグインのみ cd wp-content/plugins/my-plugin git init
  21. 21. サイト全体 cd path/to/wordpress git init ! touch .gitignore
  22. 22. gitignore/WordPress.gitignore
 https://github.com/github/gitignore/blob/master/WordPress.gitignore
  23. 23. WordPress のデフォルトのファイル構造 のまま git init すると こうなりますよね?
  24. 24. サイト全体
  25. 25. しかし、 Git で WordPress サイト 全体を管理するのであれば、 次のようなファイル構造のノウハウも シェアされています。
  26. 26. サイト全体 WordPress Git サブモジュール wp-content content wp-config.php 開発用・本 番用などに分ける
  27. 27. WordPress local dev tips: DB & plugins | Mark on WordPress
 http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
  28. 28. WP-Skelton
 https://github.com/markjaquith/WordPress-Skeleton
  29. 29. Code Deployment
  30. 30. コードのデプロイメントに 特化・対応しているツールやサービスは、 無料・有料を問わず、 既にいろいろあります。
  31. 31. でも、 ソフトウェア業界で用いられている ツールがほとんど。
  32. 32. 設定が難しい。 多機能。 使いこなすのが難しい。 WordPress サイトにはオーバースペック!
  33. 33. でも世界は広い! シンプルなツールやサービスもありました。 シンプルなものから多機能なものまで 主なツールやサービスを 整理してみました。
  34. 34. Fabric CI Services
 (Jenkins、
 Travis CI、など) CapistranoMina Dandelion Strano Webistrano Web Service Tool シンプル 多機能
  35. 35. Dandelion
  36. 36. 機能を限定した シンプル&お手軽な Git 連携型のデプロイツールです。
  37. 37. CI Services
 (Jenkins、
 Travis CI、など) Fabric CapistranoMina Strano Webistrano Dandelion Tool 多機能シンプル Web Service
  38. 38. Dandelion
 http://scttnlsn.github.io/dandelion/
  39. 39. 手動デプロイ Dandelion Local Repository add commit Staging Server
 (TEST) Production Server
 (LIVE)手動デプロイ ローカルリポジトリの HEADをデプロイする
  40. 40. ローカル環境にインストール Dandelion gem install dandelion gem install net-sftp 設定ファイルはYAML cd path/to/wordpress git init touch dandelion.yml
  41. 41. Dandelion adapter: ftp host: example.com username: user password: pass path: path/to/deployment passive: true ! exclude: - .gitignore - dandelion.yml dandelion.yml FTP SFTP Amazon S3 E.g. さくらのスタンダード
 (デフォルトは false) Dandelion
 http://scttnlsn.github.io/dandelion/ その他の設定可能項目には Docs や Issues を参照
  42. 42. コマンドは2つ。オプションは4つ。 Dandelion dandelion status dandelion deploy ! dandelion --repo=[REPO] --config=[CONFIG] --v --h
  43. 43. Dandelion dandelion status dandelion deploy
  44. 44. Dandelion ロールバック機能は無いが、 deploy で任意のリビジョン指定が可能。
  45. 45. ステージングへのデプロイ用 config 本番へのデプロイ用 config Dandelion 1つの YAML ファイル
 = 
 1つのデプロイ先の設定 dandelion deploy dandelion --config=live.yml deploy
  46. 46. Deploy & Dploy
  47. 47. デプロイに特化したウェブサービスを 2つ紹介します。
  48. 48. Fabric CapistranoMina Strano Webistrano CI Services
 (Jenkins、
 Travis CI、など) Dandelion Tool 多機能シンプル Web Service
  49. 49. Deploy
 https://www.deployhq.com/
  50. 50. dploy
 http://dploy.io/
  51. 51. push dploy / Deploy Local Repository Staging Server
 (TEST) Production Server
 (LIVE) 手動・自動デプロイRemote
 Repository 手動・自動デプロイ add commit
  52. 52. push Local Repository add commit Staging Server
 (TEST) Production Server
 (LIVE) 手動・自動デプロイRemote
 Repository 手動・自動デプロイ (http://dploy.io) SVN Remote
 Repository
  53. 53. push Local Repository add commit Staging Server
 (TEST) Production Server
 (LIVE) 手動・自動デプロイRemote
 Repository 手動・自動デプロイ Staging Server
 (TEST) Production Server
 (LIVE) (http://dploy.io)
  54. 54. (http://dploy.io)
  55. 55. (http://dploy.io)
  56. 56. (http://dploy.io)
  57. 57. (http://dploy.io)
  58. 58. Deploy と Dploy の2つを紹介しましたが、 同様のサービスは 他にもいろいろあります。
  59. 59. FTPLOY
 http://ftploy.com/
  60. 60. deploydo
 https://www.deploy.do/
  61. 61. wercker
 http://wercker.com/
  62. 62. Bamboo
 https://www.atlassian.com/software/bamboo/
  63. 63. など… 全て似たようなサービスですが、 仕様が若干違います。
  64. 64. Beanstalk & Codebase
  65. 65. プライベート Git リポジトリ に デプロイ機能 が付いてくるウェブサービス。
  66. 66. Fabric CapistranoMina Strano Webistrano CI Services
 (Jenkins、
 Travis CI、など) Dandelion Tool 多機能シンプル Web Service
  67. 67. Beanstalk
 http://beanstalkapp.com/+
  68. 68. Developing and Deploying WordPress  •  Beanstalk Guide
 http://guides.beanstalkapp.com/deployments/deploying-wordpress.html
  69. 69. Codebase
 http://codebasehq.com/
  70. 70. 他にも
  71. 71. Springloops
 http://www.springloops.io/
  72. 72. Assembla
 https://www.assembla.com/
  73. 73. など…
  74. 74. Code Deployment Patterns
  75. 75. 紹介したツールやサービスを、 想定できるケースに 当てはめてみます。
  76. 76. 個人ブログ、テーマのみ Local Repository Production Server
 (LIVE) Dandelion を使って、
 自作テーマやプラグインを
 手動デプロイ。 Dandelion $ cd /my-theme $ git init $ dandelion deploy
  77. 77. 個人プロジェクト Local Repository Production Server
 (LIVE) Dandelion Remote
 Repository Staging Server
 (TEST) - SFTP
 - 手動デプロイ - SFTP
 - 手動デプロイ
  78. 78. Local Repository Staging Server
 (TEST) Production Server
 (LIVE) Remote
 Repository - SFTP
 - 自動デプロイ - FTP
 - 手動デプロイ 会社で契約しているVPS クライアントが
 契約している
 レンタルサーバー チームで開発 デプロイサービス
  79. 79. Staging Server
 (TEST) Production Server
 (LIVE) - staging 用ブランチ
 - 手動・自動デプロイ - production 用ブランチ
 - 手動・自動デプロイ ブランチを作って開発 Remote
 Repository Local Repository OR
  80. 80. …という感じで、 想定されるいろいろな使い方に 適用させることが可能です。
  81. 81. Dandelion は無料のツール。 デプロイサービスの多くはフリーミアム。
  82. 82. Notes*
  83. 83. Git の管理下・管理外におくファイル デプロイする・しないファイル
  84. 84. Git で管理する Git で管理しない (.gitignore) デプロイする (その他のコアファイル) wp-config.php ? test-config.php ? デプロイしない local-config.php ? wp-config.php ? dandelion.yml ? dandelion.yml ? .htaccess? wp-config.php
  85. 85. ファイルのパーミッションと所有者
  86. 86. ファイルのパーミッションと所有者 wp-config.php の パーミッションとか chown apache chown nginx
  87. 87. 日本のレンタルサーバーは、 日本国外IPアドレスからのアクセスを 制限していることがある。
  88. 88. 国外IPアドレスフィルタ|さくらのレンタルサーバ" http://support.sakura.ad.jp/manual/rs/others/ipfilter.html 例:さくらのレンタルサーバ
  89. 89. セキュリティ・ポリシー
  90. 90. セキュリティ・ポリシー クライアントのコードをサードパー ティーのウェブサービスにアップして問題 ないか? クライアントのサーバー情報を
 サードパーティのウェブサービスに設定して問題 ないか? 情報セキュリティマネジメントシステム ISO 27001 プライバシーマーク
  91. 91. Contents Deployment
  92. 92. 「これっ!」 と言った決め手がありません。
  93. 93. Scripts
  94. 94. Scripts URLを適切に置換してくれるスクリプト等と
 組み合わせる。 mysqldump -u user -ppass wp_db > db.sql ! scp rsync
  95. 95. WordPress のDB上のサイトURLを一気に変換
 http://dogmap.jp/2012/09/20/wordpress-replace-siteurl/ https://gist.github.com/wokamoto/3627972
  96. 96. WordPress Serialized PHP Search Replace Tool
 https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
  97. 97. WP-CLI
  98. 98. WP-CLI
 http://wp-cli.org/commands/db/ http://wp-cli.org/commands/search-replace/ wp db export wp db import ! wp search-replace 'http://local.dev' 'http://mysite.com' WP-CLIの機能を使う
  99. 99. Plugins
  100. 100. Contents deployment プラグインはあまり無い。 + 結構いいお値段…
  101. 101. WP Migrate DB
 http://wordpress.org/plugins/wp-migrate-db/
  102. 102. WP Migrate DB Pro
 https://deliciousbrains.com/wp-migrate-db-pro/
  103. 103. WP Migrate DB Pro
 https://deliciousbrains.com/wp-migrate-db-pro/pricing/ https://deliciousbrains.com/wp-migrate-db-pro/videos/
  104. 104. Ramp
 http://crowdfavorite.com/ramp/
  105. 105. 機能を「同期」ではなく、 サーバーからサーバーへの 「引っ越し」に絞ると、 便利なプラグインが幾つかあります。
  106. 106. WordPress Duplicator
 http://wordpress.org/plugins/duplicator/
  107. 107. 公開時は引っ越しプラグインを用いて Code と Contents をデプロイ。 ! 公開後は必要時にのみ、 Contents を同期する。 (簡単なバグ修正であれば同期せずに行う。)
  108. 108. More Advanced Deployment Tools
  109. 109. Capistrano Ruby Mina PHP Fabric Python WordPress 界隈で よく目にする この中では比較的シンプル… Capistrano ほど多機能では…
  110. 110. An Introduction To Deploying WordPress with Mina - Tuts
 http://code.tutsplus.com/articles/an-introduction-to-deploying-wordpress-with-mina--wp-34776
  111. 111. https://twitter.com/tekapo/status/465656275418619905 http://wp.tekapo.com/2014/03/01/help-me-out-to-translate-fabric-docs/
  112. 112. Towards a Full Stack WordPress Development Tool
  113. 113. 最後に、Git を前提としたファイル構造の デプロイメントの話から さらに大きい枠の話をします。
  114. 114. Git based WordPress setup WP-Skelton Git + WordPress
  115. 115. WP-Stack
 https://github.com/markjaquith/WP-Stack
  116. 116. Git based WordPress setup WP-Skelton Git + WordPress Toolkit for WordPress Deployment WP-Stack + Code Deployment
  117. 117. wp-deploy
 https://github.com/Mixd/wp-deploy
  118. 118. Git based WordPress setup WP-Skelton Git + WordPress Toolkit for WordPress Deployment WP-Stack + Code Deployment Framework for deploying WP site using Capistrano 3 wp-deploy + Contents Deployment
  119. 119. Genesis Skelton
 https://github.com/genesis/wordpress
  120. 120. Bedrock
 http://roots.io/wordpress-stack/
  121. 121. Git based WordPress setup WP-Skelton Git + WordPress Toolkit for WordPress Deployment WP-Stack + Code Deployment Framework for deploying WP site using Capistrano 3 we-deploy + Contents Deployment Rapidly create, develop & deploy WP across multi environment Genesis Skelton + Local Dev Environment WordPress Stack Bedrock
  122. 122. PHPUnit Test Staging Server
 (TEST) Production Server
 (LIVE) Remote
 Repository PHPUnit Testing & Automation Local Repository 自動デプロイ push
  123. 123. + Continuous Integration (CI)
 Services Jenkins Travis CI PHPUnit Test Staging Server
 (TEST) Production Server
 (LIVE) Remote
 Repository PHPUnit Testing & Automation Local Repository 自動デプロイ pull request
  124. 124. BuddyPress + Grunt + Travis CI BuddyPress Development Trunk to Adopt a Grunt-Powered Build System
 http://wptavern.com/buddypress-development-trunk-to-adopt-a-grunt-powered-build-system
  125. 125. ちなみに、 Git 管理を活かしたデプロイメント ではありませんが、 こういうのもあります…
  126. 126. Managed WordPress 
 Hosting
  127. 127. いま海外で勢いがある WordPress 専用ホスティングサーバー。 ! 無料でステージング環境を提供し、 アピールポイントにしている サーバーもあります。
  128. 128. Media Temple WordPress Hosting
 http://mediatemple.net/webhosting/wordpress/
  129. 129. プロダクションサーバーへは1クリックで ファイルとDBをデプロイ。済んだら削除。 Media Temple WordPress Managed Hosting Reviewed : WP Mayor
 http://www.wpmayor.com/media-temple-wordpress-managed-hosting-reviewed/
  130. 130. 他にも…
  131. 131. WP Engine
 http://wpengine.com/
  132. 132. Flywheel
 http://getflywheel.com/
  133. 133. ホスティングサーバーに デプロイメント機能もお任せする … プロジェクトによっては、 最良の選択肢かもしれません。
  134. 134. Message
  135. 135. 何はともあれ Ⅰ.
  136. 136. よりストレスフリーなデプロイメントを目指して、 デプロイメントのツールやサービスを使ってみよう。 (車輪の再発明はしない) Ⅱ.
  137. 137. Ⅲ. Full Stack 方向を意識しつつ、 情報のアンテナを張り、 手を動かしてみる。
  138. 138. Ⅲ. Full Stack 方向を意識しつつ、 情報のアンテナを張り、 手を動かしてみる。 使わなくても、難しくても、 手を動かしておくことで、 理解が深まる、 頭の片隅に記憶しておける!
  139. 139. Thank you! http://waviaei.com! @waviaei! waviaei@gmail.com! http://b.hatena.ne.jp/waviaei/wordpress/ That’s All…
  140. 140. Photo by Takeshi Kouno https://www.flickr.com/photos/kounotakeshi/13460591725/ https://www.flickr.com/photos/dvids/6093692164p9 p1 cropped & resized Photo by DVIDSHUB cropped & resized Photo Credits

×