在生產伺服器上管理 Node.js 應用程式通常需要進程管理器來確保您的應用程式順利運行並從崩潰中自動恢復。 PM2 是 Node.js 最受歡迎的進程管理器之一,提供強大的功能,例如進程監控、日誌管理和叢集模式。
如果您在 Google Cloud Ubuntu 執行個體上執行應用程序,您可能會遇到 PM2 進程僅對啟動它們的使用者可見的情況。如果您的伺服器有多個使用者(例如開發人員、系統管理員或自動部署腳本),這可能會出現問題。在這篇文章中,我們將逐步完成將 PM2 配置為系統範圍服務的步驟,使其可供伺服器上的所有使用者存取。
預設情況下,PM2 作為啟動它的使用者下的進程運行。這意味著,如果您作為一個使用者透過 SSH 登入伺服器並啟動 PM2 進程,則透過 SSH 登入的其他使用者將看不到該進程。為了解決這個問題,我們可以將 PM2 配置為在系統層級作為服務運作。這種方法有幾個優點:
在我們開始之前,請確保您具備以下條件:
為了確保所有使用者都可以存取PM2,應該全域安裝它。您可以使用 npm 全域安裝 PM2:
sudo npm install -g pm2
此指令將 PM2 安裝在全域 npm 目錄中,使其在系統範圍內可用。
接下來,我們需要將 PM2 設定為服務運行。這將允許 PM2 在系統層級管理進程,而不是綁定到特定的使用者會話。
執行以下命令產生 PM2 必要的啟動腳本:
pm2 startup
此命令可偵測您的 Ubuntu 實例使用的 init 系統(通常是 systemd),並提供需要使用 sudo 執行的命令,以將 PM2 配置為系統範圍的服務。輸出將如下圖所示:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u <username> --hp /home/<username>
這裡,應替換為最初設定 PM2 的使用者的使用者名稱。這可確保 PM2 進程連結到正確的使用者主目錄。
複製上一步輸出中提供的命令並執行它。例如:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
此命令建立一個 systemd 服務,該服務使用正確的環境變數和使用者上下文啟動 PM2。
如果您已經有在 PM2 下執行的進程,並且希望在重新啟動後仍保留該進程,則需要儲存目前進程清單。這將創建一個轉儲文件,PM2 將在系統啟動時使用該文件來恢復進程:
pm2 save
pm2 save 指令將目前託管進程清單儲存到 ~/.pm2/dump.pm2 中的 JSON 檔案中。 PM2 啟動時會自動載入此文件,確保您的應用程式在重新啟動後重新啟動。
為了確保PM2在系統啟動時自動啟動,您需要啟用該服務:
sudo systemctl enable pm2-johndoe
將 johndoe 替換為適當的使用者名稱。此命令啟用 PM2 服務,確保它在系統啟動時啟動。
現在 PM2 已配置為系統範圍的服務,伺服器上的任何使用者都應該可以存取它。要檢查進程的狀態或列出它們,任何使用者都可以運行:
pm2 list
此指令將顯示由系統範圍的 PM2 服務管理的進程列表,無論哪個使用者登入。
如果您需要 PM2 日誌可供多個使用者訪問,您可能需要調整檔案權限或配置 PM2 將日誌儲存在共用目錄中。這確保所有使用者都可以查看和管理 PM2 下運行的進程的日誌。
要更改日誌檔案目錄,可以使用下列環境變數:
export PM2_HOME=/path/to/shared/pm2/home
Set this in a global configuration file, like /etc/environment, to make it persistent across sessions.
Once PM2 is set up as a service, users can manage processes using standard PM2 commands. However, depending on the permissions and user roles, some commands might require sudo access. For example:
sudo pm2 list
This command will list the processes managed by the system-wide PM2 service, making it easier for administrators and developers to collaborate on server management.
Setting up PM2 as a system-wide service on your Ubuntu instance ensures that your Node.js applications are robustly managed and accessible to all users on the server. This setup is particularly useful in environments with multiple users or automated deployment processes, providing a reliable and centralized way to manage applications.
By following the steps outlined in this guide, you can ensure that PM2 is available to all users, your processes are automatically restarted after system reboots, and logs are easily accessible. This not only simplifies server management but also enhances the reliability of your applications in production.
Happy coding!
以上是在 Ubuntu 實例上設定 PMor 多用戶訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!