步骤一:安装 Subversion
sudo apt-get install subversion subversion-tools
步骤二:创建 SVN repos
sudo mkdir -p /srv/svn/repos
cd /srv/svn/repos
sudo svnadmin create my_repo
sudo chown -R svn:svn /srv/svn/repos
通常还需要手动修改my_repo/conf
目录下的访问密码和仓库权限,我自己是按照Subversion说明手册配置里面的用户名和密码。此处为了便于测试可以先配置为允许客户端匿名读写仓库:修改conf/svnserve.conf
中[general]
栏目下的第一条为anon-access = write
即可允许匿名读写仓库。
步骤三:配置 systemd
推荐使用 Ubuntu 自带的 systemctl 工具启动 svnserve 守护进程
sudo systemctl enable svnserve.service
然后我们需要检查两个配置文件的内容,首先是/etc/systemd/system/multi-user.target.wants/svnserve.service
[Unit]
Description=Subversion protocol daemon
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
User=svn
Group=svn
PIDFile=/var/run/svnserve/svnserve.pid
ExecStart=/usr/bin/svnserve --daemon --pid-file=/var/run/svnserve/svnserve.pid $SVNSERVE_OPTIONS
ExecStop=/usr/bin/killall svnserve
Restart=always
[Install]
WantedBy=multi-user.target
然后检查配置文件/etc/sysconfig/svnserve
,其中定义了SVNSERVE_OPTIONS选项,默认值如下:
SVNSERVE_OPTIONS="-d -R -r /srv/svn/repos"
其中选项-R
会强制只允许远程客户端读取,不允许写入SVN仓库。
我手动修改了脚本/etc/sysconfig/svnserve
删掉此处的-R
,修改之后变成:
SVNSERVE_OPTIONS="-d -r /srv/svn/repos"
步骤四:启动后台守护进程
sudo systemctl start svnserve.service
步骤五:测试 svn checkout 检出 svn://127.0.0.1/my_repo
cd /tmp
svn checkout svn://127.0.0.1/my_repo
其他可能遇到的问题
- 检查 Ubuntu 主机防火墙是否允许访问 svnserve 端口 3690
- 检查
/var/run/svnserve
目录是否已经自动创建,如果不存在请手动创建
sudo mkdir -p /var/run/svnserve
sudo chown -R svn:svn /var/run/svnserve