凌峰创科服务平台

linux svn 服务器搭建

在Linux环境下搭建SVN服务器通常使用Apache Subversion软件,它是一款开源的版本控制系统,能够高效管理文件和目录的变更,以下是详细的搭建步骤,包括环境准备、安装配置、权限管理及服务优化等内容。

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

环境准备

首先需要一台安装有Linux操作系统的服务器,推荐使用CentOS 7或Ubuntu 18.04及以上版本,确保系统已更新至最新状态,以CentOS 7为例,执行以下命令更新系统:

sudo yum update -y

关闭防火墙和SELinux(生产环境需谨慎配置):

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0

如果是Ubuntu系统,需使用apt更新并安装apache2等依赖。

安装SVN服务

安装Subversion

通过yum或apt安装SVN服务:

linux svn 服务器搭建-图2
(图片来源网络,侵删)
# CentOS
sudo yum install -y subversion
# Ubuntu
sudo apt update && sudo apt install -y subversion

安装完成后,验证版本:

svnserve --version

创建SVN仓库

选择合适的位置创建仓库,例如/var/svn

sudo mkdir -p /var/svn
sudo svnadmin create /var/svn/project1

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

  • conf/:配置文件目录
  • db/:数据存储目录
  • hooks/:钩子脚本目录
  • locks/:锁文件目录

配置SVN服务

修改配置文件

进入仓库配置目录,编辑svnserve.conf

linux svn 服务器搭建-图3
(图片来源网络,侵删)
sudo vim /var/svn/project1/conf/svnserve.conf

确保以下配置项生效(去掉注释符):

[general]
anon-access = none          # 禁止匿名访问
auth-access = write        # 授权用户可写
password-db = passwd       # 密码文件路径
authz-db = authz           # 权限控制文件路径
realm = My SVN Repository   # 仓库名称

配置用户密码

编辑passwd文件,添加用户及密码:

sudo vim /var/svn/project1/conf/passwd

格式如下:

[users]
user1 = password1
user2 = password2

配置权限控制

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

sudo vim /var/svn/project1/conf/authz

示例配置:

[groups]
admin = user1
dev = user2
[/]
@admin = rw
* = r

表示admin组对根目录有读写权限,其他用户只读。

启动SVN服务

使用svnserve启动

通过以下命令启动SVN服务:

sudo svnserve -d -r /var/svn

参数说明:

  • -d:后台守护进程模式
  • -r:指定仓库根目录

设置开机自启

创建systemd服务文件:

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

启用并启动服务:

sudo systemctl enable svnserver
sudo systemctl start svnserver

验证SVN服务

检查服务状态

sudo systemctl status svnserver

确保服务显示active (running)

客户端连接测试

在客户端使用以下命令检出仓库:

svn co svn://服务器IP/project1

输入配置的用户名和密码,若成功检出文件,则搭建完成。

高级配置(可选)

使用Apache协议访问

若需通过HTTP/S访问,需安装Apache和mod_dav_svn模块:

# CentOS
sudo yum install -y httpd mod_dav_svn
# Ubuntu
sudo apt install -y libapache2-mod-svn

配置Apache虚拟主机,添加SVN配置:

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

创建密码文件并重启Apache:

sudo htpasswd -cm /etc/svn/passwd user1
sudo systemctl restart httpd

仓库备份

编写备份脚本,使用svnadmin hotcopy命令:

#!/bin/bash
DATE=$(date +%Y%m%d)
svnadmin hotcopy /var/svn/project1 /backup/svn_backup/project1_$DATE
find /backup/svn_backup -name "project1_*" -mtime +7 -exec rm {} \;

通过cron设置定时任务,实现每日备份。

常见问题解决

  1. 权限问题:确保svnserve.confpasswdauthz文件权限正确(通常为600644)。
  2. 端口占用:默认端口为3690,若冲突可通过svnserve -d -r /var/svn --listen-port 3691指定其他端口。

相关问答FAQs

Q1: 如何修改SVN仓库的默认端口?
A1: 启动SVN服务时添加--listen-port参数指定新端口,例如svnserve -d -r /var/svn --listen-port 3691,客户端连接时需使用svn://服务器IP:3691/project1

Q2: SVN服务无法连接,如何排查?
A2: 首先检查服务状态(systemctl status svnserver),确认端口是否监听(netstat -tuln | grep 3690),然后验证防火墙是否放行3690端口,最后检查仓库配置文件语法是否正确。

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