前回Docker+gitで良い感じのwordpress開発環境ができましたが、本番への反映はscpなりsftpなりでファイル転送する必要がありました。

いちいち転送ソフト立ち上げるのもめんどくさいし、転送忘れとかもありそうです。

てことで、ローカル(Mac)で編集した内容をgit pushでwordpress本番サーバ(VPS)に反映させるようにします。

前提条件

~/.ssh/configでホスト名のみでサーバにsshアクセスできるようにしとく。例ではhost.name

リモートレポジトリ (originになるヤツ)

サーバで作業します。

1
2
3
4
~$ mkdir -p ~/repos/wordpress.git
~$ cd ~/repos/wordpress.git
~/repos/wordpress.git$ git init --bare --shared
Initialized empty shared Git repository in /path/to/repos/wordpress.git/

ローカル

ローカルはgit init 済み。gitignore作成済み、commit済みとして、、、

originを追加してpush

1
2
Mac ~/src/wordpress$ git remote add origin host.name:~/repos/wordpress.git
Mac ~/src/wordpress$ git push origin master

本番フォルダのgit化

すでに在るフォルダにgit cloneすることはできないので、一旦別のところにクローンして、上書きコピーします。

危険な作業になるんで、バックアップを取っておくことをお勧めします。

一時的な作業フォルダを作る

1
2
cd ~/temp/
git clone ~/repos/wordpress.git

本番フォルダに作業ディレクトリをコピー

1
2
3
$ cd /path/to/wordpress
/path/to/wordpress$ cp -r ~/temp/wordpress/. .
/path/to/wordpress$ git pull

git hooksの作成

適当なエディタでpost-receiveを作成します。

1
2
$ nano ~/repos/wordpress.git/hooks/post-receive
$ chmod +x ~/repos/wordpress.git/hooks/post-receive

内容は3行

1
2
3
#!/bin/sh
cd /path/to/wordpress
git --git-dir=.git pull

動作テスト

Macで適当なソースをいじって見て

commit->push

本番環境が更新されてればOK。

git pushでdeploy快適です。

まぁ、style.cssぐらいしかいじらないんですけどね。