凌峰创科服务平台

Linux服务器如何搭建SVN?

在Linux服务器上搭建SVN(Subversion)版本控制系统,可以有效管理项目代码和文档,实现版本控制、协作开发和历史追溯,本文将详细介绍在Linux服务器上安装、配置和使用SVN的完整步骤,包括环境准备、安装配置、仓库创建、权限管理以及访问测试等内容。

Linux服务器如何搭建SVN?-图1
(图片来源网络,侵删)

环境准备

在开始搭建SVN之前,需要确保服务器满足以下基本要求:

  1. 操作系统:推荐使用CentOS、Ubuntu等主流Linux发行版,本文以CentOS 7为例进行说明。
  2. 服务器配置:建议至少1GB内存、10GB可用存储空间,根据项目需求可适当调整。
  3. 网络环境:确保服务器可以外网访问(如需远程访问),或通过内网IP进行局域网访问。
  4. root权限:需要管理员权限进行软件安装和配置修改。

安装SVN服务

更新系统软件包

更新系统的软件包列表和已安装的软件包,确保环境最新:

sudo yum update -y  # CentOS/RHEL系统
# 或
sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian系统

安装SVN服务

使用包管理器安装SVN服务,以CentOS为例:

sudo yum install subversion -y

安装完成后,检查SVN版本以确认安装成功:

Linux服务器如何搭建SVN?-图2
(图片来源网络,侵删)
svnserve --version

创建SVN仓库目录

SVN仓库通常存放在/var/svn目录下,创建该目录并设置权限:

sudo mkdir -p /var/svn
sudo chown -R apache:apache /var/svn  # 如果使用Apache访问,需授权apache用户
sudo chmod -R 755 /var/svn

创建SVN仓库

使用svnadmin命令创建新的仓库,创建一个名为project_repo的仓库:

sudo svnadmin create /var/svn/project_repo

创建完成后,仓库目录结构如下:

/var/svn/project_repo/
├── conf/          # 配置文件目录
│   ├── svnserve.conf  # SVN服务主配置文件
│   ├── passwd        # 用户密码文件
│   └── authz        # 权限控制文件
├── db/            # 仓库数据目录
├── hooks/         # 钩子脚本目录
├── format         # 仓库版本格式文件
└── README.txt     # 仓库说明文件

配置SVN仓库

配置svnserve.conf

编辑仓库的svnserve.conf文件,启用匿名访问和认证模式:

Linux服务器如何搭建SVN?-图3
(图片来源网络,侵删)
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文件,添加SVN用户和密码:

sudo nano /var/svn/project_repo/conf/passwd

添加用户,格式为用户名 = 密码

[users]
admin = 123456
user1 = password1
user2 = password2

配置权限控制

编辑authz文件,设置用户和组的访问权限:

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

示例配置:

[groups]
admin_group = admin
dev_group = user1, user2
[/]
@admin_group = rw          # admin组对根目录有读写权限
* = r                     # 其他用户只读
[/project_repo/trunk]
@dev_group = rw           # dev组对trunk目录有读写权限

启动SVN服务

使用独立模式启动SVN服务

SVN服务可通过svnserve命令以独立模式启动,指定仓库目录和监听端口(默认3690):

svnserve -d -r /var/svn

参数说明:

  • -d:后台守护进程模式运行。
  • -r:指定仓库根目录,所有访问路径将基于此目录。

设置开机自启动

创建systemd服务单元文件,实现开机自启动:

sudo nano /etc/systemd/system/svnserve.service
```如下:
```ini
[Unit]
Description=Subversion Protocol Daemon
After=network.target
[Service]
Type=forking
User=apache
Group=apache
ExecStart=/usr/bin/svnserve -d -r /var/svn
Restart=on-abort
[Install]
WantedBy=multi-user.target

启动服务并设置开机自启:

sudo systemctl daemon-reload
sudo systemctl start svnserve
sudo systemctl enable svnserve

防火墙配置

如果需要远程访问,需开放SVN默认端口3690:

sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload

访问SVN仓库

检出仓库

使用SVN客户端检出仓库到本地,在本地机器上执行:

svn checkout svn://服务器IP/project_repo

输入配置的用户名和密码后,即可完成仓库检出。

提交和更新

在本地仓库中修改文件后,提交到服务器:

svn commit -m "提交说明"

更新服务器最新代码到本地:

svn update

使用Apache访问SVN(可选)

如果需要通过HTTP/S访问SVN,可集成Apache服务,以下是简要步骤:

  1. 安装Apache和SVN模块:
    sudo yum install httpd mod_dav_svn -y
  2. 创建SVN虚拟主机配置:
    sudo nano /etc/httpd/conf.d/svn.conf
    <Location /svn>
      DAV svn
      SVNParentPath /var/svn
      AuthType Basic
      AuthName "SVN Repository"
      AuthUserFile /etc/svn-users
      Require valid-user
    </Location>
  3. 创建用户密码文件并重启Apache:
    sudo htpasswd -c /etc/svn-users admin
    sudo systemctl restart httpd

常见问题及解决

  1. 问题svnserve启动失败,提示“Address already in use”。 解决:检查端口3690是否被占用,使用netstat -tuln | grep 3690查看,并修改svnserve命令中的端口号。

  2. 问题:用户无法访问仓库,提示“Authorization failed”。 解决:检查authz文件配置是否正确,确保用户名和组名拼写无误,路径匹配准确。

相关问答FAQs

Q1: 如何修改SVN仓库的认证域名称?
A1: 编辑仓库的svnserve.conf文件,修改realm参数的值,例如将realm = My SVN Repository改为realm = New Project Repo,然后重启svnserve服务使配置生效。

Q2: 如何备份SVN仓库?
A2: 使用svnadmin hotcopy命令创建仓库的热备份,svnadmin hotcopy /var/svn/project_repo /var/svn/backup/project_repo_backup --clean-logs,定期备份可避免数据丢失,建议结合定时任务(如cron)实现自动化备份。

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