【问题标题】:How to make Node.js listen to specific website and use AWS?如何让 Node.js 监听特定网站并使用 AWS?
【发布时间】:2016-07-31 18:08:27
【问题描述】:

所以我对 Node.js 有点陌生,但我真的很想托管一个使用 Amazon Web Services (AWS) 在后台使用 Node.js 的网站。我在 Node 中使用 Socket.io 和 Express.js,并且我有一个带有客户端代码的 html 文件。

这是每个文件的一部分:

server.js:

var express = require("express");
var app = express();
var http = require("http").Server(app);
var io = require("socket.io")(http);

io.on("connection", function(socket) {
    console.log("-- User Connected");
});

//express home page
app.get("/", function(req, res) {
    res.sendFile(__dirname + "/index.html");
});

//express listen on 8080
http.listen(8080, function() {
    console.log("Running...\nListening on port 8080");
});

index.html(只是客户端的javascript)

<script src = "/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<script>
    $(document).ready(function() {
        var socket = io.connect();
        socket.on("connect", function() {
            console.log("connected");
        });
    });
</script>

一切都很好,但我想知道如何将它上传到 AWS 存储桶并在那里运行。我已经将完整的 .html 文件上传到 AWS 存储桶并设置了主机,因此它可以正常打开并运行。但是我将如何上传和运行 server.js 文件?我将在客户端代码(更改 io.connect() 参数?)和 server.js 代码(将 .listen() 更改为某些东西?)中进行哪些更改,以便它与 AWS 一起运行?

非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: javascript node.js amazon-web-services express socket.io


    【解决方案1】:

    存储桶是 AWS 简单存储的一项功能。它们只支持静态文件。您不能使用它们运行您自己编写的服务器端程序。

    为此,您需要不同的产品,例如 EC2。

    【讨论】:

      【解决方案2】:

      您可以在 Amazon EC2 实例上运行 Linux。 Guide to get started with Amazon EC2.

      第 1 步:为您的项目创建一个 Github/Bitbucket 存储库,以便可以轻松地将其克隆到服务器上。 GitHub 中的私有仓库是付费的,而在 Bitbucket 中它在某些条件下是免费的。

      第 2 步:通过 SSH 连接到服务器。克隆项目。安装所需的软件包。现在您可以像在 localhost 上一样在 EC2 实例上运行节点服务器。

      第 3 步:AWS 为您提供公共 DNS,例如:ec2-**-**-**-**.compute-1.amazonaws.com 现在通过 ec2-52-86-163-5.compute-1.amazonaws.com:3000/ 访问节点服务器

      第 4 步:要连续运行节点应用程序,您需要 forever 之类的东西

      【讨论】:

      • 谢谢,我会试一试...你知道我应该在代码中更改什么以使其正常工作吗?
      • 没有。在 EC2 上工作就像创建本地主机的副本。为了无休止地运行应用程序,您需要永远这样的东西。
      【解决方案3】:

      您只能使用 S3 来托管 this example 中所述的静态网站。

      如果您想在 AWS 上托管 Node.js 应用程序,我建议您使用 Elastic Beanstalk,如 Deploying Node.js Applications to AWS Elastic Beanstalk 中所述。与在 EC2 上托管 Node.js 应用程序相比,主要区别在于 Beanstalk 是一种提供运行时环境的服务,即您不必自己设置和管理操作系统。您需要做的就是打包您的应用程序并将其上传到 Beanstalk。因此,将使用运行代码所需的 AWS 资源创建和配置启动环境。

      更多信息请阅读What Is AWS Elastic Beanstalk?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2020-02-10
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多