如何在Ubuntu Linux上将Docusaurus设置为系统服务运行
问题原因
systemd默认运行环境的PATH变量不包含Node.js可执行文件的所在路径,同时默认使用root用户运行可能存在项目目录权限不匹配的问题,进而导致启动失败。
解决方案
步骤1:获取Node、npm的绝对路径
在终端执行以下两条命令,记录返回的路径:
which node which npm
示例返回值:
- node路径:
/usr/bin/node - npm路径:
/usr/bin/npm
步骤2:修改systemd服务配置
替换/etc/systemd/system/docusaurus.service的全部内容为以下配置,对应替换路径、用户参数即可:
[Unit] Description=Docusaurus Documentation Service After=network.target [Service] Type=simple # 替换为运行项目的用户,推荐使用非root用户如www-data User=www-data Group=www-data WorkingDirectory=/var/www/citro-docs-2 # 替换为步骤1获取的npm绝对路径 ExecStart=/usr/bin/npm run serve # 替换为Node.js可执行文件所在的目录,添加到PATH环境变量 Environment="PATH=/usr/bin" # 配置异常自动重启 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
如果要直接调用js文件启动,可将ExecStart替换为以下内容,对应替换node绝对路径即可:
ExecStart=/usr/bin/node node_modules/@docusaurus/core/bin/docusaurus.mjs serve
步骤3:重启服务验证
执行以下命令使配置生效并启动服务:
- 重载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start docusaurus.service - 设置开机自启:
sudo systemctl enable docusaurus.service - 查看运行状态:
sudo systemctl status docusaurus.service
如果启动仍异常,可执行sudo journalctl -u docusaurus.service -f查看实时运行日志排查具体问题。
内容的提问来源于stack exchange,提问作者Micha
相关产品推荐
相关产品推荐

