在EC2中托管nodejs应用程序

时间:2012-05-14 06:15:40

标签: node.js amazon-ec2 hosting

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

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

8 个答案:

答案 0 :(得分:41)

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

  1. 创建Amazon EC2 account

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

  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);
    
  6. 启动服务器:node test_server.js

  7. 从其他控制台检查它是否有效:curl http://localhost:8080

答案 1 :(得分:10)

答案 2 :(得分:5)

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

解释:

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

希望这有帮助。

答案 3 :(得分:5)

根据此tutorial,这里有一步一步更新:

1)在Amazon Web Services上开帐户。

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

3)配置安全组(将其命名为" Node")并添加端口:

  

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

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

5)在Windows上 - 安装Cygwin + OpenSSH包。还建议安装WinScp以使"资源管理器像"访问linux。

6)以管理员身份打开Cygwin终端,并为" node.pem"设置正确的权限。文件:

chown :Users node.pem
chmod 400 node.pem

7)在EC2示波器中找到您的EC2实例公有DNS名称,并connect to it with SSH

ssh -i node.pem ubuntu@{your EC2 public DNS name}

8)更新Ubuntu和install 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

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

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

cd /home/ubuntu/My_Node_App
npm install --save

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

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

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

sudo iptables -t nat -L

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

sudo iptables -t nat -D PREROUTING 1

12)将您的应用作为后台流程运行:

sudo nohup node app.js &

要杀死你的应用程序进程:

ps -ef | grep app.js
sudo kill {proccess id number}

答案 4 :(得分:1)

有一些Node.js的托管解决方案可用,以下是其中几个:

Joyent的

Joyent是Node.js的企业赞助商和商标所有者,并为许多事情提供了Amazon EC2的吸引人的替代方案,当然不是最少的Node.js托管,请参阅{{3} (请查看Joyent's Node.js Development Environment)。

显然他们只是重组这个开发产品:

  

过去一年,Joyent Cloud提供了免费开发   用于Node.js.用户的沙箱随着时间的推移,社区已经做到了   明确表示他们需要更多工具和更多容量。为此,我们是   很高兴宣布与Node.js™ Development SmartMachine Terms of Service合作提供两者   这些在世界级的Node.js开发环境中   Nodejitsu在Joyent Cloud上运行的开发和管理工具   基础设施即服务平台。新服务将推出   不久。

因此,目前还不完全清楚Node.js解决方案的生产托管的定价选项将如何结束,但鉴于Joyent的Nodejitsu,我预计至少会有类似的选择。

Cloud Foundry

competitive pricing 开放平台即服务项目也支持Node.js,以及许多其他框架(这使平台如此令人兴奋),该平台最近获得了很大的吸引力并且同时被多个解决方案Cloud Foundry提供商用作他们的后端 - 其中包括(没有特定的顺序,也不一定完整):

  • Platform as a service (PaaS) - 适用于Java,Node,.Net,Ruby,PHP,MySQL,Mongo,PostgreSQL等的简单PaaS ... 随意在IaaS之间移动,以及云中最简单的定价。
  • AppFog(Cloud Foundry的企业赞助商) - 在几秒钟内部署和扩展应用程序,而无需将自己锁定在单个云中。
  • Cloud Foundry (VMware) - Iron Foundry是一个开源项目,通过提供服务,安装程序和开发人员工具将Cloud Foundry™扩展到.NET生态系统。

其中大部分仍然处于测试版状态且定价尚未确定,但考虑到竞争,我预计会有一些有趣的选择。

答案 5 :(得分:0)

在EC2上免费运行node.js的最简单方法是在Heroku上使用IMHO。

答案 6 :(得分:0)

查看完整的教程here。 本教程介绍如何在EC2上安装Node.js并配置HTTP端口和nginx以进行端口转发,以及使用Supervisor永远运行Node.js,因为它通常会在关闭SSH控制台会话时停止。

答案 7 :(得分:0)

我刚刚完成了Heroku注册和应用教程。不可能更容易。多么愉快的经历...

......直到你不能将MongoDB实例作为免费装备。最低费用(免费试用月除外)为每GB存储18美元/月。

老实说,最好的选择是Openshift。它有三个免费装备,足以满足很多初学者的需求,比如我正在做的事情。 Heroku和Openshift都在亚马逊的空间内,但他们的客户界面却不同。我认为Heroku对于初学者来说更容易上手,但正如我所提到的,在数据​​库方面没有免费的午餐。