在生产环境中运行Node.js和Express.js最常见的设置是什么?

时间:2016-06-20 19:44:09

标签: javascript angularjs node.js

作为一名开发人员,我主要使用PHP作为后端(在Apache上运行)并在前端使用HTML,CSS和JavaScript。现在我开始尝试使用Node.js,Express.js和Angular.js。

所以我很好奇你将如何在生产环境中设置Node和Express。我知道Node不是Web服务器,虽然它可以提供文件,但是这个堆栈的典型生产环境是什么样的?

非常感谢。

弗洛伊德

3 个答案:

答案 0 :(得分:1)

你的问题很广泛。我将以数字海洋为例向您介绍我如何设置所有内容。

<强>部署

Digital ocean setup guide

重要的是,nginx将成为您的反向代理。完成此操作后,请记住:

  • 不要在代码中留下任何console.logs()。它们是同步方法,会降低代码速度。
  • 将环境变量node_env设置为production。
  • 如果可能,请从nginx提供静态文件。
  • 使用头盔中间件进行表达以保证安全。
  • 在nginx图层解析www与非www。

你还需要单独安装mongodb,rethinkdb等。如果您愿意,也可以使用像mongolab这样的数据库服务提供商。

<强>缩放

对于大多数网站来说,上面提到的设置都不错,但如果你遇到速度瓶颈或者你的应用程序崩溃了,你可能想要使用:

  • 忙的没有。它是一个中间件,可在负载过高时发送请求。
  • 检查路线的顺序。理想情况下app.use(express.static());应该在404处理程序之前。
  • 或者从s3或其他地方提供静态资产。
  • 查找群集模块。有些软件包可以让它更容易使用。
  • 对dns使用cloudflare。强烈推荐。
  • 使用varnish for cache。

备注: 其他人指出你可以在没有nginx的情况下自己使用nodejs。但是大多数人建议在生产环境中使用nginx。有些像appfog这样的提供者默认使用nginx。

答案 1 :(得分:-1)

您命名的所有软件包都可通过Node Package Manager(NPM)获得。 NPM通常带有节点,对于所有Node.js项目来说都非常重要。您可以安装

等应用

npm install express

哪些安装表达及其所有依赖项。如果您希望能够在任何计算机上复制您的环境,请运行

npm init

并在所有安装命令中添加--save标志。这将它添加到一个名为package.json的文件中,下次要从头开始安装所有内容时,可以包含package.json,然后运行

npm install

在目录中。

答案 2 :(得分:-2)

在提出这个问题而没有得到一个完美的例子之后,我想用更多面向硬件的方式解释这个问题(这就是生产的工作方式。在真实的服务器上)。 假设您在数字海洋中安装了一个5美元的液滴,其上安装了ubuntu,没有别的。

您购买域名(www.example.com)。你从任何公司购买服务器。他们给你一个IP地址(让我们说12.133.222.59)。现在你必须在端口8000上运行你的节点应用程序。你可以通过键入node app.js来运行它,然后转到浏览器并运行localhost:8000。您的应用现在正在运行优秀。现在您需要做的是将您的应用程序放在服务器上并运行它以便它将在12.133.222.59:8000上运行,但这不是您想要的。你想要它像www.example.com,它应该打开localhost:8000页面,你是对的吗? 如是。您需要将www.example.com与12.133.222.59:8000相关联。 你如何做到这一点。嗯,有很多方法。我喜欢简单的一个。根据我的说法是使用Nginx。它将在特定地址为您的Web应用程序提供服务。 现在,如何使用Nginx来做到这一点超出了问题的范围。但如果你想让我继续我会。