如何使用systemctl systemd启动svnserve

use*_*443 5 svn systemd

debian jessie中的subversion包不包含systemd服务文件.什么是最简单的自动启动解决方案.我试试

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
#EnvironmentFile=/etc/conf.d/svnserve
#ExecStart=/usr/bin/svnserve --daemon $SVNSERVE_ARGS
ExecStart=/usr/bin/svnserve -d -r /svnFolder/repositories
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=svnserve.service
Run Code Online (Sandbox Code Playgroud)

它是https://bbs.archlinux.org/viewtopic.php?id=190127的改编版,但我直接在这里直接为svnserve设置参数.

什么可以改善?

Yve*_*tin 26

以下是使用具有适当日志记录svnserve的专用svn服务帐户运行服务"the-Debian-way" 的建议.根据FHS,存储库应存储在/srv/:

一,systemd的服务配置/etc/systemd/system/svnserve.service:

mkdir -p /srv/svn/repos; chown svn /srv/svn/repos
Run Code Online (Sandbox Code Playgroud)

二,服务启动选项/etc/default/svnserve:

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
RuntimeDirectory=svnserve
PIDFile=/run/svnserve/svnserve.pid
EnvironmentFile=/etc/default/svnserve
ExecStart=/usr/bin/svnserve $DAEMON_ARGS
User=svn
Group=svn
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

要正常工作,必须使用适当的所有权创建日志文件的文件夹:

# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log"
Run Code Online (Sandbox Code Playgroud)

以日志轮换配置结束/etc/logrotate.d/svnserve:

mkdir /var/log/svnserve; chown svn /var/log/svnserve
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Eri*_*icS 2

更新:我的以下答案已过时。这些改进和其他改进已融入Yves Martin 的出色解决方案中。

我有两个改进:一般建议不要以root身份运行此类东西。为此创建一个用户,例如“svn”。还建议在使用分叉时显式指定 PID 文件。我的 svnserve.service 看起来很像你的,除了我添加了以下行:

User=svn
Group=svn
PIDFile=/usr/local/svn/svnserve.pid
ExecStart=/usr/bin/svnserve  -d -r /usr/local/svn/repos --pid-file /usr/local/svn/svnserve.pid
Run Code Online (Sandbox Code Playgroud)