SVN服务器安装与配置
操作系统:Centos 7.0/Debian 8.0
源码安装
1.下载源码
#wget http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
#wget http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz
#tar -xvf subversion-1.4.0.tar.gz
#tar -xvf subversion-deps-1.4.0.tar.gz
2.编译安装
#cd subversion-1.4.0
#./configure -–without-berkeley-db –with-zlib --enable-shared
配置说明:
以svnserve方式运行,不加apache编译参数(现在都用nginx了),以fsfs格式存储版本库;
–without-berkeley-db 不编译berkeley-db(一种数据库);
--enable-shared 共享库,重要,如果不添加编译时会产生-fPIC之类错误;
–prefix 指定安装目录,可以采用默认;
#make clean
#make
#make install
也可采用yum/apt-get安装
Centos
#yum install subverison
Debian
#apt-get install subverison
3.测试
#svnserve –version
4.添加系统服务
新建启动脚本:
#vi /lib/systemd/system/svn.service
内容如下:
[Unit]
Description=svn server daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/svnserve -d -r /opt/svndata
[Install]
WantedBy=multi-user.target
至此可以使用systemctl命令来启动/关闭和重启服务了;
-d 表示以daemon(后台)方式运行;
-r 指定svn工程目录;
–listen-port 8888 表示指定8888端口(不建议修改);
添加开机启动
#systemctl enable svn.service
1. 建立版本库
#mkdir -p /opt/svndata/repos
#svnadmin create /opt/svndata/repos
2. 修改配置(每个版本库一个配置)
#vi /opt/svndata/repos/conf/svnserve.conf
内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /etc/svn/passwd
authz-db = authz
realm = repos
注意事项:
password-db是指明该版本库的用户名和密码:
一种是全局统一(建议);另一种是每个版本库一套;
authz-db是指明用户权限,建议每个版库权限独立;
realm 为显示名称;
3.配置用户
#vi /etc/svn/passwd
内容修改为
[users]
alex = 123456
dachun = 888888
注意事项:
由于此文件保存了明文密码,所以注意权限设置为root以外的其他用户不可读;
4.配置用户权限
#vi /opt/svndata/repos/conf/authz
内容修改为
#新建了一个名为admin的用户组
[groups]
admin = alex
#根目录的权限
[/]
@admin = rw
* =
#子目录权限
[/abc]
dachun = rw
注意事项:
1.此文件由svnserve.conf中指定;
2.dachun仅对abc目录有读写权限;
3.如果在全局中定义权限,子目录需指明版本库名称[repos:/abc]
添加http协议支持
web服务器:apache2
1.安装dav_svn模块
# apt-get install libapache2-svn
2.添加模块dav_svn模块
# ln -s /etc/apache2/mods-availables/dav.load /etc/apache2/mods-enabled/dav.load;
# ln -s /etc/apache2/mods-availables/dav_svn.load /etc/apache2/mods-enabled/dav_svn.load;
# ln -s /etc/apache2/mods-availables/dav_svn.conf /etc/apache2/mods-enabled/dav_svn.conf;
3.修改配置文件dav_svn.conf
# 可以有多个Location,每个Location对应一个版本库
<Location /svn>
DAV svn
# 指定版本库存路径
SVNPath /opt/svndata/repo
AuthType Basic
AuthName "My SVN Repo"
# 用户权限认证文件
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /opt/data/svndata/code/conf/authz
Require valid-user
</Location>
4.创建SVN用户、密码
# htpasswd /etc/apache2/dav_svn.passwd alex
New password:
Re-type new password:
Adding password for user alex
注意事项:
这里的用户名和密码与svn协议下的用户名密码不是同一套东西;
5.SVN权限设置
权限设置都是相同的,可以采用同一个权限文件;
6.测试
重启apache2,在浏览器地址输入http://svn.mcucode.cn/svn;
http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/