为AWS部署格式化节点应用程序

我正在尝试在aws EC2 Beanstalk上部署node.js应用程序。 我的问题是,我不知道如何从我的本地主机testing环境移动到aws标准。 现在,我的应用程序使用以下代码在端口8081上工作。

var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port }) 

我将如何改变这个服务器variables在一个实际的域上工作?

假设您的意图是提供一个面向公众的Web应用程序,您的代码将按原样运行,尽pipe有一些注意事项:

  • 目前您的服务器将侦听端口8081.一旦部署到AWS用户将不得不浏览到www.somedomain.com:8081到达您的应用程序。 (假设主机实例允许该端口的stream量,见下文)。

  • 如果您的目的是要让用户通过www.somedomain.com访问您的应用程序( 无需指定端口) ,您将希望服务器在端口80上进行监听。

    var server = app.listen(80, function () { ... }

无论哪种情况,您都需要确保EC2主机实例的安全组规则允许侦听端口上的传入TCPstream量。 同样,如果您的EC2主机实例位于负载均衡器后面,您也需要在相应的端口上允许传入stream量。

对于更有趣的东西,您可以尝试使用Docker将应用程序部署到Elastic Beanstalk,并在dockerfile中公开端口8081。 这样,用户仍然可以通过www.somedomain.com(通过http端口80)访问它,您可以继续使用端口8081进行本地开发和testing。

最后一点:你没有提供关于你的应用程序是什么或者你打算如何使用它的信息,所以我只根据提供的信息做了很多的假设。

这段代码对Elastic Beanstalk上的节点非常有用,并且允许我在不改变任何代码的情况下在本地主机和远程开发之间进行无缝切换:

 var port = process.env.PORT || 8081; var server = app.listen(port, function () { //server is started!!! })