おはこんばんちわ。くー(๑^・ω・^๑)です。
いつのまにか10月が終わってしまいました。
それはさておき、いいかげんうちのサイトをどうにかしたいんだけどって言い続けてどれだけ経ったかわかりませんが、いい加減どうにかしようとやっと動き始めました。
今回はなんとリッチ(?)にSmartyで頑張る所存です。
デザインはめんどくさいのでナウなヤングにバカウケ()のTwitter Bootstrap 3でてきとうにやっつけます。
で、今日は別に大した話じゃなくてその下準備てきな話です。
何をしたかといいますと、ただsvnでソース管理してcommitしたらhookで自動的にサーバ側のソースも更新されるようにしたってだけです。
別に一人で管理してるの弱小サイトなのでFTPでもviでもなんでもいいのですが、
デスクトップPCでいじったりMacBook Proでいじったりするので、めんどくさいのです。
ごちゃごちゃやっているうちにどれが最新かわからなくなったり、あぁ最新あっちだった取りに行くのめんどくさい…とか。
なので、svnでクライアント→サーバの一方通行にすることにしました。
svnで管理しておけば複数PCでうっかり同じファイルいじっちゃっても綺麗にマージしてくれるしね。
クライアント側はAptana Studioを愛用しているので、Subclipseを突っ込めばおしまいです。
サーバ側は
1. 適当な場所にsvn checkoutしてapacheのVirtualHostかなんかを設定する (※.svnフォルダが見えないように.htaccessで制限するとか公開フォルダをひとつ深くするとか。とにかく気をつけること!)
2. checkoutしたフォルダの所有者をapacheのユーザにする or 書き込み権限付与
3. リポジトリ配下のhooksフォルダの中にあるpost-commit.tmplをpost-commitとしてコピーするなりリネームするなりして、svn upするシェルでも何でも書いてapacheユーザで実行できるように実行権限をつける
てな感じです。
ちな、シェルはこんな感じ↓
#!/bin/sh
LOG="/var/log/svn/post-commit.log"
SVNUSER=foo
SVNPASS=bar
SVNOPTS="--username ${SVNUSER} --password ${SVNPASS}"
echo "START ${1} ${2}" >> ${LOG}
cd /var/www/web/
LANG=en_US.UTF-8 /usr/bin/svn ${SVNOPTS} up >> ${LOG}
echo "END ${1} ${2}" >> ${LOG}
11行目でcdしてから12行目でsvn upしてますが、うまく行かなくて試行錯誤してた名残です。
svn up フルパス でも多分大丈夫。
多分というのも、なぜだかなかなかうまく行かなくて、結局のところapacheユーザのホームディレクトリになってるところがapacheユーザに書き込み権限がないっていうクソみたいなオチだったので…
とりあえずこれでsvn commitをすると即座にサーバ側のソースが更新されてブラウザで確認できるようになりました。
え?リビジョン番号がゴリゴリ増えていく?男だろそんなの気にすんな。
hooksにはほかにも色々とテンプレートが用意されてますが、それぞれ実行されるタイミングの名前だそーです。
詳しくは各自ググってくれ。
0 Comments.