Nodejs服务器部署网站的问题
Nodejs服务器部署网站的问题
我用node做的网站,ssh连接服务器,用node xxx.js监听后,那我不能退出做别的事情了吗?能让node后台运行吗?
当然可以!当你使用 Node.js 在服务器上部署网站时,通常需要让 Node.js 应用程序在后台持续运行。这样你就可以退出 SSH 会话而不会影响应用程序的运行。
使用 nohup
命令
nohup
是一个常用的命令,可以在你退出 SSH 会话后继续运行进程。你可以使用以下命令:
nohup node xxx.js &
这里:
nohup
表示不挂断(no hang up),即使终端关闭,进程也会继续运行。&
表示将进程放到后台运行。
运行后,输出会被重定向到 nohup.out
文件中,除非你指定了其他文件。
使用 screen
或 tmux
screen
和 tmux
是两个强大的终端复用工具,可以帮助你在同一个终端会话中运行多个任务,并且即使你断开 SSH 连接,这些任务仍然会继续运行。
使用 screen
-
启动一个新的
screen
会话:screen -S mysession
-
在
screen
会话中运行你的 Node.js 应用:node xxx.js
-
按
Ctrl+A
然后按D
键,从screen
会话中分离出来。 -
重新连接到
screen
会话:screen -r mysession
使用 tmux
-
启动一个新的
tmux
会话:tmux new -s mysession
-
在
tmux
会话中运行你的 Node.js 应用:node xxx.js
-
按
Ctrl+B
然后按D
键,从tmux
会话中分离出来。 -
重新连接到
tmux
会话:tmux attach -t mysession
使用 pm2
进行进程管理
pm2
是一个非常流行的 Node.js 进程管理工具,可以让你的应用程序在后台持续运行,并提供更高级的功能如日志管理和自动重启。
-
安装
pm2
:npm install pm2 -g
-
使用
pm2
启动你的应用:pm2 start xxx.js
-
查看
pm2
的进程列表:pm2 list
-
停止
pm2
管理的进程:pm2 stop xxx
-
重启
pm2
管理的进程:pm2 restart xxx
通过这些方法,你可以确保你的 Node.js 应用程序在服务器上稳定运行,并且你可以在 SSH 会话中自由地执行其他任务。
或者 说 怎么部署node程序到生产服务器上?
- 可以自己写个守护进程
- 用forever模块
正常部署node的网站都是用模块吗
forever这个?
用云服务器吧,部署维护很简单
不想用托管的服务,就想自己配置
设置个cluster,然后直接跑吧,放心node.js没有你想象中那么脆弱,我们之前公司的一个node.js项目放那半年了,也没人维护,还跑的好好的
cluster 是神马。。 我去看看吧 ,谢谢~
nohup命令
nohup node app.js
停止就
kill [PID]
不知道PID就
ps -e
当然,我觉得forever就很好了
好的,我试试forever。
当你使用 node xxx.js
在服务器上启动一个 Node.js 应用时,默认情况下,这个进程会与当前的终端会话绑定。一旦你断开 SSH 连接或者关闭终端,应用也会随之停止运行。为了解决这个问题,你需要让 Node.js 应用在后台持续运行。下面是一些方法来实现这一点。
方法1: 使用 nohup
你可以使用 nohup
(no hang up)命令使进程在后台运行,并且即使终端会话结束,进程也不会被挂起。
nohup node xxx.js &
这条命令会让 xxx.js
后台运行,而 nohup
会将输出重定向到 nohup.out
文件中。你可以通过以下方式查看输出:
tail -f nohup.out
方法2: 使用 pm2
pm2
是一个流行的生产级进程管理器,适用于 Node.js 应用。它能让你的应用持续运行,并提供一些其他有用的特性,比如自动重启、负载均衡等。
首先,你需要全局安装 pm2
:
npm install pm2 -g
然后,你可以在服务器上启动你的应用:
pm2 start xxx.js
如果你想在服务器重启后仍然保持应用运行,可以使用以下命令保存当前的进程列表:
pm2 save
并且设置开机启动:
pm2 startup
以上就是两种常用的方法来让 Node.js 应用在后台持续运行。使用 pm2
不仅能简化部署过程,还能提高应用的稳定性。