LoginSignup
25
21

More than 5 years have passed since last update.

Git を使って WordPress をサーバーにデプロイ

Last updated at Posted at 2016-12-13

よくあるデプロイの方法だといろいろセットアップが多くてハードルが高いので(一度セットアップすれば簡単ですが)、ベアリポジトリをサーバー内に立ててそこに git push したらフックを蹴っ飛ばして自動的にデプロイする方法はどうかなと思って試した。

この方法ならインフラを構築するためのプロビジョナーにあらかじめ仕込んでおいてすぐに導入できる気がする。

ベアリポジトリの作成

ウェブサーバーに以下のコマンドでベアリポジトリをつくる。

$ git init --bare --share ~/example.com.git

以上で空のベアリポジトリが出来上がる。

次に同じサーバー内の WordPress をこのベアリポジトリにコミットしてプッシュ。

$ git init
$ git remote add origin ~/example.com.git
$ git add .
$ git commit -m "first commit"
$ git push origin master

この時に .gitignore が適切じゃないと WordPress 側でファイルをアップロードした時とかにコンフリクト祭りになるので以下の URL の .gitignore をコミットしておく。

フックの作成

Git でベアリポジトリに push した後で、ドキュメントルートから自動的に pull できるようにする必要がある。

上のベアリポジトリの例では ~/example.com.git/hooks/post-update に以下のように記述する。

#!/usr/bin/env bash

cd /var/www/html
git --git-dir=.git pull origin master

このスクリプトにはブランチの名前等が引数で飛んで来るので、それを使って特定のブランチの時だけデプロイとかもできそう。

あとこの部分で CI 的なものをぶんまわすといいかも。

開発環境から pull する

たとえば別の開発環境から pull する時にそのディレクトリにすでに WordPress がある時は以下のコマンドで。

ローカル環境が VCCW の場合は以下の通り。

$ cd /var/www/html
$ git init
$ git remote add production example.com:~/example.com.git
$ git fetch production
$ git reset --hard FETCH_HEAD

あとは、以下のような感じでプラグインがデプロイされるかを確認。

$ wp plugin install jetpack
$ git add .
$ git commit -m "add jetpack"
$ git push production master

あえて remote の名前を origin ではなく、production にしているのは、origin にもっと信頼性が高いサーバー(たとえばGitHubなど)を設定して、そっちにプッシュすることを想定。

このあたりは好みで。

25
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
21