svn多台服务器添加项目同步更新功能

利用钩子更新远程项目的关键是实现ssh无密码登录。

一、ssh无密码登录
1.在A机器上生成秘钥对
[root@domin ~]# ssh-keygen -t rsa
生成完的秘钥对保存/用户主目录/.ssh目录中

[root@domin .ssh]# pwd  
/root/.ssh  
[root@domin .ssh]# ls  
id_rsa  id_rsa.pub  

2.将id_rsa.pub复制为authorized_keys,并将authorized_keys文件上传到B机器的

[root@domin .ssh]# cp id_rsa.pub authorized_keys  
[root@domin .ssh]# scp authorized_keys [email protected]:/root/.ssh  

2.1 第二步还可以有另外一种传输方式

[root@domin .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

注:远程机器的.ssh目录需要700权限,authorized_keys文件需要600权限
3.ssh登录B机器,第一次需要输入密码,以后就不在需要了,至此,无密码登录就已经实现了
二、在B机器上创建更新svn的脚本
1.创建脚本文件/shell/svnup.sh

[root@domin shell]# vim svnup.sh  
#!/bin/bash  
/usr/bin/svn update /var/www/projcet #projcet为项目文件  

[root@domin shell]# chmod 755 svnup.sh

三、创建钩子
svn仓库创建完后会有一个hooks文件夹,该文件夹下面已经自带了一些钩子文件,我们要用到的是post-commit
1.将post-commit.tmpl复制为post-commit

[root@101-server hooks]# cp post-commit.tmpl post-commit  

2.注释掉post-commit里面的所有内容,并添加我们的更新命令

/usr/bin/ssh -l root 192.168.6.28 "/bin/bash /shell/svnup.sh"  

四、总结

  1. .ssh目录和authorize_keys文件的权限,.ssh目录的权限是700,authorize_keys的权限应该为644.
  2. post-commit文件和svnup.sh文件的权限,至少为755

你可能感兴趣的:(svn)