新手问问题,关于Nodejs服务器的问题
新手问问题,关于Nodejs服务器的问题
我的服务器是linux,拥有root权限,我用root权限启动node服务,正常运行,然后我在本地关掉 终端(mac os),服务也就跟着停了,请问怎么解决?我听有人ssh强行关闭会把进程一起关掉,要用exit,但是我启动这node怎么输入ssh命令呢?求助。还有就是如果我这边断网了,即使终端没有关闭服务也会关闭。求救
当然可以!你遇到的问题是因为当你关闭终端时,Node.js 进程也会随之被终止。这是因为终端关闭时,它会发送一个 SIGHUP(挂起信号)给所有子进程,导致它们被终止。为了解决这个问题,你可以使用一些工具来保持进程在后台运行。
解决方案 1: 使用 nohup
命令
nohup
是一个简单的方法,可以在你关闭终端后保持进程继续运行。
示例代码:
nohup node your_server.js &
解释:
nohup
:忽略挂起信号。your_server.js
:你的 Node.js 应用程序文件。&
:将进程放到后台运行。
查看日志文件:
默认情况下,nohup
会将输出重定向到 nohup.out
文件中。你可以通过以下命令查看日志:
tail -f nohup.out
解决方案 2: 使用 pm2
管理进程
pm2
是一个更强大的进程管理工具,它可以更好地管理 Node.js 应用程序,并提供更多的功能,如自动重启、负载均衡等。
安装 pm2
npm install pm2 -g
启动应用
pm2 start your_server.js
解释:
pm2 start your_server.js
:启动你的 Node.js 应用程序。pm2
会自动处理挂起信号和其他常见问题。
保存当前进程状态
pm2 save
查看应用状态
pm2 list
如果你断网了,但仍然想保持应用运行,可以考虑以下方法:
-
使用
tmux
或screen
:这些工具允许你在多个会话之间切换,并且即使你断开连接,会话仍然保持运行。-
安装
tmux
:sudo apt-get install tmux
-
创建一个新的
tmux
会话并启动 Node.js 应用:tmux new-session -s mysession node your_server.js
-
断开连接后,可以重新连接到
tmux
会话:tmux attach -t mysession
-
希望这些方法能帮助你解决问题!
这个是常见问题, 貌似终端打开的程序父进程是终端的, 终端退出跟着退出了
一个方案是用 byobu screen
那样的终端, 一直在服务器上保持登录状态
http://blog.csdn.net/lqhbupt/article/details/7786153
另外是用其他工具在后台部署 Node 进程的服务, 比如 forever
命令
http://www.bishen.org/content/25925993071
http://stackoverflow.com/questions/6524716/using-forever-with-node-js
服务器上程序部署还有更多的方案可以选… 等待高人深入讲
还没实践到这里,先学习一下。。。
可以使用nohup命令 nohup node app >out.txt &
&代表 后台运行 >out.txt 表示将错误输出至 out.txt
nohup 正解
这种方式启动的服务,如何关闭呢?
又去有回才安心。
对于你的问题,主要是因为你在本地终端中直接启动了Node.js服务,一旦关闭终端,进程也会被终止。为了解决这个问题,可以使用以下几种方法:
方法一:使用nohup
命令
你可以使用nohup
命令来启动Node.js服务,这样即使关闭终端,服务也不会停止。
nohup node your_script.js &
nohup
:表示不挂断地运行命令,即忽略SIGHUP信号。&
:表示将命令放到后台执行。
默认情况下,输出会被重定向到nohup.out
文件。如果你希望输出到指定文件,可以这样做:
nohup node your_script.js > output.log 2>&1 &
方法二:使用screen
或tmux
screen
和tmux
都是Linux中的终端复用工具,可以让你在一个物理终端上创建多个虚拟终端,并且即使你断开SSH连接,这些虚拟终端依然保持运行状态。
使用screen
-
启动一个新的
screen
会话:screen -S mysession
-
在该会话中启动Node.js服务:
node your_script.js
-
按下
Ctrl+A
,再按D
键,可以分离当前会话。 -
重新连接会话:
screen -r mysession
使用tmux
-
启动一个新的
tmux
会话:tmux new -s mysession
-
在该会话中启动Node.js服务:
node your_script.js
-
按下
Ctrl+B
,再按D
键,可以分离当前会话。 -
重新连接会话:
tmux attach -t mysession
方法三:使用forever
forever
是一个Node.js模块,可以让你的Node.js应用作为守护进程运行,即使退出终端,应用仍然会持续运行。
-
安装
forever
:npm install forever -g
-
使用
forever
启动Node.js服务:forever start your_script.js
-
查看所有正在运行的
forever
进程:forever list
通过以上方法,你可以确保Node.js服务即使在终端关闭或断网的情况下也能继续运行。