CentOS 7,seafile通过systemd 无法正常的自启动

环境:

CentOS7,使用systemd自动启,LNMP

问题:

seafile已经安装完成,并且也都可以正常启动使用(手动启动),现在碰到问题就是服务开机时无法自启动,出错提示如下


当然,开机完成后手动执行 systemctl start seafile.service 命令都是可以正常启动seafile

问题衍生:

在关闭mysql的情况下手动执行 systemctl start seafile.service 也会出现自动启时一样的错误,初步怀疑是mysql没有启动完成,但是 systemd 配置里已经加入了在 mysql.service 之后启动 seafile

附 seafile.service 文件内容

[Unit]
Description=Seafile Service
After=network.target mysql.service

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/usr/local/seafile/seafile-server-latest/seafile.sh start
ExecStart=/usr/local/seafile/seafile-server-latest/seahub.sh start-fastcgi

ExecStop=/usr/local/seafile/seafile-server-latest/seafile.sh stop
ExecStop=/usr/local/seafile/seafile-server-latest/seahub.sh stop

[Install]
WantedBy=multi-user.target

看起来确实像是 mysql 的问题,如果配置了 after = mysql.service 还是没用的话,可能是 mysql 还没有 ready, 可以试试把 seafile.sh start 改成 sleep 10 && seafile.sh start.

多谢提醒,茅塞顿开啊
在原来的 seafile.service 文件里加入 ExecStartPre=/bin/sleep 1 就成功解决了

1 个赞

你好,请问下,那你的seafile.service文件里加入了ExecStartPre=/bin/sleep 1这个字段,请问下在文件的什么地方加入,谢谢。我的环境是centos7.2 使用的是本地安装的mysql数据库,也是开机之后不能自动启动。

我也是Centos7.2,不过在脚本中没有使用ExecStartPre=/bin/sleep 1,我的解决方法是,在mariadb和memcached服务启动后,再运行脚本。(我用的数据库是mariadb,并加入了memcached的缓存)
如下:
`[Unit]
Description=Seafile Service
After=network.target mariadb.service memcached.service

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/usr/local/seafile/seafile-server-latest/seafile.sh start
ExecStart=/usr/local/seafile/seafile-server-latest/seahub.sh start-fastcgi

ExecStop=/usr/local/seafile/seafile-server-latest/seafile.sh stop
ExecStop=/usr/local/seafile/seafile-server-latest/seahub.sh stop

[Install]
WantedBy=multi-user.target`

注意前边和后边都没有·

seafile服务[root@34437cb700ee system]# cat seafile.service

[Unit]

Description=Seafile

After=network.target

[Service]

Type=forking

PIDfile=/opt/seafile/pids/seafile.pid
ExecStartPre=/bin/sleep 1

ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start

ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop

ExecReload=/opt/seafile/seafile-server-latest/seafile.sh restart

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target

seahub服务[root@34437cb700ee system]# cat seahub.service
[Unit]

Description=Seafile hub

After=network.target seafile.services

[Service]
Type=forking

PIDfile=/opt/seafile/pids/seahub.pid
ExecStartPre=/bin/sleep 1
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start

ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop

ExecReload=/opt/seafile/seafile-server-latest/seahub.sh restart

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target
你拿去修改下路径,我有加了pid,systemctl status seafile 能看到状态