svn服务端设为开机自启,核心是通过系统服务管理器以守护进程模式运行,确保不依赖终端和用户登录。linux systemd系统使用svnserve.service文件配置,sysv init系统通过/etc/init.d脚本注册,windows则用sc命令注册为服务并指定--service参数。

Linux(systemd 系统,如 CentOS 7+/Ubuntu 16.04+)
推荐使用 systemd 管理,避免老旧的 `/etc/rc.local` 或 `init.d` 脚本。
- 确认已安装 SVN:
yum install subversion(CentOS)或apt install subversion(Ubuntu) - 创建仓库并配置好
svnserve.conf、passwd、authz(尤其注意取消注释anon-access、auth-access、password-db等关键行,且前面无空格) - 编辑 systemd 服务文件:
/lib/systemd/system/svnserve.service(或/etc/systemd/system/svnserve.service) - 内容示例(请按实际路径调整):
Description=Subversion protocol daemon
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS
Restart=on-failure
User=svn
Group=svn
[Install]
WantedBy=multi-user.target
其中 /etc/sysconfig/svnserve 定义 OPTIONS="-r /home/svn"(指定仓库根目录);User/Group 建议用专用低权限账户(如 useradd -r -d /var/svn -s /sbin/nologin svn)
- 重载配置:
systemctl daemon-reload - 启用开机自启:
systemctl enable svnserve - 立即启动:
systemctl start svnserve - 验证:
systemctl status svnserve+netstat -tlnp | grep :3690
Linux(SysV init 系统,如 Ubuntu 14.04 或旧版 Debian)
通过 `/etc/init.d/` 脚本 + `update-rc.d` 实现。
- 新建脚本:
/etc/init.d/svnserve,内容含标准 LSB 头部和启动逻辑 - 关键执行行示例:
/usr/bin/svnserve -d -r /home/svn --pid-file /var/run/svnserve.pid - 赋予可执行权限:
chmod +x /etc/init.d/svnserve - 注册到运行级:
update-rc.d svnserve defaults - 手动测试:
service svnserve start,再检查端口
Windows 系统
将 svnserve.exe 注册为 Windows 服务,真正实现“开机即启、无人值守”。
- 以管理员身份打开 CMD(PowerShell 不兼容部分转义规则)
- 执行注册命令(路径含空格必须双引号包裹,内部引号需转义):
说明:--service 是关键参数,表示以 Windows 服务模式运行;-r 后跟的是仓库父目录(不是单个库路径);depend= Tcpip 确保网络就绪后再启动
- 启动服务:
sc start SVNService或在「服务」管理器中手动启动 - 验证:任务管理器 → 服务标签页,或
netstat -ano | findstr :3690 - 如需修改,先
sc stop SVNService,再sc delete SVNService重建
关键注意事项
- 路径务必用绝对路径,尤其是
svnserve二进制位置和仓库根目录(环境变量在服务上下文中可能未加载) - Linux 下若用非 root 用户运行,确保该用户对仓库目录有完整读写权限(
chown -R svn:svn /home/svn) - 防火墙需放行 TCP 3690 端口(
firewall-cmd --add-port=3690/tcp --permanent) - Windows 注册后,服务默认以 Local System 身份运行,若仓库在 NTFS 网络路径或需特定权限,可在服务属性 → 登录页中指定账户











