1. 安装部署
sudo apt-get install subversion subversion-tools # 安装软件
sudo mkdir -p /home/svn # 创建工作目录
sudo mkdir -p /home/svn/workspace # 创建版本库
sudo svnadmin create /home/svn/workspace # 初始化版本库
sudo svnserve -d -r /home/svn # 启动服务
killall svnserve # 停止服务
默认情况下,SVN 使用原生协议连接版本库,访问地址为 svn://ip:port/repo。
- 工作目录:SVN 服务管理的基本单元,一个工作目录下可以创建多个版本库;
- 版本库:SVN 版本管理的基本单元,通常对应一个项目。
2. 基础配置
版本库初始化时,自动在 ./conf
目录下生成配置文件,主要有:svnserve.conf、zuthz 和 passwd。
svnserve.conf
用于存储版本库配置信息,需要修改的部分如下:
[general]
anon-access = none # 禁止匿名访问
auth-access = write # 授权访问权限
password-db = /home/svn/passwd # 用户配置文件存放位置
authz-db = /home/svn/authz # 权限配置文件存放位置
passwd
用于存储用户名及口令信息,配置格式为 用户名 = 密码
,例如:
moonspirit = moonspirit
guest = 123456
authz
用于存储用户组及权限信息,分为 [groups]
和 [repo_name:/]
两个配置段:
[groups]
配置用户组信息,格式为组名 = 用户A,用户B
;[repo_name:/]
配置目录访问权限,格式为@组名 = r/w/rw
,例如:
[groups]
g_manager = moonspirit
g_guest = guest
[workspace:/]
@g_manager = rw
@g_guest = r
* =
passwd
和authz
既可以在各版本库下单独配置,也可以在工作目录下统一配置,它们的位置在svnserve.conf
中指定。
3. 支持 http 访问
通过 Apache 与 SVN 集成,支持通过 http 访问版本库,这样做的好处有:
- 可以直接通过浏览器访问版本库,而不必借助 Tortoise 等工具;
- 基于密文的访问控制,而不是简单的明文密码。
3.1 前期准备
sudo apt-get install apache2-utils libapache2-mod-svn # 安装 SVN 模块
sudo chown -R www-data:www-data /home/svn/ # 授权 Apache 访问工作目录
3.2 配置虚拟主机
修改 /etc/apache2/mods-available/dav_svn.conf
,配置 apache-svn 模块:
<Location /svn>
DAV svn
SVNParentPath /opt/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>
修改 /etc/apache2/apache2.conf
,赋予 /home/svn
工作目录访问权限:
<Directory /home/svn>
AllowOverride None
Require all granted
</Directory>
3.3 配置用户
sudo htpasswd -bc /etc/apache2/dav_svn.passwd username password # 创建密码文件并新增用户(覆盖原文件)
sudo htpasswd -b /etc/apache2/dav_svn.passwd username password # 添加用户
4. 开机自启动
在 /etc/systemd/system/
目录下创建服务单元文件,内容如下:
[Unit]
Description=Subversion Server
[Service]
Type=forking
ExecStart=/usr/bin/svnserve --daemon --root /software/svn
ExecStop=/usr/bin/killall svnserve
Restart=always
[Install]
WantedBy=default.target
systemctl
基本用法:
sudo systemctl daemon-reload # 加载新的服务单元
sudo systemctl status svn # 查看运行状态
sudo systemctl start svn # 启动服务
sudo systemctl stop svn # 停止服务
sudo systemctl restart svn # 重启服务
sudo systemctl reload svn # 重新加载配置文件