[英]Node.js - Unable to run node server using forever
我正在嘗試使用永遠命令運行節點服務器。 我使用以下方法在全球范圍內永久安裝:
npm install forever -g
除了永遠建議您聲明的配置警告之外,這里沒有問題。 如果您在那里看到最后的消息,它會告訴您它已經處理了您的腳本。 只需運行forever list
,您應該會看到您的腳本正在運行。
我在通過 yum 存儲庫( yum install npm
) yum 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.