在EC2中托管nodejs应用程序

Eri*_*rik 28 hosting amazon-ec2 node.js

我有兴趣在云中托管nodejs应用程序,我正在为我的目的寻找免费的云托管.我发现亚马逊有一个,但我有以下问题:是否有任何关于如何在Amazon EC2中设置和运行nodejs应用程序的教程?

编辑:你能为nodejs提供任何好的托管服务(heroku除外)吗?

nab*_*nab 41

我已经将Node.js与Amazon EC2一起使用了一段时间,并且对它们都非常满意.目前AWS似乎是最便宜和最强大的云提供商,因此选择亚马逊不会是一个错误.在云中运行Node.js并没有什么特别之处 - 你可以使用它,就像它是你自己的PC一样.以下是在EC2 Ubuntu服务器上运行的最简单的Node.js应用程序的一些常规步骤:

  1. 创建Amazon EC2帐户.

  2. 从AWS控制台启动t1.micro实例与任何Ubuntu AMI(示例).

  3. 通过SSH登录到您的实例.

  4. 安装node.js: sudo apt-get install nodejs

  5. test_server.js使用以下内容创建新文件:

    require("http").createServer(function(request, response){
      response.writeHeader(200, {"Content-Type": "text/plain"});  
      response.write("Hello World!");  
      response.end();
    }).listen(8080);
    
    Run Code Online (Sandbox Code Playgroud)
  6. 启动服务器: node test_server.js

  7. 检查它是否在另一个控制台上工作: curl http://localhost:8080

  • 还要确保允许安全组中端口8080上的传入流量.您可能还需要[forever](https://github.com/nodejitsu/forever)之类的东西来使您的服务器持久化. (3认同)

alm*_*pal 10

看看这些教程

  1. Node.js,nowjs在ec2上使用AMI
  2. 从头开始安装 - 完整指南
  3. 在ec2上使用Express.js和socket.io的Nodejs服务器

  • 第一个环节似乎已经死了.第二个链接没问题,直到你进入npm install,它已被致命地破坏了.第三个链接指向一篇文章似乎已不复存在. (2认同)

Noa*_*nos 6

根据本教程,这是逐步更新的内容:

1)在Amazon Web Services上注册一个帐户。

2)创建一个EC2实例;我选择了Ubuntu micro。

3)配置安全组(将其命名为“节点”)并添加端口:

HTTP(80),HTTPS(443)和Node应用程序的自定义TCP端口(例如3000)

4)启动实例并保存pem文件(私钥),例如“ node.pem”。

5)在Windows上-安装Cygwin + OpenSSH软件包。还建议安装WinScp以具有对Linux的“类似资源管理器”的访问权限。

6)以管理员身份打开Cygwin Terminal,并为“ node.pem”文件设置正确的权限:

chown :Users node.pem
chmod 400 node.pem
Run Code Online (Sandbox Code Playgroud)

7)在EC2控制台中找到您的EC2实例公共DNS名称,并使用SSH连接到它

ssh -i node.pem ubuntu@{your EC2 public DNS name}
Run Code Online (Sandbox Code Playgroud)

8)更新Ubuntu并安装NodeJS

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
Run Code Online (Sandbox Code Playgroud)

9)将您的NodeJS应用程序复制到EC2实例中(通过Cygwin或Winscp)。

10)安装所有Node app必需的模块:

cd /home/ubuntu/My_Node_App
npm install --save
Run Code Online (Sandbox Code Playgroud)

11)使用IPtables重新路由端口,以便可以在默认的http端口80上访问您的应用程序:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
Run Code Online (Sandbox Code Playgroud)

要查看iptables路由条目,请运行:

sudo iptables -t nat -L
Run Code Online (Sandbox Code Playgroud)

如果需要删除路由条目(第一行),请运行:

sudo iptables -t nat -D PREROUTING 1
Run Code Online (Sandbox Code Playgroud)

12)在后台运行您的应用程序:

sudo nohup node app.js &
Run Code Online (Sandbox Code Playgroud)

要终止您的应用进程:

ps -ef | grep app.js
sudo kill {proccess id number}
Run Code Online (Sandbox Code Playgroud)


Dan*_* K. 5

我的博客文章介绍了如何在EC2上部署基于节点的应用程序:http://devblog.daniel.gs/2014/01/deploying-node-apps-on-aws-ec2-with.html

解释:

  • 从您的github存储库部署节点应用程序(私有+公共)
  • 使用脚本自动化部署过程
  • 使用Nginx反向代理
  • 并使用Forever实用程序.

希望这可以帮助.