SlideShare a Scribd company logo
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 サイトであっても
そうでなくても
利点は同じ
2015.04.19 WordBench 埼玉 Git & WordPress
登場するのはコマンドラインが多め
• どんなデバイスからでも同じ
• コマンド名で機能が分かる
• ツールが豊富
• 別のコマンドと合わせて自動化が可能
Git 管理のパターン:テーマ
WordPress のサイト開発で
使ったことのあるパターンを紹介
Git 管理のパターン:テーマ
wordpress/wp-content/themes/theme/
wordpress/wp-content/themes/theme/.git
wordpress/wp-content/themes/theme/.gitignore
テーマディレクトリだけを管理するパターン
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
よくあるフォルダ
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/backups/
wp-content/blogs.dir/
wp-content/cache/
wp-content/upgrade/
wp-content/uploads/
wp-content/wp-cache-config.php
テーマのパターン +
.gitignore 例
Git 管理のパターン:コア
https://www.gitignore.io/
環境毎に内容を分ける為
DB 情報を持つ `wp-config.php`
- ローカル
- ステージ
- 本環境
- ローカル
- ステージ
- 本環境
或いは php にてホストから DB 情報を切り替える
WordPress の場合 wp-config.php は自動生成なので
前者のほうが多い印象
キャッシュの設定を wp-config.php に書き出すプラグインもあるので
迷ったらファイルを分けておけば OK
Git 管理のパターン:コア
アップローダのデータ `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/stop-using-git-pull-to-deploy
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 の発生しない方法でツリーを展開
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 を中心に紹介
2015.04.19 WordBench 埼玉 Git & WordPress
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 ftp の項目を入力すれば OK
2015.04.19 WordBench 埼玉 Git & WordPress
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’
$ wordmove push -p
Git とデプロイ:運用
リモートの uploads を
ローカルとステージングに
$ wordmove pull -u -e production
$ git commit -m ‘bla bla bla’
$ wordmove push -u -e staging
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 staging
https://github.com/interconnectit/Search-Replace-DB
Git とデプロイ:運用
WordMove の DB 同期がうまくいかない時
WordMove 使えない時は
DB 管理ツール + Search-Replace-DB
https://github.com/welaika/wordmove/issues/78#issuecomment-55882636
2015.04.19 WordBench 埼玉 Git & WordPress
Git とデプロイ:運用
リモート ローカルで普通に便利
WordPress に対応していて
wp-confing.php を見つけてくれる
※危険なのでサーバ側はアクセス制限
若しくは書き換え後に必ず削除
まとめ
• WordPress はコアごと Git で管理がおすすめ
• WordMove でデプロイ
• 運用時にも WordMove が活躍
• uploads など rsync で補う

More Related Content

PPTX
やさしいGitの内部構造 - yapcasia2013
PDF
はじめてのGit forデザイナー&コーダー
PDF
GoによるWebアプリ開発のキホン
KEY
一人でもはじめるGitでバージョン管理
PDF
WordPressサイトのバージョン管理
PDF
WindowsでGitを使う際のベストプラクティス
PDF
デザイナのためのGit入門
PDF
いつやるの?Git入門 v1.1.0
やさしいGitの内部構造 - yapcasia2013
はじめてのGit forデザイナー&コーダー
GoによるWebアプリ開発のキホン
一人でもはじめるGitでバージョン管理
WordPressサイトのバージョン管理
WindowsでGitを使う際のベストプラクティス
デザイナのためのGit入門
いつやるの?Git入門 v1.1.0

What's hot (20)

PDF
Git勉強会
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
PDF
Wordbench fukuoka
ODP
HTML5 アプリ開発
PDF
プラグイン公開までの道のり
PDF
バージョン管理システム比較資料
PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
ODP
今流行りのウェブアプリ開発環境Yeoman
PPT
BuddyPressで街のポータルサイトを作ろう
PDF
GitHubで学ぶバージョン管理
PDF
Go言語でBot開発やってみた
PDF
Vue.js with Go
PDF
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
PDF
Wp プラグインapiから理解するword press.share
PPTX
Git勉強会
PDF
Metahub for github
ODP
HTML5 開発環境の紹介
KEY
WordPressプラグイン Jetpack って何だ?!
PDF
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
PDF
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
Git勉強会
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Wordbench fukuoka
HTML5 アプリ開発
プラグイン公開までの道のり
バージョン管理システム比較資料
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
今流行りのウェブアプリ開発環境Yeoman
BuddyPressで街のポータルサイトを作ろう
GitHubで学ぶバージョン管理
Go言語でBot開発やってみた
Vue.js with Go
Gitライフをはじめましょう〜GUIツールで簡単運用 Mac編〜
Wp プラグインapiから理解するword press.share
Git勉強会
Metahub for github
HTML5 開発環境の紹介
WordPressプラグイン Jetpack って何だ?!
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
Ad

Similar to 2015.04.19 WordBench 埼玉 Git & WordPress (20)

PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
PDF
Word bench7月号
KEY
【アジャイル道場】Git運用勉強会
PDF
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
PDF
WordPress CI/CD 入門 ~ GitHub Actions と AWS CodePipeline で実現する自動デプロイ~
KEY
Git運用
PDF
Gitとローカル環境
PDF
猫にはわからないGit講座
PDF
Git&GitHub入門
PDF
ノンプログラマのGit入門
PDF
Git -分散バージョン管理システム-
KEY
Git tutorial
PDF
ゆるふわっGit入門
KEY
Yapc2012資料
PDF
Gitのよく使うコマンド
PPTX
いいこんぶGitマニュアル
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
KEY
P4p20120408
PDF
Gitの使い方
PDF
Version Control System Tutorial バージョン管理システムチュートリアル
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Word bench7月号
【アジャイル道場】Git運用勉強会
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress CI/CD 入門 ~ GitHub Actions と AWS CodePipeline で実現する自動デプロイ~
Git運用
Gitとローカル環境
猫にはわからないGit講座
Git&GitHub入門
ノンプログラマのGit入門
Git -分散バージョン管理システム-
Git tutorial
ゆるふわっGit入門
Yapc2012資料
Gitのよく使うコマンド
いいこんぶGitマニュアル
Gitと出会って人生変わった テックヒルズ2013-03-22
P4p20120408
Gitの使い方
Version Control System Tutorial バージョン管理システムチュートリアル
Ad

2015.04.19 WordBench 埼玉 Git & WordPress