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