搭建SVN CentOS服务器
1.借鉴:
Linux(Centos6.5)下安装svn服务器,并通过http访问
2.开始:
2.1 首先你得有一个干净的CentOS或者其他的服务器,确保它们能够连接外网,请别忘记将防火墙关闭。
service iptables stop #关闭防火墙
chkconfig iptables off #使防火墙不自动启动
2.2 配置的话建议配置成双网卡,效仿企业中服务器的网络配置,一个配置为内网,一个连接外网,不需要的话可以删除。(这里是配置网卡,如果已经可以连接网络,则可以省略这一步)
以下为我自己的配置:
[root@svn ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 #网卡eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static #这里是配置静态IP
IPADDR=10.211.55.9 #请更改IP
NETMASK=255.255.255.0 # 请视情况更改网络掩码
[root@svn ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth1 #网卡eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp #这里是动态获取IP
2.3 安装svn
# 首先你可能需要一个镜像,当然是为了提速
[root@svn ~]# yum install yum-fastestmirror
# 然后你可以下载yum安装svn了,当然yum要在centos下
[root@svn ~]# yum -y install mod_dav_svn
# 接下来安装httpd,一般情况下,linux服务器是有httpd服务的,你可以检查下,如果没有则安装
[root@svn ~]# yum -y install httpd
2.4 配置仓库
[root@svn ~]# mkdir -p /home/svn/repos1 #创建仓库1
[root@svn ~]# svnadmin create /home/svn/repos1 #建立svn版本库
[root@svn ~]# vi /home/svn/repos1/conf/svnserve.conf #修改SVN版本库配置文件
# 修改文件结果如下:
[general] # 以下配置必须顶格,否则会有问题的
anon-access = none
auth-access = write
password-db = /home/svn/conf/pwd.conf # 指向用户配置文件
authz-db = /home/svn/conf/authz.conf # 指向权限配置文件
realm = repos1 # 指向svn仓库地址
2.5 配置svn用户和权限
2.5.1 配置svn用户
[root@svn ~]# vi /home/svn/conf/pwd.conf # 这里面什么也不用写,直接保存并退出就行,或者直接touch /home/svn/conf/pwd.conf就行
[root@svn ~]# htpasswd -c /home/svn/conf/pwd.conf admin # 创建admin用户,根据提示输入密码,第一个用户才需要加-c,后面的用户不需要-c
[root@svn ~]# htpasswd /home/svn/conf/pwd.conf test # 创建test用户,根据提示输入密码
[root@svn ~]# vi /home/svn/conf/pwd.conf # 在用户最上方加上[users],加上[users]这一步是很重要的,因为用htpasswd的方式加用户会覆盖掉[users],所以每次加完用户需要回去补一下该节点
最终pwd.conf文件应该是这样的:
[users]
admin:qISaC0mVFWh1s
test:M2CgPmmMSyDis
2.5.2 配置svn权限
[root@svn ~]# vi /home/svn/conf/authz.conf
文件内容如下:
[groups]
admin=user1,user2
test=user3
[/]
@admin=rw
* = r
[repos1:/]
user3=r
解释:
a. [groups]为组定义,可以在该组下加很多用户,以,分割,但是该用户数据必须在/homd/svn/conf/pwd.conf中定义好,
b. [/]表示根目录以下的权限定义
c. [repos1:/]表示仓库下的权限定义
如果要分项目,则以此规则类推:
如:[repos1:/aaa]则表示仓库下的aaa项目的权限定义。
@admin 表示admin这个组下的用户权限。
user1=r 表示user1这个用户的权限。
权限类型:r,w,rw 分别表示只读,只写,读写。如果是user1= 这种空情况则表示没有。
2.6 建立启动svn的用户
[root@svn ~]# useradd svn #如果提示svn账户已存在,则执行以下命令
[root@svn ~]# passwd svn ##根据提示修改下密码,不能过于简单,可使用常用密码
[root@svn ~]# chown -R svn:svn /home/svn/ ##允许用户svn访问版本库
[root@svn ~]# chmod –R o+rw /home/svn ##解决windows检出提交提示/home/svn/db/txn-current-lock’错误(这一行我并没有执行,因为我的环境不是window检出,所以没有配置)
2.7 配置svn的端口
[root@svn ~]# vi /etc/httpd/conf/httpd.conf
找到:
#Listen 12.34.56.78:80这一行,
修改成:
Listen 9999 ##9999就是svn的端口,默认是80,你可以修改成你自己想要的。不建议使用默认80端口
2.8 配置httpd
[root@svn ~]# vi /etc/httpd/conf.d/subversion.conf
配置文件内容为:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /home/svn
<LimitExcept GET PROPFIND OPTIONS REPORT>
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /home/svn/conf/pwd.conf
AuthzSVNAccessFile /home/svn/conf/authz.conf
Require valid-user
<LimitExcept>
<Location>
2.9 启动服务
[root@svn ~]# service httpd restart # 重启httpd服务
[root@svn ~]# svnserve -d -r /home/svn/ # 启动svn
[root@svn ~]# ps aux|grep svn # 查看svn服务是否正常
# 出现以下说明svn服务启动成功了
root 1406 0.0 0.0 152868 740 ? Ss 16:20 0:00 svnserve -d -r /home/svn
root 2012 0.0 0.0 103252 864 pts/0 S+ 21:59 0:00 grep svn
2.10 启动浏览器访问
在浏览器中输入:服务器Ip+端口+httpd配置中的。
如:http://10.211.55.9:9999/svn/repos1