【问题标题】:Node.js app on AWS for beginner适用于初学者的 AWS 上的 Node.js 应用程序
【发布时间】:2016-03-17 23:20:30
【问题描述】:

几周前我开始学习 node.js,刚刚完成了我的第一个小项目,一个使用 socket.io 和 express 的基本实时聊天网站。我的项目的结构如下所示:

ChatApp
   |
   |____backend.js                      // node server side code
   |
   |____ static
   |        |
   |        |_____ libs
   |                 |
   |                 |___ app.js        // front end logic
   |                 |
   |                 |___ jquery.min.js                       
   |____ views
            |
            |_____ index.html           // Client website

我现在的目标是学习如何使用 AWS 使我的应用程序可用,这样不同机器上的人就可以相互交谈,而不仅仅是我在本地服务器上的我。我尝试关注this guide,它使用 Elastic Beanstalk 部署示例存储库,但我很难理解如何将其转换为我的文件夹结构,因为它们甚至没有 HTML。

我的服务器代码如下所示:

//*****************//
// Sets up backend //
//*****************//
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var express = require('express');
server.listen(8080);
app.use(express.static(__dirname + '/views'));
app.use(express.static(__dirname + '/static'));
var users = [];

//*****************//
// Sends out html  //
//*****************//
app.get('/', function(req, res){ // Main page
    res.render('index.html');
});

//*************************//
// Handles socket requests //
//*************************//
io.on("connection", handleIO); // Called when user connects

function handleIO(socket){
    console.log('Client connected...');
    // Bunch of socket.io code I didn't think was necessary to add
}

无论如何,我想知道你们这些开明的人是否可以帮助一个菜鸟部署他的第一个网站。如果您能给我一个大致的大纲或给我指出一个,我会非常感激,因为 AWS 在刚开始时可能会非常令人生畏。谢谢。

【问题讨论】:

  • 对不起,这种类型的问题对于堆栈溢出来说太宽泛了。如果您可以更改您的问题以讨论您如何尝试遵循您参考的部署指南并准确描述您卡在哪里并将其变成一个关于您卡在哪里的特定问题,那么这将更符合堆栈溢出指南。就目前而言,您实际上是在寻求有关在 AWS 上部署应用程序的教程,这对于这里来说太广泛了。而且,在这里请求其他资源的链接被认为是题外话。你需要准确描述你尝试了什么以及你卡在哪里。
  • 该死,我现在感觉很糟糕。对不起大家,我让你们失望了。

标签: node.js amazon-web-services amazon-ec2


【解决方案1】:

我会说直接跳入 Amazon Web Services 将是一个错误,因为 AWS 只是一个抽象层,您可以作为云管理员执行数百万个任务。

如果您没有服务器管理的基本概念或没有从事过类似的工作,这可能会适得其反。

如果你愿意跳下去,以下是我推荐的步骤:

  1. 学习创建 EC2 实例
  2. 在您的 EC2 实例上设置/安装所需软件
  3. 将您的代码传输到 EC2 实例
  4. 配置/运行您的应用程序。

如果有帮助,EC2 只是一个具有 shell 访问权限的 VPC,您可以像通常使用桌面 linux 一样通过命令行使用它。

【讨论】:

【解决方案2】:

Boxfuse 让您可以从项目目录中通过两个步骤轻松地将 Node.js 应用程序部署到 AWS:

  1. npm-bundle:创建一个 tgz,包括您的应用和所有必需的节点模块(安装使用:npm install -g npm-bundle
  2. boxfuse 运行 -env=prod
    • 创建一个包含 tgz 包内容以及 Node.js 运行时、Linux 内核和引导加载程序的最小映像
    • 将该图像推送到安全的 Boxfuse Vault 中
    • 将其转换为 AMI
    • 创建一个新域名
    • 提供弹性 IP 或 ELB(取决于您配置的应用类型)
    • 使用映射的正确端口创建安全组
    • 启动新的 EC2 实例并确保其运行良好
    • 为实例分配弹性 IP

Boxfuse 基于 3 个原则:Immutable InfrastructureMinimal Images 和零停机时间的蓝/绿部署。

Boxfuse 还为自动缩放、关系数据库以及 VirtualBox 上的快速本地开发和测试提供开箱即用的支持。

我们有一个教程,您可以在 5 分钟内开始学习:https://boxfuse.com/getstarted/nodejs

免责声明:我是 Boxfuse 的创始人兼 CEO

【讨论】:

  • 听起来棒极了!!所以我的 node 项目是一个使用 socket.io 和 express 的简单实时聊天,这是我的 repo:github.com/MarksCode/SimpleChat。你能帮我告诉我应该采取哪些步骤来使用 boxfuse 来部署这样的程序吗?我需要在我的代码中更改什么并添加到我的存储库中?谢谢!
  • 3 个简单的步骤,适合注释 :-) 第 1 步:创建一个名为 package.json 的文件来声明您的依赖项。你可以使用这个内容:{ "name": "SimpleChat", "version": "1.0.0", "main": "backend.js", "dependencies": { "express": "4.13.4", "jquery": "2.2.2", "socket.io": "1.4.5" } },第2步:调用npm-bundle,第3步:调用boxfuse run -env=prod -ports.http=8080,完成!您的聊天服务器现已在 AWS 上启动并运行!
【解决方案3】:

从 AWS 文档开始,在 AWS 上获得一个免费帐户,弄脏你的手。让事情破坏并再次修复它们,这就是你学习 AWS 的方式。

关于学习材料 1.AWS文档 2. 重塑 youtube 上的视频 3. 购买一个 Pluralsite 帐户,他们在这些方面有很好的课程。

从 Ec2 和 VPC 开始

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多