如何使用pm2來運行Node.js應用程式

這是一篇介紹如何在Linux上管理Node進程並透過GitHub Webhooks自動重啟它們的技術文章。 pm2是一個非常有用的Linux進程管理工具。 我在幾個項目中使用過它,現在我想告訴你如何使用它! 特別是我將使用它在DigitalOcean VPS上運行一個Node.js應用程式,並設置當我們將應用程式的更新推送到GitHub存儲庫時,pm2將會被觸發,從GitHub更新應用程式並重啟它。 聽起來很酷吧?那我們開始吧! 首先,在DigitalOcean上註冊並按照我的教程创建一個VPS。 重要提示:在DigitalOcean上使用NodeJS映象,它已經設置了pm2和node,而且除了root用戶外還有一個nodejs用戶。 當你的VPS運行起來之後,我們可以開始了。 確保你使用nodejs用戶進行ssh登錄。當以root身份登录時,只需運行su nodejs以使用該用戶。 你在VPS上運行的示例Node.js應用程式位於/var/www/html/文件夾中,它由hello.js文件組成。 應用程式的部署/運行已經通過pm2程序進行管理,它是一個守護進程管理器。 你可以使用pm2 list命令來查看現在正在運行的所有應用程序: 如果你對應用程式做任何更改,這些更改將在重新啟動應用程式之前不會生效: pm2 restart hello 你可以停止正在運行的應用程式: pm2 stop hello 如果你嘗試重新加載頁面,這將在瀏覽器中產生一個錯誤: 你可以運行: pm2 start hello 將應用程式重新啟動。 pm2的好處是,當系統重新啟動時,它會自動重新運行應用程序。 現在你已經看到了內置的Hello World的運行方式,讓我們部署另一個應用程式。 讓我們停止當前的示例應用程式: pm2 stop hello 並在/var/www/html中創建一個名為test的文件夾: mkdir test 進入該文件夾: cd test 運行以下命令: npm init -y 然後安裝Express: npm install express 現在運行nano app.js並添加以下代碼: const express = require("express") const app = express() app.get("/", (req, res) => res.send("Hello World!")) app.listen(3000, () => console....

重新啟動 Node 進程,而不更改檔案

我有需要運行一個 Node 專案,如果出現某些原因失敗,可以再次運行它。 我想到使用 nodemon,它是當檔案發生變化時重新啟動 Node 進程的方式。 我以為它也會在進程崩潰時重新啟動,但事實並非如此。 因此,我找到了這個解決方案。 如果進程崩潰,我使用命令行在主要應用檔案上運行 touch 命令,這樣 nodemon 就會檢測到檔案的變化並重新啟動進程: nodemon -x 'node app.js || touch app.js' 簡單而有效。 當然,在真實的環境中,你會使用像 pm2 這樣的強大解決方案(請參考我的教程如何使用 pm2 運行 Node.js 應用程式),但這對於我在本機運行幾小時的需求來說是有效的。 更新:另一個選擇是使用 Forever https://www.npmjs.com/package/forever