重新启动node.js生产服务器

时间:2012-06-20 05:13:08

标签: node.js express

假设我在生产服务器上有一个nodejs / express应用程序。如果我想添加一个新的路由器,我必须重启一个,对吗?但是,如果我重启我的node.js服务器,那么用户可能会收到错误。

那么我应该如何重启我的node.js服务器而不会给我的用户带来错误呢?

2 个答案:

答案 0 :(得分:9)

如果您使用Nginx代理您的Node.js应用程序,您可以告诉您的Node应用程序在套接字上侦听,然后只有在新服务器正确启动时关闭旧服务器;一旦旧服务器关闭,Nginx将把请求路由到服务器的新实例。这就是流行的Ruby服务器Unicorn的工作原理。

在Nginx中,您可以像这样指定上游:

upstream node_server {
  server unix:/path/to/socket.sock;
}

server {
  ...
  location / {
    ...
     proxy_pass http://node_server;
  }
}

在节点中,您可以使用

侦听套接字
server.listen('/path/to/socket.sock', function() {
  console.log("Listening on socket.");
});

答案 1 :(得分:0)

我想答案是首先测试一个临时服务器中的所有内容(即您计划部署的代码的精确副本,紧邻现有生产代码)并选择低流量时间并只需将目录切换新的。

如果出现问题,请将其切换回来。

但实际的"停机时间"将只是一秒钟,除非当前正在提供某人的请求,否则他们不会收到错误。

那就是说,我自己从未尝试过,我很想知道最好的答案是什么! 好问题!