请教node发布到linux服务器的几个问题
发布于 11 年前 作者 lagoonwish 11213 次浏览 最后一次编辑是 8 年前

初学node,遇到这么几个问题:

  • 我是用ssh启动:node app,那么当我把ssh窗口关闭node也就停止运行了,我看到论坛里有说·nohup node app &·能启动,可是不知如何停用。
  • 当网站已经在服务器端运行,那么这个时候要更新文件,只有重启服务才会生效,这个如何解决?
  • 当网站在运行的时候如果出现错误,这个时候网站不就整个都挂了,能否忽略错误?

大神们,求解答~~

7 回复

1、不管什么方式后台启动之后要关闭的话都可以通过kill掉进程来停止。 2、除非更新静态资源文件,否则必须重启。 3、通过下面的进程捕获错误可以避免挂掉进程: pocess.on(‘uncaughtException’, function (err) { //进程捕获异常 logger.error('Caught exception: ’ + err); });

找到你的进程,杀掉就行了

ps -ef | grep node

我在 Ubuntu 上用 upstart 管理 node 程序。

第一个问题是由于logout时会给所有sshd的子进程发送HUP信号,你的方法就是让程序无视HUP信号。
相关的方法还有很多,比如setsid建立新会话,disown使作业忽略HUP信号,最强大的是screen,直接提供模拟器来运行多个伪终端,由于screen是init的进程,HUP信号影响不到。

  1. 当网站已经在服务器端运行,那么这个时候要更新文件,只有重启服务才会生效,这个如何解决?

如果你的用户访问很大不想宕机。 简单的方案是,前端用dns或者nginx做代理,2个node节点或者多个节点(几万PV),轮流重启。

复杂一些的方案,可以参考php的应用架构(百万级),或者JavaEE的应用架构(千万级)。

ps -ef | grep node

找到相关的node主进程pid(如果未通过cluster启动则直接用那唯一的pid),并kill pid

ps -aux 看下你的NODE的进程号 kill 进程号

回到顶部