关闭终端后socket.io服务停止运行,cPanel共享主机下如何实现24小时运行?
cPanel共享主机socket.io服务后台常驻解决方案
你遇到的是终端会话结束时,绑定在会话上的前台进程被系统自动挂断的典型问题,以下3种方案均适配cPanel共享主机环境,无需保持终端开启即可实现服务7*24小时运行:
方案1:使用nohup命令(无需额外安装工具,快速临时部署)
nohup可以让进程忽略终端挂断信号,配合后台运行符即可实现脱离终端运行:
- 启动命令:
nohup /opt/cpanel/ea-nodejs10/bin/node index.js & - 执行后命令行输出的数字就是进程PID,服务运行日志会默认写入当前目录的
nohup.out文件 - 停止服务的方法:先执行
ps aux | grep index.js查询到对应进程PID,再执行kill 你的进程PID即可
方案2:使用cPanel自带的Node.js应用管理器(最稳定,推荐优先用)
大部分主流cPanel面板都预装了Node.js托管功能,无需命令行操作即可实现进程自动托管,服务崩溃、服务器重启都会自动拉活:
- 登录cPanel面板,在「软件」分类下找到Node.js 应用程序入口
- 点击「创建应用」,选择Node.js版本为
ea-nodejs10,指定应用的根目录路径、应用启动文件为index.js,配置绑定的域名/端口后点击启动即可
方案3:使用pm2进程管理器(功能最全,适合需要日志管理、自动重启的场景)
pm2是Node.js生态常用的进程管理工具,支持崩溃自动重启、日志查看、批量管理进程等功能:
- 先执行命令安装pm2到用户目录:
/opt/cpanel/ea-nodejs10/bin/npm install pm2 -g - 启动服务命令:
~/.npm-global/bin/pm2 start index.js --interpreter /opt/cpanel/ea-nodejs10/bin/node - 执行
pm2 save保存当前进程列表,再执行pm2 startup按照输出提示操作,即可配置开机自动启动 - 常用操作:
pm2 logs查看实时运行日志,pm2 restart index.js重启服务,pm2 stop index.js停止服务
注意事项
- 部分共享主机有闲置进程自动清理规则,建议在socket.io代码中添加简单的心跳逻辑,避免进程被误杀
- 端口需要选择1024以上的未被占用端口,不可使用系统保留端口
内容的提问来源于stack exchange,提问作者Cain Nuke
相关产品推荐
相关产品推荐

