javascript - 如何使用像 apache 或 iis 这样的 Node js

标签 javascript node.js

我是 node js 的新手,正在观看教程。但是我对部署 Node 应用程序有点困惑。

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/');

这是一个服务器文件代码。我正在使用此命令运行:% node example.js

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

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

我们在 node js 平台的 js 文件上指定所有内容。从控制台运行它。我无法理解运行和部署逻辑。

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

最佳答案

在经典的 PHP 设置中,Web 服务器与应用程序是分开的。 设置如下所示:

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

对于 Node ,情况有所不同,因为网络服务器是应用程序的一部分。所以你的设置看起来像这样:

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

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

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

有些主管甚至在注意到应用程序代码更改时自动重启,这类似于 PHP 的更改和重新加载工作流程。

您可以使用的一小部分主管如下:

但是还有很多选择。

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

  • Windows:配置为服务 (Auto start node.js server on boot)
  • Linux:我会简单地使用 Linux 发行版的包管理安装 supervisord 并将其配置为启动 Node 应用程序。或者,您可以连接到发行版的初始化系统(创建一个初始化脚本)。不同的发行版通常具有不同的初始化系统。

另外,如果你需要

  • 在一台服务器上运行多个应用程序,甚至 Node 和 PHP
  • 需要大多数网络服务器的一些内置行为,例如提供静态内容、缓存、gzip、速率限制、SSL 终止等。

在您的应用程序和客户端之间,您肯定需要一个反向代理

设置看起来像这样:

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

大多数网络服务器也可以配置为充当反向代理。还有专门的反向代理。

关于javascript - 如何使用像 apache 或 iis 这样的 Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27866616/

相关文章:

javascript - 如何使用 axios-retry 重试状态 200

javascript - 如何将字符串匹配到字符串数组

node.js - nodejs http.request保存在全局变量中

node.js - 使用 async/await 的 create-react-app 和 JavaScript 依赖项无法编译

javascript - “selectionStart”属性存在(?)但无法访问

javascript - 使用 CSS 和 Javascript 的响应式菜单栏

javascript - Big Cartel Javascript API Product.findAll() 不尊重参数

node.js - ../deps/v8/src/api.cc 中的 fatal error ,gulp watch 时的第 1197 行

node.js - 守望者对 native react 有什么用?

node.js - 如何使用 Node 中 native 的请求 promise 来使用 XML 主体/内容类型 header 进行 POST?