使用systemd运行hexo服务

通常hexo被用于创建静态站点,然后部署在GitHub等支持静态网站托管的平台。但hexo本身也支持启动一个简单的http server,用于在浏览器中实时显示编辑的内容。如果我们能让这个服务运行在后台,一方面无需每次手动拉起,另一方面可以当作一个小站点使用,并且支持实时更新。

安装Node.js

如果要让Node.js应用在开机后以root用户启动,我们需要把Node.js安装到根目录,而不是家目录。这里以Debian为例,其它系统参可以参考Installing Node.js via package manager

1
2
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo bash -
sudo apt install -y nodejs

安装hexo

1
sudo npm install -g hexo-cli

创建systemd服务

创建/lib/systemd/system/hexo.service文件,将/home/[yourdirectory]/blog替换成hexo的根目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Service]
WorkingDirectory=/home/[yourdirectory]/blog
ExecStart=/bin/hexo server -p80
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=hexo
User=root
Group=root
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

启动hexo服务

1
2
3
sudo systemctl enable hexo.service
sudo systemctl start hexo.service
sudo systemctl status hexo.service

参考

A systemD unit file for Hexo