nulil

gitのhookを使ってサイトをデプロイするために、apacheでgit pullさせるようにしたのでメモ。 OSはCent。

GitHubにpushがあったら,自動でpullする環境(on Plesk)のメモ ::ハブろぐを参考にさせて頂き、リポジトリをapacheの管理下に置く形でやってみて、”一時的に通常ユーザからapache名目で操作できるように変更”までは問題なく進みましたが、その後ハマったので…

* 参考サイト ** GitHubにpushがあったら,自動でpullする環境(on Plesk)のメモ ::ハブろぐ ** git-config(1) Manual Page ** ブログ Apache+PHPで環境変数を追加したい ** Linux ユーザ情報の変更 - usermod ** Jenkins@さくらVPSにOctopressのデプロイを任せてみる - TOKOROM BLOG

Gitのインストールしてclone

yum install git
cd /var/www
git clone repository subdomain

Virtual Hostの設定して、サイトルートは subdomain/public にした。

とりあえずrootで鍵作成と /root/.ssh/config の設定

SSH用のパスフレーズなしの鍵作成

ssh-keygen -t rsa

/root/.ssh/config に下記追記

Host repository_domain
        HostName        repository_domain
        IdentityFile    /root/.ssh/id_rsa
        User            username

グループを作成

deployers って名前のグループにした

groupadd deployers
usermod -G deployers <username>
usermod -G gitwriters apache

リポジトリの権限付与

chgrp -R deployers /var/www/subdomain
chmod -R g+rw /var/www/subdomain
find /var/www/subdomain -type d -print0 | xargs -0 chmod g+s

.ssh 作成

mkdir /var/www/.ssh
chown apache /var/www/.ssh

apacheユーザーで操作できるようにする

visudo 実行して下記追記

apache ALL=(ALL) NOPASSWD: ALL

apacheユーザーで鍵作成

sudo -u apache ssh-keygen -t rsa

ここからハマったところ

apacheでpull

cd /var/www/subdomain
sudo -u apache git pull

エラー… /root/.config/git/config の権限がないって…?

/root/.config/git/config 自体存在しなかったので、作って apache をオーナーにするもエラー…

ググっていろいろまわり、git-config(1) Manual Pageに $XDG_CONFIG_HOME のことが書かれていたので、これを設定してみようとさらにググる…

そしてブログ Apache+PHPで環境変数を追加したいにたどり着き、なんとか $XDG_CONFIG_HOME を設定するところを知る。

nano /etc/sysconfig/httpd
export XDG_CONFIG_HOME=/var/www/.config	#追記
cd /var/www
mkdir -p .config/git
chown -R apache .config
/etc/init.d/httpd restart

こ れ で ! と勇んでpullするもエラー… 今度は /root/.ssh/id_rsa の権限がないとかだったかな…(うろおぼえ)

なんで /var/www/.ssh/id_rsa を見てくれないんだよorz

… …… ………

で、いろいろすったもんだしたあと、apacheユーザーでログインすればいいんじゃないかと気が付き(気付くの遅すぎ

usermod -s /bin/bash
su apache
cd /var/www/subdomain
git pull

ヽ(;Д;)ノ プログラムはなんとかなってるけど、サーバの知識が足らないなぁ…