wiki.js是一个开源的知识管理系统,可以自用,也可以作为团队的知识管理系统使用。具体的安装方式可参考:https://docs.requarks.io/install
本文主要介绍wiki.js安装完成后,如何作为一个后台服务自动运行,而不是每次都通过node server执行。
在wiki.js的安装指导中,有一个章节是介绍如何将wiki.js作为一个后台服务运行的,具体的配置方法如下:
1、在/etc/systemd/system目录下新建wiki.service文件
2、复制如下内容到service文件中
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=nobody
Environment=NODE_ENV=production
WorkingDirectory=/tools/wiki-js
[Install]
WantedBy=multi-user.target
3、重载systemd
systemctl daemon-reload
4、启动wiki服务
systemctl start wiki
5、设置开机启动
systemctl enable wiki
按照如上方式设置后,使用journalctl -u wiki.service查看日志,发现wiki.js服务启动失败,通过浏览器访问,确实也是失败的。
1月 16 10:24:23 ZHANGZHIJUN systemd[1]: Started Wiki.js.
1月 16 10:24:23 ZHANGZHIJUN systemd[48476]: wiki-js.service: Changing to the requested working directory failed: Permis>
1月 16 10:24:23 ZHANGZHIJUN systemd[48476]: wiki-js.service: Failed at step CHDIR spawning /data/tools/node-v20.5.1-lin>
1月 16 10:24:23 ZHANGZHIJUN systemd[1]: wiki-js.service: Main process exited, code=exited, status=200/CHDIR
1月 16 10:24:23 ZHANGZHIJUN systemd[1]: wiki-js.service: Failed with result 'exit-code'.
1月 16 10:24:23 ZHANGZHIJUN systemd[1]: wiki-js.service: Scheduled restart job, restart counter is at 5.
通过分析以上日志,应该是访问权限的问题。网上查阅了systemctl的使用方法,发现service段,可以增加两个参数User和Group,两个参数的描述如下:
User: 指定运行服务的用户,会影响服务对本地文件系统的读写执行权限。
Group: 指定运行服务的用户组,会影响服务对本地文件系统的访问权限。
因此将wiki.service的service段修改User和增加Group两个字段后重启加载和启动服务,wiki.js可以正常启动了。修改后的配置文件如下:
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=zhangzhijun
Group=zhangzhijun
Environment=NODE_ENV=production
WorkingDirectory=/tools/wiki-js
[Install]
WantedBy=multi-user.target
参考资料:
https://docs.requarks.io/install
https://www.cnblogs.com/WindrunnerMax/p/14407204.html