在Linux系统中启动SVN服务需要经过安装、配置仓库、启动服务及设置开机自启等步骤,以下是详细操作流程:
安装SVN服务
首先需要安装Subversion(SVN)服务端软件,不同Linux发行版的安装命令不同:
| 发行版 | 安装命令 |
|————–|———————————–|
| Ubuntu/Debian | sudo apt update && sudo apt install subversion
|
| CentOS/RHEL | sudo yum install subversion
或 sudo dnf install subversion
|
| Arch Linux | sudo pacman -S subversion
|
安装完成后,可通过svnserve --version
命令验证是否安装成功,输出版本信息即表示安装成功。
创建SVN仓库
SVN服务需要依赖仓库存储数据,使用svnadmin create
命令创建仓库,例如在/home/svn
目录下创建myrepo
仓库:
sudo mkdir -p /home/svn # 创建仓库根目录 sudo svnadmin create /home/svn/myrepo # 创建名为myrepo的仓库
创建后,仓库目录结构如下:
myrepo/
├── conf/ # 配置文件目录
│ ├── svnserve.conf # 主配置文件
│ ├── passwd # 用户密码文件
│ └── authz # 权限控制文件
├── db/ # 数据文件目录
├── hooks/ # 钩子脚本目录
└── format # 仓库版本格式文件
配置仓库访问权限
修改主配置文件svnserve.conf
编辑/home/svn/myrepo/conf/svnserve.conf
,取消注释并修改以下配置:
[general] anon-access = none # 禁止匿名访问 auth-access = write # 允许认证用户读写 password-db = passwd # 密码文件路径 authz-db = authz # 权限控制文件路径 realm = My SVN Repository # 仓库认证领域(自定义名称)
注意:配置文件中顶级的
[general]
不能省略,且每行配置前不能有空格。
设置用户密码
编辑/home/svn/myrepo/conf/passwd
,添加用户及密码,格式为用户名 = 密码
:
[users] user1 = 123456 user2 = password123
配置权限控制
编辑/home/svn/myrepo/conf/authz
,设置用户或用户组的访问权限,
[groups] admin = user1 # 创建admin组,包含user1 [/] # 根目录权限 @admin = rw # admin组读写权限 user2 = r # user2只读权限
启动SVN服务
使用svnserve
命令启动SVN服务,常用参数如下:
-d
:后台守护进程模式运行-r
:指定仓库根目录(多个仓库可共用同一服务)-listen-host
:指定监听地址(默认监听所有地址)-port
:指定端口号(默认3690)
示例命令:
# 方式1:指定单个仓库启动 sudo svnserve -d -r /home/svn/myrepo # 方式2:指定仓库根目录(可管理该目录下所有仓库) sudo svnserve -d -r /home/svn # 方式3:指定监听地址和端口(如监听内网IP 192.168.1.100,端口3690) sudo svnserve -d -r /home/svn --listen-host 192.168.1.100 --port 3690
启动后,可通过ps aux | grep svnserve
查看进程是否运行,或使用netstat -tuln | grep 3690
检查端口是否监听。
设置开机自启
使用Systemd(CentOS 7+/Ubuntu 16.04+)
创建服务文件/etc/systemd/system/svnserve.service
:
[Unit] Description=Subversion Protocol Daemon After=network.target [Service] Type=forking User=svn # 运行用户(需提前创建:sudo useradd -r -s /bin/false svn) Group=svn ExecStart=/usr/bin/svnserve -d -r /home/svn --listen-host 0.0.0.0 Restart=on-failure [Install] WantedBy=multi-user.target
然后执行以下命令启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable svnserve # 开机自启 sudo systemctl start svnserve # 立即启动
使用SysVinit(旧版系统)
编辑/etc/rc.local
文件,添加启动命令:
/usr/bin/svnserve -d -r /home/svn --listen-host 0.0.0.0
赋予执行权限:sudo chmod +x /etc/rc.local
防火墙配置
若需远程访问,需开放SVN默认端口3690(以CentOS 7为例):
sudo firewall-cmd --permanent --add-port=3690/tcp sudo firewall-cmd --reload
Ubuntu系统可使用ufw
开放端口:sudo ufw allow 3690/tcp
。
相关问答FAQs
Q1:SVN服务启动后,客户端连接提示“Could not connect to the server”可能是什么原因?
A:可能原因包括:① 防火墙未开放3690端口;② SVN服务未正常启动(检查ps aux | grep svnserve
);③ 仓库配置文件(如svnserve.conf
)语法错误或权限未正确设置;④ 监听地址与客户端访问地址不匹配(如服务监听内网IP,客户端使用外网IP访问)。
Q2:如何修改SVN服务的默认端口(3690)?
A:启动服务时通过-port
参数指定新端口,例如sudo svnserve -d -r /home/svn --port 8080
;若使用Systemd管理服务,需修改svnserve.service
中的ExecStart
参数,添加--port 8080
,然后执行sudo systemctl restart svnserve
重启服务,同时防火墙需开放新端口(如8080)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26802.html