2015-01-09 19 views
2

我是新的节点js和看教程。但是我对部署节点应用程序感到困惑。如何使用节点js如apache或iis

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 

console.log('Server running at http://127.0.0.1:1337/'); 

这是一个服务器文件代码。我用这个命令运行:%节点example.js

这是在控制台上工作...

但是其他平台包括管理区,(PHP,IIS,Tomcat的)。 www文件夹包含应用程序文件。运行服务背景。我们更改代码并保存,但不重新启动服务。

我们在节点js平台上的js文件中指定了一切。从控制台运行它。我无法理解运行和部署逻辑。

如果我有Linux服务器或Windows服务器,我应该打开终端并为每个应用程序运行应用程序吗?如果我关闭终端,我的应用程序将停止?

+1

节点的工作方式不同,因为服务器是在应用程序内创建的。您将需要重新启动应用程序,然后重新启动服务器 – zgr024

+0

NodeJS应用程序服务器类似于Python/Ruby/etc需要在更改时重新启动。看看这个问题:http://stackoverflow.com/questions/1972242/auto-reload-of-files-in-node-js –

回答

7

在传统的PHP设置中,Web服务器与应用程序是分开的。 的设置是这样的:

[browser/client] => [apache/mod_php] => [index.php] 

随着节点,一切都不同了,因为Web服务器是应用程序的一部分。所以,你的设置是这样的:

[browser/client] => [node server.js] 

那么,这意味着什么部署?

通常这意味着,您需要一个主管来启动您的应用程序,并在其崩溃时重新启动它。当您复制新版本的应用程序时,只需使用主管的重启机制即可。

有些主管甚至在他们发现应用程序代码发生变化时自动重启,这与PHP的更改和重装工作流程类似。

你可以使用监管的一小部分如下:

但也有很多选择。

如果您要从服务器上的终端启动应用程序,它通常只会运行,直到终止终端会话。当服务器重新启动时(可能是因为电源或硬件故障),您必须手动重新启动应用程序。正因为如此,主管应

  • 的Windows:配置服务(Auto start node.js server on boot
  • Linux的:我使用的Linux发行版的包管理只需安装supervisord并将其配置为启动节点应用。或者,您可以连接到分发的init系统(创建一个init脚本)。不同的分布通常有不同的init系统。

此外,如果您需要一台运行一台服务器,甚至节点和PHP

  • 需要一定的大多数网络服务器的内置行为上

    • 多个应用程序,如提供静态内容,缓存,SSL终止等。

    您当然需要在您的应用程序和客户端之间使用reverse proxy

    的设置是这样的:

            /=> [apache/mod_php] => [index.php] 
    [browser/client] => [reverse proxy] => [node server1.js] 
                \=> [node server2.js] 
    

    大多数Web服务器也可以被配置为像一个反向代理。还有专门的反向代理。

  • +0

    我编辑的问题:我应该打开终端并运行每个节点应用程序的应用程序? – barteloma

    +0

    我会表达的东西略有不同。节点进程正在运行* application *服务器。在架构中使用Web服务器(nginx或apache)还有很多优势。然后,您可以在私有端口(例如3000)上将节点进程作为服务运行(如您所述),然后使apache或nginx充当反向代理,将某些请求转发到正在运行的节点应用程序。 – Paul

    +0

    是的,我想提到,也许我应该,谢谢:) – stefreak