服务器: Linux (Red Hat 4.8.5-11)
1、使用WandiscoSVN升级最新版本Subversion
ps: 原本使用的是svn-1.8的,但是在下载的时候抛出了异常“Requires: libsas2.so.2()(64bit)”,未能找到解决方案,所以最终搭建1.7版本的
2、安装SVN
[root@localhost ~]# yum install subversion
3、创建svn版本库目录
[root@localhost ~]# mkdir -p /var/svn/svnrepos
4、创建版本库
[root@localhost ~]# svnadmin create /var/svn/svnrepos
执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
5、进入conf目录(该svn版本库配置文件)
authz:文件是权限控制文件
passwd:是帐号密码文件
svnserve.conf:SVN服务配置文件
6、设置帐号密码
[root@localhost ~]# vi passwd
在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan
7、设置权限
[root@localhost ~]# vi authz
在末尾添加如下代码:
[svnrepos:/]
jaren01 = rw
jaren02 = r
* =
ps: jaren01有读写权限,jaren02仅有读的权限,* =标识其他用户没有任何权限
8、修改svnserve.conf文件
[root@localhost ~]# vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
ps: anon-access = read需要改成anon-access = none,因为read用TortoiseSVN看到日志信息
9、启动svn版本库
[root@localhost ~]# svnserve -d -r /var/svn
10、服务器上测试是否成功
[root@localhost ~]# svn co svn://192.168.2.51/svnrepos
输出:Checked out revision 0.
并且会在当前目录下生成svnrepos文件夹
11、确认服务器端口是否开放,默认是3690
以下是Red Hat的端口设置:
[root@localhost ~]# service iptables status Redirecting to /bin/systemctl status iptables.service Unit iptables.service could not be found. 安装 iptables-services: [root@localhost ~]# yum install iptables-services 启动iptables: [root@localhost ~]# service iptables start 编辑配置文件,将3690端口添加到22端口下: [root@localhost ~]# vi /etc/sysconfig/iptables # sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690-j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT 重启: service iptables restart 查看开放端口: [root@localhost ~]# /sbin/iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3690 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination 远端就能通过telnet 测试访问了: telnet 192.168.2.51 3690
12、之后便可以通过TortoiseSVN连接上SVN了
1、安装httpd服务
[root@localhost ~]# yum install httpd
检查httpd是否安装成功:
2、安装mod_dav_svn
[root@localhost ~]# yum install mod_dav_svn
安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
3、创建svn仓库
[root@localhost ~]# mkdir /var/www/svn
[root@localhost ~]# svnadmin create /var/www/svn/svnrepos
4、配置权限
[root@localhost ~]# chown -R apache:apache /var/www/svn/svnrepos/
创建用户文件passwd:
#创建用户文件
[root@localhost ~]# touch /var/www/svn/passwd
#创建用户admin该用户为网页登陆用户,与svn的用户区分,123456为密码,默认MD5加密
[root@localhost ~]# htpasswd -b /var/www/svn/passwd admin 123456
创建权限文件authz(与SVN的一致即可):
5、配置httpd
[root@localhost ~]# touch /etc/httpd/conf.d/subversion.conf
[root@localhost ~]# vi /etc/httpd/conf.d/subversion.conf
#加入该语句
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "Authorization SVN"
AuthzSVNAccessFile /var/www/svn/authz
AuthUserFile /var/www/svn/passwd
Require valid-user
6、启动httpd服务
[root@localhost ~]# systemctl start httpd.service #启动
[root@localhost ~]# systemctl restart httpd.service #重启
[root@localhost ~]# systemctl stop httpd.service #停止
[root@localhost ~]# svnserve -d -r /var/www/svn/ #别忘了SVN启动起来
7、遇到的问题
利用http://xxx进行SVN的同步,报一下错误
Can't open file '/var/www/svn/wizbank/db/txn-current-lock': Permission denied
是因为我的环境防火墙拦截,暂时解决方法是关闭防火墙了
setenforce 0