插件窝 干货文章 Linux搭建SVN服务器详细教程

Linux搭建SVN服务器详细教程

SVN sudo myproject bash 300    来源:    2025-05-12

Linux搭建SVN服务器详细教程

1. 安装SVN服务

对于基于Debian/Ubuntu的系统:

sudo apt update
sudo apt install subversion libapache2-mod-svn

对于基于RHEL/CentOS的系统:

sudo yum install subversion mod_dav_svn
# 或者对于较新的CentOS/RHEL 8+
sudo dnf install subversion mod_dav_svn

2. 创建SVN仓库

sudo mkdir -p /var/svn
sudo svnadmin create /var/svn/myproject
sudo chown -R www-data:www-data /var/svn/myproject  # Debian/Ubuntu
# 或者对于CentOS/RHEL:
sudo chown -R apache:apache /var/svn/myproject

3. 配置Apache访问SVN

编辑Apache配置文件:

Debian/Ubuntu:

sudo nano /etc/apache2/mods-enabled/dav_svn.conf

CentOS/RHEL:

sudo nano /etc/httpd/conf.d/subversion.conf

添加以下内容(根据实际情况修改):

<Location /svn/myproject>
    DAV svn
    SVNPath /var/svn/myproject
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
</Location>

4. 创建SVN用户

sudo htpasswd -cm /etc/apache2/dav_svn.passwd username1
# 添加第二个用户时去掉-c参数
sudo htpasswd -m /etc/apache2/dav_svn.passwd username2

5. 重启Apache服务

Debian/Ubuntu:

sudo systemctl restart apache2

CentOS/RHEL:

sudo systemctl restart httpd

6. 配置SVN仓库权限

编辑仓库的conf/svnserve.conf文件:

sudo nano /var/svn/myproject/conf/svnserve.conf

修改以下内容(去掉前面的#并修改值):

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

编辑用户密码文件:

sudo nano /var/svn/myproject/conf/passwd

添加类似内容:

[users]
user1 = password1
user2 = password2

编辑权限控制文件:

sudo nano /var/svn/myproject/conf/authz

示例内容:

[groups]
admin = user1
dev = user2

[/]
@admin = rw
@dev = r
* =

7. 测试SVN访问

通过HTTP访问:

svn checkout http://your-server-ip/svn/myproject

通过svnserve访问(可选):

如果需要独立svnserve服务:

sudo svnserve -d -r /var/svn

然后可以使用:

svn checkout svn://your-server-ip/myproject

8. 防火墙配置(如有需要)

对于HTTP访问:

sudo ufw allow 80/tcp  # Debian/Ubuntu
# 或者
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload  # CentOS/RHEL

对于svnserve访问:

sudo ufw allow 3690/tcp  # Debian/Ubuntu
# 或者
sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload  # CentOS/RHEL

9. 设置开机启动(仅svnserve方式)

sudo systemctl enable svnserve

10. 常用SVN命令参考

  • 检出代码:svn checkout URL [PATH]
  • 添加文件:svn add FILE
  • 提交更改:svn commit -m "message"
  • 更新代码:svn update
  • 查看状态:svn status
  • 查看日志:svn log

注意事项

  1. 确保Apache/SVN服务正常运行
  2. 定期备份SVN仓库(/var/svn/myproject目录)
  3. 对于生产环境,建议使用HTTPS而非HTTP
  4. 定期检查并更新SVN和Apache的安全补丁

如需更高级的配置,如LDAP集成、更细粒度的权限控制等,可以参考SVN官方文档进行配置。