首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用systemctl systemd启动svnserve

如何使用systemctl systemd启动svnserve
EN

Stack Overflow用户
提问于 2016-07-05 15:35:08
回答 5查看 18.9K关注 0票数 7

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

代码语言:javascript
复制
[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的参数放在这里。

有什么可以改进的?

EN

回答 5

Stack Overflow用户

发布于 2016-11-14 15:49:00

这里有一个建议,用一个专用的svn服务帐户和适当的日志记录来设置svnserve服务"the-Debian-way“。根据FHS的说法,存储库应该存储在/srv/

代码语言:javascript
复制
mkdir -p /srv/svn/repos; chown svn /srv/svn/repos

首先,systemd /etc/systemd/system/svnserve.service的服务配置

代码语言:javascript
复制
[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的服务启动选项

代码语言:javascript
复制
# svnserve options
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root /srv/svn/repos --log-file /var/log/svnserve/svnserve.log"

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

代码语言:javascript
复制
mkdir /var/log/svnserve; chown svn /var/log/svnserve
mkdir -p /run/svnserve; chown svn /run/svnserve

以日志循环配置/etc/logrotate.d/svnserve结束

代码语言:javascript
复制
/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
}

希望这能有所帮助。

票数 32
EN

Stack Overflow用户

发布于 2016-08-13 04:50:24

更新:我下面的答案已经过时了。这些改进和其他改进已经被合并到中。

我有两个改进:通常建议不要运行像root这样的东西。为此创建一个用户,例如'svn‘。在使用forking时,显式指定PID文件也是recommended。我的svnserve.service看起来和你的很像,除了我添加了下面这几行:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-06-24 02:57:05

对上面Yves Martin的出色回答的一条评论(我还没有代表点来评论):

当尝试使服务在引导时启动时,我会得到一个错误:

代码语言:javascript
复制
$ sudo systemctl enable svnserve.service
Failed to execute operation: Invalid argument

在做了一些研究之后,我发现显然不能将别名设置为与服务相同的名称。从svnserve.service的Install部分删除别名行解决了此问题:

代码语言:javascript
复制
[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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38197727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档