背景介绍

在使用服务器运行我的个人主页之后,我编写了一些小脚本用于方便的维护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查看运行状态