LoginSignup
17
25

More than 5 years have passed since last update.

GitHubでwordpress管理

Last updated at Posted at 2017-03-11

構成

スクリーンショット 2017-03-11 22.20.45.png

blog(wordpress)のデータをGitHubで管理できるように設定しました。
クライアント側の設定はいつも通りのGitHubとのremote設定。GitHub側のデプロイするリポジトリのSettingのWebhookの設定で外部サーバへデプロイする仕組みを用意します。

設定に関して

Webhooksの項目を使います

スクリーンショット 2017-01-15 15.21.31.png
設定を埋めてゆきます。

受け取りファイルの設定

受け取りのファイルを作ります。権限は実行を指定します。
公式サイトを確認しつつ、受け取りファイルを作ります。

<?php
$SECRET_KEY = 'Secretに入れた文字列';
$LOG_FILE = dirname(__FILE__).'/hook.log'; #ログを取る場所

if (! isset($_SERVER['HTTP_X_HUB_SIGNATURE'])) die();
if (! $_SERVER['HTTP_X_HUB_SIGNATURE'] === sha1($SECRET_KEY)) die();
$json_string = file_get_contents('php://input');
$payload = json_decode($json_string, true);
if (! $payload['ref']) die();

if ($payload['repository']['full_name'] === 'アカウント名/リポジトリ名' && $payload['ref'] === 'refs/heads/更新該当のブランチ') {
  shell_exec("sh deploy.sh");
  file_put_contents($LOG_FILE, date("[Y-m-d H:i:s]")." ".$_SERVER['REMOTE_ADDR']." git pulled: ".$payload['head_commit']['message']."\n", FILE_APPEND|LOCK_EX);
}else{
    file_put_contents($LOG_FILE, date("[Y-m-d H:i:s]")." invalid access:認証通っていません ".$_SERVER['REMOTE_ADDR']."----\n", FILE_APPEND|LOCK_EX);
}
?>

※上部スクリプトは
http://takemikami.com/2016/01/11/GitHubWebhookgit-pushdeploy.html
を参考にさせていただいております。ありがとうございました。

デプロイ実行の用意

受け取って、リクエストが指定したリポジトリからで、イベントとキーが一致したら、
gitコマンドを実行するシェルスクリプトを作成します。権限は受け取りファイルと同じ実行を指定します。

#!/bin/sh
cd /home/tomtomhouse/www/www.tomo.mobi/wordpress
git --git-dir=.git pull origin master

受け取りのプログラムファイルもgitコマンドを打つシェルスクリプトもファイルの権限は「実行」に設定します。
この時、SSH通信でRSA暗号のパスフレーズが必要のときは、ssh-keygenでキーを生成するときにパスフレーズの設定を無しで作ると良いです。

備考

.gitignoreはGitHubのものを使うのが良いと思います。
https://github.com/github/gitignore/blob/master/WordPress.gitignore

17
25
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
17
25