背景介绍
在使用服务器运行我的个人主页之后,我编写了一些小脚本用于方便的维护jekyll服务器。但是依然存在着几个问题。
一个是运行jekyll server之后关闭终端,服务会停止的问题。这个问题很好解决,只需要在bundle exec jekyll之前使用nohup即可。
二是有时会还是会发生进程被杀死的问题。为了解决这个问题,我打算把jekyll 做为一个保护进程进行运行。
操作步骤
一、systemd服务文件
首先在/etc/systemd/syetem/目录下创建服务文件Jekyll.service。
vi /etc/systemd/system/jekyll.service
然后在服务文件内部编写以下内容
[Unit]
Description=Jekyll Server
After=network.target
[Service]
User=root #这里是运行服务的用户和用户组
Group=root
WorkingDirectory=/home/honest/honestblog # 这里是jekyll项目路径
ExecStart=/home/honest/run_blog.sh # 这里是守护进程开始时执行的脚本
Restart=always
[Install]
WantedBy=multi-user.target
二、检查路径的所有者和权限
接下来需要确认WorkingDirectory和ExecStart下的文件,服务文件设置的用户和用户组是否是所有者,是否具有访问和执行权限。
可以使用ls -al查看,chown或者chmod编辑。
在对应用户下执行/home/honest/run_blog.sh看有没有其他问题。
三、使用systemctl运行和管理jekyll服务
确认服务文件和权限无误以后使用systemctl daemon-reload,刷新systemd的设置。
使用systemctl start jekyll运行
使用systemctl status jekyll查看运行状态