Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Git とWordPress の運用
WordBench 埼玉 #2
• 就職できずにニートとなりやさぐれる
• Web の勉強を始め
• 現在フリーで制作の仕事
• 共著ブログ EXP
• WordCamp Tokyo 2014 Web制作班班長
Profile
WordBench Saitama 2015
#01 Virtual machine
#02 Git→
Table of Contents
• Git 管理パターン
⁃ テーマ
⁃ コア
⁃ おまけ
• Git とデプロイ
• サイト運用
バージョン管理
• 事故らない
• 事故っても大丈夫
• チームで制作可能
• 効率化
• リモートリポジトリがバックアップに
WordPress サイトであっても
そうでなくても
利点は同じ
登場するのはコマンドラインが多め
• どんなデバイスからでも同じ
• コマンド名で機能が分かる
• ツールが豊富
• 別のコマンドと合わせて自動化が可能
Git 管理のパターン:テーマ
WordPress のサイト開発で
使ったことのあるパターンを紹介
Git 管理のパターン:テーマ
wordpress/wp-content/themes/theme/
wordpress/wp-content/themes/theme/.git
wordpress/wp-content/themes/them...
Git 管理のパターン:テーマ
.gitignore 例
*.diff
*.err
*.orig
*.log
*.rej
*.swo
*.swp
*.zip
*.vi
*~
*.sass-cache
*.seed
*.csv
*.dat
*.o...
Git 管理のパターン:テーマ
メリット
• お手軽
• 管理が簡単
• 運営も簡単
• パブリックに公開し易い
デメリット
• コア等ロールバック時の手間
• プラグインを戻す時も同様
• コアやプラグインが環境毎にずれる
• チーム間でもバ...
• .gitignore とかよく分からない時
• 個人で開発
• 運用時の保守が不要な時
• WordMove が使えない時
使い所
Git 管理のパターン:テーマ
Git 管理のパターン:コア
wordpress/
wordpress/.git
wordpress/.gitignore
WordPress コアをまるごと管理するパターン
*.log
.htaccess
sitemap.xml
sitemap.xml.gz
wp-config.php
wp-content/advanced-cache.php
wp-content/backup-db/
wp-content/ba...
https://www.gitignore.io/
環境毎に内容を分ける為
DB 情報を持つ `wp-config.php`
- ローカル
- ステージ
- 本環境
- ローカル
- ステージ
- 本環境
或いは php にてホストから DB 情報を切り替える
WordPress の場合 wp-c...
アップローダのデータ `wp-content/uploads`
• ビットマップデータが殆ど
• Git で管理するのは…
• .git の肥満化
• 運用フェーズではコミットの手間
Git 管理のパターン:コア
Git 管理のパターン:コア
メリット
• コアのバージョンが一致
• プラグインが一致
• ロールバックが容易
• デプロイ時の安心感
デメリット
• 実環境 → 開発環境 が難しい
• .gitignore をよく考えないと
• 階層がちょ...
• 複数人で開発
• 運用時の保守も想定
• 長期継続的な開発
• ポピュラーなので基本これで
使い所
Git 管理のパターン:コア
Git 管理のパターン:おまけ
e
vccw
vccw/.git
vccw/.gitignore
vccw 等マシンまで含めて管理するパターン
.vagrant/
**/wp-content/local-*.sqlコアのパターン +
.gitignore 例
Git 管理のパターン:おまけ
Git 管理のパターン:おまけ
メリット
• Vagrantfile/site.yml
• Movefile
• ホスト名
• 全て一致/設定の手間が減る
デメリット
• 好きな環境を使えない
• 深すぎるディレクトリの階層
Git 管理のパターン:おまけ
• チーム全員が Vagrant マシン起こせなくとも
• 少数精鋭、皆が同じ Movefile でデプロイ可能
• BrowserSync 使うときのIP/ホスト名解決が楽
Git とデプロイ
• 開発 → テスト → プレビュー → リリース
• 既存サイトを公開している場合などデプロイが複数回
• Git のコミットと合わせたい
Git とデプロイ
Gitflow とか GitHub Flow と組み合わせて
↓
リリース毎にデプロイ
それもなるべく自動化して楽したい
Git とデプロイ
因みに
デプロイ = 展開
Git とデプロイ
• FTP
• git hook + script
• WordMove
• デプロイサービス
• rsync
• scp
• git-ftp
• git-deploy
Git とデプロイ:Git Hooks
• 初期設定がちょっと手間
• 長期的な運用では便利
• Jenkins と組み合わせ
http://ja.katzueno.com/2015/01/3390/
https://github.com/markomarkovic/simple-php-git-deploy
https://github.com/lkwdwrd/git-deploy
https://jenkins-ci.org/
すみません試してないです
Git とデプロイ:Git Hooks
因みに
サーバの公開ディレクトリで
t clone $ git clone
git pull $ git pull
して
は手動でもスクリプトでも NG!!
Git とデプロイ:Git Hooks
.git ディレクトリにアクセス可能な状態は
ソースコードなど見られる危険性
git pull によって発生する merge が
意図しない結果を生む可能性も
http://grimoire.ca/git...
Git とデプロイ:Git Hooks
#!/bin/bash
unset GIT_INDEX_FILE
git --work-tree=/var/www/html --git-dir=/home/demo/proj/.git checkout...
Git とデプロイ:サービス
• 基本は前項と一緒
• 確実に便利で楽
• 料金が掛かる場合も
http://dploy.io/
http://dploy.io/
https://www.deployhq.com/
http://beanstalkapp.com/
https://www.heroku.com/
私が参加している共著ブログ EXP
CPI サーバなので、現時点では ssh からデプロイが出来ない
GitHub + dploy + FTP
で自動デプロイ
SSH 使えるサーバならそっちを使いたい
↓
FTP だと単純に遅い
+
Git コマンドならリリースタグで
デプロイするバージョンのコントロールがし易い
しかし…
WordPress サイトの自動デプロイは
サーバ側でのコアやプラグインアップデートがネック
Git で管理しつつ
もっと臨機応変にアップデートや
運営をしたいそんな時
https://github.com/welaika/wordmove
Git とデプロイ:WordMove
• WordPress 専用デプロイツール
• RubyGems
• ローカルとリモートを双方向で同期可能
• データベースの同期
• データベースバックアップ & ドメイン書き換え
Git とデプロイ:WordMove
WordBench なので
WordMove を中心に紹介
Git とデプロイ:WordMove
WordMove は
git と関係無いものの
Git とデプロイ:WordMove
WordPress 環境を完全に同期する
便利さと危険性から
Git との併用が必須
Git とデプロイ:WordMove
• WordPress コア
• uploads ディレクトリ
• plugins ディレクトリ
• themes ディレクトリ
• データベース
• 上記全て
それぞれ
リモート → ローカル
ローカル ...
Git とデプロイ:WordMove
$ wordmove help
$ wordmove help push
$ wordmove help pull
必要なコマンドとオプションは
で確認
Git とデプロイ:WordMove
サクッとデモを
Git とデプロイ:WordMove
設定ファイルは Movefile (YAML)
• インデントが重要 (2スペース)
• local の項目は vccw であれば自動設定済み
• staging の database と ssh or ft...
Git とデプロイ:運用
git で管理したコアどプラグインのバージョン
ローカルからしかアップデートできないの?
Git に含めていない uplaods はどうしよう?
Git とデプロイ:運用
プラグインやコアを
実環境でアップデートした場合
$ wordmove pull -w
$ wordmove pull -p
$ git commit -m ‘bla bla bal’
Git とデプロイ:運用
特定のプラグインのみ
アップデートを取り消しローカルを残したい時
pull の後
$ git checkout **/plugins/plugin_name
$ git commit -m ‘bla bla bla’
...
Git とデプロイ:運用
リモートの uploads を
ローカルとステージングに
$ wordmove pull -u -e production
$ git commit -m ‘bla bla bla’
$ wordmove push -...
Git とデプロイ:運用
リモートの uploads と
ローカルの uploads をマージしたい
WordMove では不十分なので
rsync を併用 (Mac, Linux)
Git とデプロイ:運用
$ rsync [option] source dest
例えば
$ rsync ec2-user@0.0.0.0:/…/wp-content/uploads/ uploads
でリモート → ローカルへの同期が可能
...
Git とデプロイ:運用
因みに
WordMove も ssh 接続の際は
rsync の --delete オプション
を使って同期を行っている
Git とデプロイ:運用
頻繁に行う場合
Shell Script 書いておくと便利
サーバが SSH 対応していない…
↓
面倒だけど Transmit とか FTP クライアントでマージかな
Git とデプロイ:運用
運用フェーズに入った場合
DB は基本的に
実環境 → ローカル
ローカル → ステージング
例えば
$ wordmove pull -d -e production
$ wordmove push -d -e sta...
https://github.com/interconnectit/Search-Replace-DB
Git とデプロイ:運用
WordMove の DB 同期がうまくいかない時
WordMove 使えない時は
DB 管理ツール + Search-Replace-DB
https://github.com/welaika/wordmove/is...
Git とデプロイ:運用
リモート ローカルで普通に便利
WordPress に対応していて
wp-confing.php を見つけてくれる
※危険なのでサーバ側はアクセス制限
若しくは書き換え後に必ず削除
まとめ
• WordPress はコアごと Git で管理がおすすめ
• WordMove でデプロイ
• 運用時にも WordMove が活躍
• uploads など rsync で補う
2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress
2015.04.19 WordBench 埼玉 Git & WordPress
Upcoming SlideShare
Loading in …5
×

2015.04.19 WordBench 埼玉 Git & WordPress

1,205 views

Published on

WordBenc 埼玉 2015 #02 Git と WordPress 運用で使用した資料です。

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

2015.04.19 WordBench 埼玉 Git & WordPress

  1. 1. Git とWordPress の運用 WordBench 埼玉 #2
  2. 2. • 就職できずにニートとなりやさぐれる • Web の勉強を始め • 現在フリーで制作の仕事 • 共著ブログ EXP • WordCamp Tokyo 2014 Web制作班班長 Profile
  3. 3. WordBench Saitama 2015 #01 Virtual machine #02 Git→
  4. 4. Table of Contents • Git 管理パターン ⁃ テーマ ⁃ コア ⁃ おまけ • Git とデプロイ • サイト運用
  5. 5. バージョン管理 • 事故らない • 事故っても大丈夫 • チームで制作可能 • 効率化 • リモートリポジトリがバックアップに
  6. 6. WordPress サイトであっても そうでなくても 利点は同じ
  7. 7. 登場するのはコマンドラインが多め • どんなデバイスからでも同じ • コマンド名で機能が分かる • ツールが豊富 • 別のコマンドと合わせて自動化が可能
  8. 8. Git 管理のパターン:テーマ WordPress のサイト開発で 使ったことのあるパターンを紹介
  9. 9. Git 管理のパターン:テーマ wordpress/wp-content/themes/theme/ wordpress/wp-content/themes/theme/.git wordpress/wp-content/themes/theme/.gitignore テーマディレクトリだけを管理するパターン
  10. 10. Git 管理のパターン:テーマ .gitignore 例 *.diff *.err *.orig *.log *.rej *.swo *.swp *.zip *.vi *~ *.sass-cache *.seed *.csv *.dat *.out *.pid *.gz よくある拡張子 .DS_Store ._* Thumbs.db .cache .project .settings .tmproj .esproj nbproject .sublime-project .sublime-workspace .csscomb.json 環境依存ファイル .hg .svn .CVS .idea .ssh .grunt node_modules dist lib-cov lcov.info pids logs results build よくあるフォルダ
  11. 11. Git 管理のパターン:テーマ メリット • お手軽 • 管理が簡単 • 運営も簡単 • パブリックに公開し易い デメリット • コア等ロールバック時の手間 • プラグインを戻す時も同様 • コアやプラグインが環境毎にずれる • チーム間でもバラバラ
  12. 12. • .gitignore とかよく分からない時 • 個人で開発 • 運用時の保守が不要な時 • WordMove が使えない時 使い所 Git 管理のパターン:テーマ
  13. 13. Git 管理のパターン:コア wordpress/ wordpress/.git wordpress/.gitignore WordPress コアをまるごと管理するパターン
  14. 14. *.log .htaccess sitemap.xml sitemap.xml.gz wp-config.php wp-content/advanced-cache.php wp-content/backup-db/ wp-content/backups/ wp-content/blogs.dir/ wp-content/cache/ wp-content/upgrade/ wp-content/uploads/ wp-content/wp-cache-config.php テーマのパターン + .gitignore 例 Git 管理のパターン:コア
  15. 15. https://www.gitignore.io/
  16. 16. 環境毎に内容を分ける為 DB 情報を持つ `wp-config.php` - ローカル - ステージ - 本環境 - ローカル - ステージ - 本環境 或いは php にてホストから DB 情報を切り替える WordPress の場合 wp-config.php は自動生成なので 前者のほうが多い印象 キャッシュの設定を wp-config.php に書き出すプラグインもあるので 迷ったらファイルを分けておけば OK Git 管理のパターン:コア
  17. 17. アップローダのデータ `wp-content/uploads` • ビットマップデータが殆ど • Git で管理するのは… • .git の肥満化 • 運用フェーズではコミットの手間 Git 管理のパターン:コア
  18. 18. Git 管理のパターン:コア メリット • コアのバージョンが一致 • プラグインが一致 • ロールバックが容易 • デプロイ時の安心感 デメリット • 実環境 → 開発環境 が難しい • .gitignore をよく考えないと • 階層がちょっと深い
  19. 19. • 複数人で開発 • 運用時の保守も想定 • 長期継続的な開発 • ポピュラーなので基本これで 使い所 Git 管理のパターン:コア
  20. 20. Git 管理のパターン:おまけ e vccw vccw/.git vccw/.gitignore vccw 等マシンまで含めて管理するパターン
  21. 21. .vagrant/ **/wp-content/local-*.sqlコアのパターン + .gitignore 例 Git 管理のパターン:おまけ
  22. 22. Git 管理のパターン:おまけ メリット • Vagrantfile/site.yml • Movefile • ホスト名 • 全て一致/設定の手間が減る デメリット • 好きな環境を使えない • 深すぎるディレクトリの階層
  23. 23. Git 管理のパターン:おまけ • チーム全員が Vagrant マシン起こせなくとも • 少数精鋭、皆が同じ Movefile でデプロイ可能 • BrowserSync 使うときのIP/ホスト名解決が楽
  24. 24. Git とデプロイ • 開発 → テスト → プレビュー → リリース • 既存サイトを公開している場合などデプロイが複数回 • Git のコミットと合わせたい
  25. 25. Git とデプロイ Gitflow とか GitHub Flow と組み合わせて ↓ リリース毎にデプロイ それもなるべく自動化して楽したい
  26. 26. Git とデプロイ 因みに デプロイ = 展開
  27. 27. Git とデプロイ • FTP • git hook + script • WordMove • デプロイサービス • rsync • scp • git-ftp • git-deploy
  28. 28. Git とデプロイ:Git Hooks • 初期設定がちょっと手間 • 長期的な運用では便利 • Jenkins と組み合わせ
  29. 29. http://ja.katzueno.com/2015/01/3390/
  30. 30. https://github.com/markomarkovic/simple-php-git-deploy
  31. 31. https://github.com/lkwdwrd/git-deploy
  32. 32. https://jenkins-ci.org/
  33. 33. すみません試してないです
  34. 34. Git とデプロイ:Git Hooks 因みに サーバの公開ディレクトリで t clone $ git clone git pull $ git pull して は手動でもスクリプトでも NG!!
  35. 35. Git とデプロイ:Git Hooks .git ディレクトリにアクセス可能な状態は ソースコードなど見られる危険性 git pull によって発生する merge が 意図しない結果を生む可能性も http://grimoire.ca/git/stop-using-git-pull-to-deploy
  36. 36. Git とデプロイ:Git Hooks #!/bin/bash unset GIT_INDEX_FILE git --work-tree=/var/www/html --git-dir=/home/demo/proj/.git checkout -f とかこんな感じで、.git を公開ディレクトリから切り離し merge の発生しない方法でツリーを展開
  37. 37. Git とデプロイ:サービス • 基本は前項と一緒 • 確実に便利で楽 • 料金が掛かる場合も
  38. 38. http://dploy.io/
  39. 39. http://dploy.io/
  40. 40. https://www.deployhq.com/
  41. 41. http://beanstalkapp.com/
  42. 42. https://www.heroku.com/
  43. 43. 私が参加している共著ブログ EXP
  44. 44. CPI サーバなので、現時点では ssh からデプロイが出来ない GitHub + dploy + FTP で自動デプロイ
  45. 45. SSH 使えるサーバならそっちを使いたい ↓ FTP だと単純に遅い + Git コマンドならリリースタグで デプロイするバージョンのコントロールがし易い
  46. 46. しかし… WordPress サイトの自動デプロイは サーバ側でのコアやプラグインアップデートがネック
  47. 47. Git で管理しつつ もっと臨機応変にアップデートや 運営をしたいそんな時
  48. 48. https://github.com/welaika/wordmove
  49. 49. Git とデプロイ:WordMove • WordPress 専用デプロイツール • RubyGems • ローカルとリモートを双方向で同期可能 • データベースの同期 • データベースバックアップ & ドメイン書き換え
  50. 50. Git とデプロイ:WordMove WordBench なので WordMove を中心に紹介
  51. 51. Git とデプロイ:WordMove WordMove は git と関係無いものの
  52. 52. Git とデプロイ:WordMove WordPress 環境を完全に同期する 便利さと危険性から Git との併用が必須
  53. 53. Git とデプロイ:WordMove • WordPress コア • uploads ディレクトリ • plugins ディレクトリ • themes ディレクトリ • データベース • 上記全て それぞれ リモート → ローカル ローカル → リモート
  54. 54. Git とデプロイ:WordMove $ wordmove help $ wordmove help push $ wordmove help pull 必要なコマンドとオプションは で確認
  55. 55. Git とデプロイ:WordMove サクッとデモを
  56. 56. Git とデプロイ:WordMove 設定ファイルは Movefile (YAML) • インデントが重要 (2スペース) • local の項目は vccw であれば自動設定済み • staging の database と ssh or ftp の項目を入力すれば OK
  57. 57. Git とデプロイ:運用 git で管理したコアどプラグインのバージョン ローカルからしかアップデートできないの? Git に含めていない uplaods はどうしよう?
  58. 58. Git とデプロイ:運用 プラグインやコアを 実環境でアップデートした場合 $ wordmove pull -w $ wordmove pull -p $ git commit -m ‘bla bla bal’
  59. 59. Git とデプロイ:運用 特定のプラグインのみ アップデートを取り消しローカルを残したい時 pull の後 $ git checkout **/plugins/plugin_name $ git commit -m ‘bla bla bla’ $ wordmove push -p
  60. 60. Git とデプロイ:運用 リモートの uploads を ローカルとステージングに $ wordmove pull -u -e production $ git commit -m ‘bla bla bla’ $ wordmove push -u -e staging
  61. 61. Git とデプロイ:運用 リモートの uploads と ローカルの uploads をマージしたい WordMove では不十分なので rsync を併用 (Mac, Linux)
  62. 62. Git とデプロイ:運用 $ rsync [option] source dest 例えば $ rsync ec2-user@0.0.0.0:/…/wp-content/uploads/ uploads でリモート → ローカルへの同期が可能 同じファイル名が存在した場合はリモートが優先される
  63. 63. Git とデプロイ:運用 因みに WordMove も ssh 接続の際は rsync の --delete オプション を使って同期を行っている
  64. 64. Git とデプロイ:運用 頻繁に行う場合 Shell Script 書いておくと便利 サーバが SSH 対応していない… ↓ 面倒だけど Transmit とか FTP クライアントでマージかな
  65. 65. Git とデプロイ:運用 運用フェーズに入った場合 DB は基本的に 実環境 → ローカル ローカル → ステージング 例えば $ wordmove pull -d -e production $ wordmove push -d -e staging
  66. 66. https://github.com/interconnectit/Search-Replace-DB
  67. 67. Git とデプロイ:運用 WordMove の DB 同期がうまくいかない時 WordMove 使えない時は DB 管理ツール + Search-Replace-DB https://github.com/welaika/wordmove/issues/78#issuecomment-55882636
  68. 68. Git とデプロイ:運用 リモート ローカルで普通に便利 WordPress に対応していて wp-confing.php を見つけてくれる ※危険なのでサーバ側はアクセス制限 若しくは書き換え後に必ず削除
  69. 69. まとめ • WordPress はコアごと Git で管理がおすすめ • WordMove でデプロイ • 運用時にも WordMove が活躍 • uploads など rsync で補う

×