Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

よくあるデプロイの方法だといろいろセットアップが多くてハードルが高いので(一度セットアップすれば簡単ですが)、ベアリポジトリをサーバー内に立ててそこに 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 をコミットしておく。

https://github.com/github/gitignore/blob/master/WordPress.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など)を設定して、そっちにプッシュすることを想定。

このあたりは好みで。

miya0001
Geolonia という会社で地図を作ってます。以前は WordPress の WP-CLI のコミッターをしたりしてました。
https://blog.geolonia.com/
tilecloud
地図専用クラウドサービスを提供するスタートアップ
https://geolonia.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした