如何在 Linux (Ubuntu) 上将 Docusaurus 作为服务启动

How can I start Docusaurus as a service on Linux (Ubuntu)

大家好,我尝试在 ubuntu 上无头启动 Docusaurus V2 作为服务。目前我的 Docusaurus 文件夹中有一个脚本作为临时解决方案。当我用 ./start.sh:

启动它时它起作用

/var/www/citro-docs-2/start.sh

#!/bin/bash

npm run serve

我尝试创建这样的服务:

/etc/systemd/system/docusaurus.服务

[Unit]
Description=Docusaurus Service

[Service]
ExecStart=/var/www/citro-docs-2/start.sh
WorkingDirectory=/var/www/citro-docs-2

[Install]
WantedBy=multi-user.target

但是当我用 sudo systemctl start docusaurus.service 启动它并检查状态时,我得到了这些错误:

● docusaurus.service - Docusaurus Service
     Loaded: loaded (/etc/systemd/system/docusaurus.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-08-25 11:53:20 UTC; 4s ago
    Process: 3494 ExecStart=/var/www/citro-docs-2/start.sh (code=exited, status=1/FAILURE)
   Main PID: 3494 (code=exited, status=1/FAILURE)

Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at require (node:internal/modules/cjs/helpers:94:18)
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Object.<anonymous> (/var/www/citro-docs-2/node_modules/@docusaurus/c>
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Module._compile (node:internal/modules/cjs/loader:1101:14)
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153>
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Module.load (node:internal/modules/cjs/loader:981:32)
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/r>
Aug 25 11:53:20 citro-docs2 start.sh[3521]:     at node:internal/main/run_main_module:17:47
Aug 25 11:53:20 citro-docs2 systemd[1]: docusaurus.service: Main process exited, code=exited, status=1/FAILURE
Aug 25 11:53:20 citro-docs2 systemd[1]: docusaurus.service: Failed with result 'exit-code'.

我找到了一个可以直接启动 .js 文件的解决方案:How do I run a node.js app as a background service? 但我不知道这是否也适用于 Docusaurus。至少我不知道应该从哪个 .js 文件开始。如果有人能提供帮助就太好了。

是的,可以 运行 Docusaurus 作为 Ubuntu 上的一项服务。值得一提的是,您在此处尝试执行的操作对于 Node.js 应用程序来说是很正常的。毕竟,如果您不 运行 您的 Node.js 应用程序作为服务,那么一旦您关闭 shell 您曾经启动的应用程序,该服务就会停止 运行ning应用程序。

但是,似乎大多数人都没有 运行 Ubuntu 上的 Docusaurus,因为它“只是一个静态站点”,而静态站点并不真的需要一个完整的服务器来 运行上。例如,您可以 leverage GitHub Pages to run your docs site.

也就是说,Docusaurus 只是一个 Node.js 应用程序。它类似于所有其他 Node.js 应用程序,如果您愿意,您当然可以 运行 在 Ubuntu 中使用它。

查看 PM2 上的文档。

我将您的应用作为服务启动的方式是:

  1. 在您的 Ubuntu 服务器上安装 Node.js(如果尚未安装)
  2. 通过 npm install -g pm2
  3. 在您的服务器上全局安装 pm2
  4. 导航到您的应用程序目录,然后 运行 npm install 安装您的应用程序的依赖项。
  5. 现在你可以运行pm2 start /var/www/citro-docs-2/start.sh --name myDocsSite

您的 Docusaurus 应用程序现在应该 运行ning。要阻止它,您可以 运行 pm2 stop myDocsSite.