凌峰创科服务平台

ubuntu svn服务器搭建

在Ubuntu系统上搭建SVN(Subversion)服务器是一个常见的需求,主要用于版本控制和团队协作,以下是详细的搭建步骤,包括安装、配置、权限管理及安全设置等内容。

ubuntu svn服务器搭建-图1
(图片来源网络,侵删)

系统准备

确保Ubuntu系统已更新至最新版本,执行以下命令更新系统软件包列表:

sudo apt update
sudo apt upgrade -y

然后安装必要的依赖包,如apache2(如果需要通过HTTP访问SVN)和subversion

sudo apt install apache2 subversion libapache2-svn -y

安装完成后,检查svnserveapache2服务是否正常运行:

systemctl status svnserve
systemctl status apache2

创建SVN仓库

SVN仓库是存储版本数据的目录,建议在/var/svn下创建仓库,例如名为project_repo

ubuntu svn服务器搭建-图2
(图片来源网络,侵删)
sudo mkdir -p /var/svn
sudo svnadmin create /var/svn/project_repo

创建后,仓库目录会自动生成以下结构:

  • conf/:存放配置文件(svnserve.confpasswdauthz)。
  • db/:存放版本数据。
  • hooks/:存放钩子脚本。
  • locks/:存放锁数据文件。

配置SVN仓库

配置svnserve.conf

编辑仓库配置文件:

sudo nano /var/svn/project_repo/conf/svnserve.conf
[general]
anon-access = none          # 禁止匿名访问
auth-access = write         # 允许认证用户读写
password-db = passwd        # 密码文件路径
authz-db = authz            # 权限控制文件路径
realm = My SVN Repository   # 认证域名称

保存并退出(Ctrl+OCtrl+X)。

配置用户密码

编辑passwd文件添加用户:

ubuntu svn服务器搭建-图3
(图片来源网络,侵删)
sudo nano /var/svn/project_repo/conf/passwd

格式为用户名 = 密码

[users]
admin = password123
user1 = userpass

配置权限控制

编辑authz文件设置目录权限:

sudo nano /var/svn/project_repo/conf/authz

示例配置:

[groups]
admin_group = admin
dev_group = user1
[/]
@admin_group = rw
* = r
[/trunk]
@dev_group = rw

说明:

  • [groups]定义用户组。
  • [/]表示仓库根目录权限。
  • * = r表示其他用户只读。

启动SVN服务

使用svnserve独立服务

编辑svnserve配置文件:

sudo nano /etc/default/svnserve

OPTIONS行修改为:

OPTIONS="-r /var/svn --listen-host 0.0.0.0"

启动并设置开机自启:

sudo systemctl start svnserve
sudo systemctl enable svnserve

测试连接:

svn co svn://localhost/project_repo

通过Apache访问(可选)

如果需要通过HTTP访问,需启用apache2-svn模块并配置虚拟主机,编辑/etc/apache2/mods-available/dav_svn.conf

<Location /svn>
    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName "SVN Repository"
    AuthUserFile /etc/svn/passwd
    AuthzSVNAccessFile /etc/svn/authz
    Require valid-user
</Location>

创建密码文件并设置权限:

sudo htpasswd -cm /etc/svn/passwd admin
sudo chown -R www-data:www-data /var/svn
sudo systemctl restart apache2

通过浏览器访问http://localhost/svn/project_repo

安全设置

  1. 防火墙配置:允许SVN端口(3690)和HTTP端口(80):
    sudo ufw allow 3690
    sudo ufw allow 80
  2. 仓库权限:确保仓库目录属主为www-data(HTTP模式)或svn用户:
    sudo chown -R www-data:www-data /var/svn

常见操作

  • 导出仓库svn export svn://localhost/project_repo /tmp/export
  • 导入项目svn import /tmp/my_project svn://localhost/project_repo -m "Initial import"
  • 查看日志svn log svn://localhost/project_repo

相关问答FAQs

Q1: 如何修改SVN仓库的密码?
A1: 编辑passwd文件(路径为/var/svn/仓库名/conf/passwd),直接修改对应用户的密码值,保存后重启svnserve服务即可生效。

Q2: SVN服务启动失败,提示“Address already in use”如何解决?
A2: 检查3690端口是否被占用:sudo netstat -tlnp | grep 3690,若被占用,可修改/etc/default/svnserve中的--listen-host为特定IP,或终止占用端口的进程(sudo kill -9 PID)。

分享:
扫描分享到社交APP
上一篇
下一篇