由于 seafile 依赖于 mysql (或其他数据库程序),在通过 update-rc.d 设置为开机启动后,开机时可能 mysql 还未启动结束,系统就调用了 seafile 的启动服务,这时就会出现启动失败的情况
更新 2016.12.9 编辑服务脚本
1 | sudo nano /etc/init.d/seafile-server |
在 # Required-Start: 字段后加入 mysql ,如下:
1 | #!/bin/sh |
注意关键行。表示该服务依赖于 mysql 服务,这样就会在 mysql 服务启动后才启动 seafile 服务。 重新加入开机启动
1 | sudo insserv -v -d /etc/init.d/seafile-server |
(在 debian6中 已经用 insserv 来替代 update-rc.d 管理开机启动) 接着重启系统,看看是否已经正常启动。
以下为延迟启动方法
检查 log 如下(/seafile/logs/seafile.ini.log)
1 | \[10/25/16 19:30:11\] ../common/session.c(132): using config file /home/pi/seafile/conf/ccnet.conf |
使用 update-rc.d 设置启动顺序依然不行,只能另辟蹊径使用脚本延迟启动。 先建立一个脚本 delayrun.sh
1 | sleep 10 |
延迟10秒再启动 service seafile-server 服务,这个命令的前提是 seafile-server 这个服务已经被添加到update-rc.d中管理(按照官方部署方案走的话应该都加了) 然后将该脚本赋予运行权限。
1 | chmod +x delayrun.sh |
加入开机启动 /etc/rc.local,在 exit 0 前面加入调用代码,如下
1 | _IP=$(hostname -I) || true |
注意修改 delayrun.sh 的路径。 由于延迟启动脚本有 sleep10秒的效果,所以必须在启动命令后面加上 & 符号,表示该命令执行在一个单独的进程中,不会影响后续的程序运行。 重起系统,不出意外已经可以正常启动seafile服务了。 这时可以将 seafile-server 服务从 update-rc.d 管理中去处掉了,反正也启动不了。用命令或者 sysy-rc-conf 工具都可以。
1 | sudo update-rc.d -f seafile-server remove |
tips:
使用这个方法前可以尝试用 update-rc.d 调整 seafile-server 的启动顺序,如果不行再使用延迟启动的方法。 update-rc.d 调整启动顺序
1 | sudo update-rc.d seafile-server defaults 255 |
调整 mysql 启动顺序
1 | sudo update-rc.d mysql defaults 1 |