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它是对https://bbs.archlinux.org/viewtopic.php?id=190127的改编,但我在这里直接把svnserve的参数放在这里。
有什么可以改进的?
发布于 2016-11-14 15:49:00
这里有一个建议,用一个专用的svn服务帐户和适当的日志记录来设置svnserve服务"the-Debian-way“。根据FHS的说法,存储库应该存储在/srv/中
mkdir -p /srv/svn/repos; chown svn /srv/svn/repos首先,systemd /etc/systemd/system/svnserve.service的服务配置
[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第二,/etc/default/svnserve的服务启动选项
# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log"要正常工作,必须使用适当的所有权和pid文件的运行位置创建日志文件的文件夹:
mkdir /var/log/svnserve; chown svn /var/log/svnserve
mkdir -p /run/svnserve; chown svn /run/svnserve以日志循环配置/etc/logrotate.d/svnserve结束
/var/log/svnserve/*.log {
daily
missingok
rotate 14
compress
notifempty
create 640 svn adm
sharedscripts
postrotate
if /bin/systemctl status svnserve > /dev/null ; then \
/bin/systemctl restart svnserve > /dev/null; \
fi;
endscript
}希望这能有所帮助。
发布于 2016-08-13 04:50:24
更新:我下面的答案已经过时了。这些改进和其他改进已经被合并到中。
我有两个改进:通常建议不要运行像root这样的东西。为此创建一个用户,例如'svn‘。在使用forking时,显式指定PID文件也是recommended。我的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发布于 2018-06-24 02:57:05
对上面Yves Martin的出色回答的一条评论(我还没有代表点来评论):
当尝试使服务在引导时启动时,我会得到一个错误:
$ sudo systemctl enable svnserve.service
Failed to execute operation: Invalid argument在做了一些研究之后,我发现显然不能将别名设置为与服务相同的名称。从svnserve.service的Install部分删除别名行解决了此问题:
[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.targethttps://stackoverflow.com/questions/38197727
复制相似问题