簡體   English   中英

為什么注銷后永遠無法使nodejs進程運行?

[英]Why is forever not working to keep my nodejs process running after I logout?

我在家里設置了一個Ubuntu服務器,用於托管由nodejs服務的Web應用程序。 我的服務器上有一個連接應用程序。 當我進去並做類似的事情時

node app.js &> server.log &
logout

然后,我注銷后,服務器就像被擱置一樣,它將不處理任何請求,但是當我重新登錄時,它將再次開始處理請求。

因此,看起來永久包裝旨在解決此問題。 所以永遠安裝並執行此操作:

forever start -al forever.log -ao serverout.log -ae servererror.log app.js

我從此命令得到相同的結果。 SSH進入時,我的服務器將處理請求,但是注銷后,服務器將停止處理請求。 我還可以做些什么來解決這個問題?

考慮使用cron 您可以在不帶任何選項的bash中運行crontab來獲取您帳戶的cron配置。 您可能需要root用戶訪問權限,然后必須使用-u選項指定用戶帳戶。 有關發行版實施的更多信息,請參見man crontab

我敢肯定有更好的在那里,但是是對的cron的語法一個體面的教程。

我不會為此使用Forever,而是要使用具有Monit功能的 Supervisord等生產就緒型工具,請參閱在單個服務器上運行和管理nodejs應用程序

對於每個應用程序,只需創建一個Supervisor配置文件,如下所示:

[program:myapp]
command=node myapp.js                   ; the program (relative uses PATH, can take args)
directory=/www/app/                     ; directory to cwd to before exec (def no cwd)
process_name=myapp                      ; process_name expr (default %(program_name)s)
autorestart=true                        ; whether/when to restart (default: unexpected)
startsecs=1                             ; number of secs prog must stay running (def. 1)
stopwaitsecs=10                         ; max num secs to wait b4 SIGKILL (default 10)
stdout_logfile=/var/log/myapp.log       ; stdout log path, NONE for none default AUTO
stderr_logfile=/var/log/myapp.err.log   ; stderr log path, NONE for none default AUTO

更多信息: Brin.gr上的NodeJS流程管理

暫無
暫無

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

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