操作系统: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/