凌峰创科服务平台

linux下svn服务器配置

在Linux环境下配置SVN服务器,通常通过Apache结合Subversion实现,也可使用svnserve独立服务,以下是详细配置步骤,以Ubuntu/Debian系统为例,CentOS/RHEL可通过yum安装相应软件包。

安装必要软件

首先更新系统并安装SVN和Apache相关组件:

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

安装完成后,检查服务状态:

svnserve --version  # 验证SVN版本
systemctl status apache2  # 检查Apache状态

创建版本库

  1. 创建版本库目录
    建议在/var/svn下创建版本库,

    sudo mkdir -p /var/svn/project
    sudo svnadmin create /var/svn/project
  2. 设置目录权限
    确保Apache用户(通常为www-data)有读写权限:

    sudo chown -R www-data:www-data /var/svn/project
    sudo chmod -R 775 /var/svn/project

配置Apache支持SVN

  1. 启用SVN模块

    sudo a2enmod dav
    sudo a2enmod dav_svn
  2. 创建SVN配置文件
    /etc/apache2/sites-available/下创建svn.conf

    <Location /svn>
      DAV svn
      SVNParentPath /var/svn  # 版本库父目录
      AuthType Basic
      AuthName "SVN Repository"
      AuthUserFile /etc/svn/passwd  # 密码文件路径
      Require valid-user
    </Location>
  3. 创建认证用户
    使用htpasswd命令创建用户并设置密码:

    sudo htpasswd -cm /etc/svn/passwd admin  # 首次创建用-cm,后续用户用-m
  4. 启用配置并重启Apache

    sudo a2ensite svn.conf
    sudo systemctl restart apache2

配置访问权限(可选)

在版本库的conf/svnserve.conf或Apache配置中设置精细权限,通过AuthzSVNAccessFile指定权限文件:

AuthzSVNAccessFile /etc/svn/authz

创建/etc/svn/authz文件:

[groups]
admin = admin
developers = user1,user2
[/]
@admin = rw
* = r
[project:/branches/dev]
@developers = rw

防火墙与SELinux设置

  1. 允许HTTP和SVN端口

    sudo ufw allow http
    sudo ufw allow 3690  # 若使用svnserve协议
  2. SELinux配置(CentOS/RHEL)

    sudo setsebool -P httpd_can_network_connect_db on
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/svn(/.*)?"
    sudo restorecon -Rv /var/svn

测试与使用

  1. 通过浏览器访问
    输入http://your-server-ip/svn/project,输入用户名密码验证。

  2. 客户端检出

    svn checkout http://your-server-ip/svn/project /local/path

常见问题解决

  • 权限错误:检查authz文件格式及用户所属组。
  • 403 Forbidden:确认Apache用户对版本库目录有执行权限(chmod o+x /var/svn)。
  • 无法创建版本库:确保svnadmin命令路径正确,磁盘空间充足。

相关问答FAQs

Q1: 如何迁移SVN版本库到另一台服务器?
A1: 使用svnadmin dump导出版本库,再通过svnadmin load导入到新服务器,具体步骤:

  1. 在原服务器执行:svnadmin dump /var/svn/project > project.dump
  2. project.dump传输到新服务器,执行:svnadmin load /var/svn/project < project.dump
  3. 重新配置Apache权限和认证。

Q2: SVN服务器如何支持HTTPS加密访问?
A2: 需要配置Apache的SSL模块,步骤如下:

  1. 安装证书(如Let's Encrypt):sudo apt install certbot python3-certbot-apache
  2. 获取证书:sudo certbot --apache -d svn.yourdomain.com
  3. 修改svn.conf,将Location块改为HTTPS协议,并添加SSL相关指令:
    <Location /svn>
      SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/svn.yourdomain.com/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/svn.yourdomain.com/privkey.pem
      # 其他SVN配置保持不变
    </Location>
  4. 重启Apache使配置生效:systemctl restart apache2
分享:
扫描分享到社交APP
上一篇
下一篇