利用钩子方法动态构建网站SVN代码
SVN有很多钩子方法:
* start-commit
* pre-commit
* post-commit
* pre-revprop-change
* post-revprop-change
我们设置post-commit文件的内容:
/usr/bin/svn update SVN路径 --username SVN用户 --password SVN密码
设置可执行的权限:chmod +x post-commit
这里有一个前提:那就是SVN服务器和WEB服务器是同一台,不过在实际应用中,它们很可能是分离的,这时,我们可以用SSH的KEY认证达到从SVN服务器自动远程执行命令更新WEB服务器的目的:
先在SVN服务器上做好KEY,并把生成的KEY文件拷贝到WEB服务器上:
ssh-keygen -t rsa
scp /root/.ssh/id_rsa.pub WEB地址:/root/.ssh/authorized_keys
然后把post-commit文件的内容改为:
ssh WEB用户@WEB地址 /usr/bin/svn update SVN路径 --username SVN用户 --password SVN密码
如果/etc/ssh/sshd_config设定了PermitRootLogin no,则不允许Root登陆,那么你得换一个用户试试。
------------------------------------------------------------------------------
顺便说一句,别忘了设定Apache,以防止SVN目录被浏览:
<DirectoryMatch "/\.svn">
Order deny,allow
Deny from all
</DirectoryMatch>
另外,如果要在Putty下使用id_rsa的话,不能直接用,需要用Putty提供的puttygen工具转换一下:
Conversions -> Import key -> Save private key