簡介

在生產環境中,我們經常需要在伺服器開機後自動啟動某些應用或服務。在這篇文章中,我將示範如何使用 systemd 在 Ubuntu 系統開機時自動啟動一個 Node.js 應用。

步驟

  1. 安裝必要的軟件
    首先,確保您已經在系統上安裝了 Node.js 和 npm。

  2. 準備 Node.js 應用
    假設您的 Node.js 應用位於 /var/www/my-code,並且您已經在該目錄下有一個 package.json 檔案,其中定義了一個名為 preview 的腳本。

  3. 創建 systemd 服務檔
    執行以下命令以創建一個新的 systemd 服務檔:

sudo nano /etc/systemd/system/my-code.service

在這個檔案中,加入以下內容:

[Unit]
Description=my-code Service
After=network.target

[Service]
WorkingDirectory=/var/www/my-code
ExecStart=/usr/bin/npm run preview
User=your-username
Group=your-group
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

儲存並關閉檔案。

  1. 啟用和啟動服務
    執行以下命令以重新載入 systemd 配置、啟用和啟動您的服務:
sudo systemctl daemon-reload
sudo systemctl enable my-code
sudo systemctl start my-code

解決問題

  1. 檢查服務狀態
    如果您遇到任何問題,可以使用以下命令來檢查服務狀態:
sudo systemctl status my-code
  1. 查看日誌
    使用以下命令來查看更多的錯誤資訊:
journalctl -xe -u my-code
  1. 常見問題解決
    確保您的 Node.js 應用路徑和用戶名/群組是正確的。
    確保 npm run preview 可以在 /var/www/my-code 目錄下手動執行。
最後修改日期: 2023 年 8 月 29 日

作者