我通过ssh连接到我的远程服务器.然后我用Forever启动我的node.js应用程序.一切正常,直到我关闭我的控制台窗口.即使我通过ssh关闭连接,如何在我的远程服务器上运行node.js app FOREVER?我只是想启动一个应用程序并关闭我的copmputer.我的应用程序应该在远程服务器的后台运行.
小智 57
您可能还想考虑使用upstart实用程序.它将允许您像服务一样启动,停止和重新启动节点应用程序.Upstart可以配置为在崩溃时自动重启您的应用程序.
安装新贵:
sudo apt-get install upstart
Run Code Online (Sandbox Code Playgroud)
为您的应用程序创建一个简单的脚本,如下所示:
#!upstart
description "my app"
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
env NODE_ENV=production
exec node /somepath/myapp/app.js >> /var/log/myapp.log 2>&1
Run Code Online (Sandbox Code Playgroud)
然后将脚本文件(myapp.conf)复制到/ etc/init并确保将其标记为可执行文件.然后可以使用以下命令管理您的应用程序:
sudo start myapp
sudo stop myapp
sudo restart myapp
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 29
两个答案:一个用于Windows,一个用于*nix:
在Windows上,您可以使用该start命令启动与以下实例断开连接的进程cmd.exe:
start node example.js
Run Code Online (Sandbox Code Playgroud)
在*nix上,有两个方面:断开进程与控制台的连接,并确保它不接收HUP信号("挂断"),大多数进程(包括Node)将通过终止来响应.前者可能是可选的,但后者是必要的.
从控制台断开连接非常简单:通常,您只需&在命令行末尾放置一个&符号():
# Keep reading, don't just grab this and use it
node example.js &
Run Code Online (Sandbox Code Playgroud)
但上述内容并未保护过程免受HUP信号影响.HUP关闭shell(控制台)时,程序可能会或可能不会接收,具体取决于所调用的shell选项huponexit.如果huponexit是true,则进程将HUP在shell退出时收到,并且可能会终止.
huponexit默认false使用我使用的各种Linux变体,实际上我很乐意使用上面的内容多年,直到coderjoe和其他人帮助我理解(在一个很长的评论流中,可能已被删除的答案)我依赖在huponexit存在false.
为了避免huponexit可能存在true于您的环境中,请明确使用nohup.nohup运行过程免受HUP信号的影响.你这样使用它:
nohup node example.js > /dev/null &
Run Code Online (Sandbox Code Playgroud)
要么
nohup node example.js > your-desired-filename-or-stream-here &
Run Code Online (Sandbox Code Playgroud)
重定向很重要; 如果你不这样做,你会得到一个最终nohup.out包含从输出文件stdout和stderr.(默认情况下,nohup重定向stderr到stdout,如果stdout输出到终端,它会将其重定向到nohup.out.如果从终端接收,nohup也会重定向stdin,因此我们不必这样做.请参阅man nohup或info coreutils 'nohup invocation'了解详细信息.)
通常对于这些事情,您希望使用进程监视器,以便在进程因某种原因崩溃时,监视器会重新启动它,但上述操作适用于简单的情况.
tqu*_*ang 19
总是,简单是最好的,不需要暴发户,不需要永远,只是nohup:
nohup node file.js &
相信我,我正在为我的情况而奔跑!
jam*_*phy 12
我肯定会推荐pm2
npm install -g pm2
启动服务器:pm2 start [yourServerFile.js]
停止服务器:pm2 stop [yourServerFile.js]
关闭客户端和服务器将永远运行....如果应用程序崩溃,也将重新启动.
我已经在Ubuntu上运行节点服务器几个月没有问题
小智 8
您可以像这样使用npm永久安装:
sudo npm install -g forever
Run Code Online (Sandbox Code Playgroud)
或作为服务:
forever start server.js
Run Code Online (Sandbox Code Playgroud)
或停止服务
forever stop server.js
Run Code Online (Sandbox Code Playgroud)
列出所有正在运行的进程:
forever list
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55632 次 |
| 最近记录: |