簡體   English   中英

"Node.js - 無法永遠運行節點服務器"

[英]Node.js - Unable to run node server using forever

我正在嘗試使用永遠命令運行節點服務器。 我使用以下方法在全球范圍內永久安裝:

npm install forever -g

除了永遠建議您聲明的配置警告之外,這里沒有問題。 如果您在那里看到最后的消息,它會告訴您它已經處理了您的腳本。 只需運行forever list ,您應該會看到您的腳本正在運行。

我在通過 yum 存儲庫( yum install npmyum install npm然后永遠yum install npm時遇到了同樣的事情,而當我通過 shell 腳本安裝 node 和 npm 然后永遠安裝時,它不會發生。 它必須與包安裝程序的公式有關,或者可能缺少帶有安裝程序標志的別名以在幕后設置這些值。

這些並不意味着它不起作用。 見下文,我使用來自節點站點的示例代碼創建了一個 js 文件並手動運行它(我刷新了防火牆以暫時為應用程序打開端口,但您不需要它):

[root@app1 ~]# vi example.js
[root@app1 ~]# apf -f
apf(23924): {glob} flushing & zeroing chain policies
apf(23924): {glob} firewall offline
[root@app1 ~]# node example.js 
Server running at http://127.0.0.1:1337/

然后我開始使用永遠的應用程序:

^C[root@app1 ~]# forever start example.js 
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: example.js

現在我檢查我的應用程序是否正在運行:

[root@app1 ~]# forever list
info:    Forever processes running
data:        uid  command       script     forever pid   logfile                 uptime       
data:    [0] dan1 /usr/bin/node example.js 23976   23978 /root/.forever/dan1.log 0:0:0:27.320 
[root@app1 ~]#

這解決了我的問題:

forever start -c node [path/to/app]

“-c”表示 - 運行命令; 然后通過 nodejs 運行

這樣 - 默認情況下您會獲得 Respawn 分鍾。 1000 毫秒正常運行時間

摘自: https : //github.com/nodejitsu/forever/issues/422 ,由“Basarat”

如果您使用帶有 express 框架的 node js,那么腳本將不會開始使用:

forever start app.js

首先停止所有正在運行的應用程序:

forever stopall

當使用這個 Express 框架時,它必須以:

forever start ./bin/www

首先停止所有正在運行的應用程序:

forever stopall

然后使用這個命令。 它對我有用並解決了我的問題:

forever -w ./bin/www

你應該在 package.json 文件中找到它:

"scripts": {
    "start": "node ./bin/www"
  }

我希望它能幫助你。

也產生相同類型的輸出但不啟動應用程序的一件事是,如果forever無法寫入指定的日志文件。 我遇到過日志文件變得太大的情況,這導致進程無法啟動。

首先更改您的 package.json 腳本,例如

"scripts": {
      "start": "forever ./bin/www.js"
 }

比在 linux 控制台上啟動此命令:sudo npm start

對於 Windows 只是 :npm start

我今天剛剛在 AWS Lightsail 服務器上遇到了這個問題,這里或其他地方的答案都沒有任何影響。 一切正常,直到從 NodeJS 10.x 升級到 13.x。 我嘗試永久刪除並重新安裝,更改文件和目錄的權限等,但我一直收到 EACCES 錯誤。 問題似乎是永遠無法在其 .forever 目錄中創建目錄。 唯一有效的是執行以下操作:

1) 刪除 .forever 文件夾及其所有子文件夾和內容。 對我來說,這是按如下方式完成的:sudo rm -rf /home/bitnami/.forever

2) 手動重新創建 .forever 文件夾:sudo mkdir /home/bitnami/.forever

3)手動設置.forever文件夾的權限:sudo chmod -R o+rwx /home/bitnami/.forever

4) 手動重新創建 .forever/pids 文件夾:sudo mkdir /home/bitnami/.forever/pids

5) 手動設置 .forever/pids 文件夾的權限:sudo chmod -R o+rwx /home/bitnami/.forever/pids

6) 手動重新創建 .forever/sock 文件夾:sudo mkdir /home/bitnami/.forever/sock

7) 手動設置 .forever/sock 文件夾的權限:sudo chmod -R o+rwx /home/bitnami/.forever/sock

8) 使用 sudo 命令再次通過永遠運行我的 NodeJS 應用程序。

9) 列出永遠正在運行的進程,並驗證我的應用程序是否在那里。

我不確定為什么我必須經歷所有這些,因為遞歸設置權限應該做同樣的事情,但是在這樣做之后,永遠開始像以前一樣完美運行。

希望這可以幫助某人。

forever stopall

cd /<app-folder>

forever -w ./bin/www

如果你設置了一個全局模塊(-g 選項)“永遠”在 $path 中

forever start app.js

應該管用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM