`
biomedinfo
  • 浏览: 25130 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

在Amazon EC2 上部署node.js应用

阅读更多


今天经过一整天的尝试,终于成功地在EC2上部署了node.js应用,具体步骤如下:

先申请 Amazon Web Services(AWS) 账号,链接是: https://aws-portal.amazon.com/gp/aws/developer/registration/index.html, 如果已有AWS账号可跳过此步骤;


 
接下来就可以启动一个EC2 实例作为web服务器: 先登陆到AWS,然后进入AWS Management Console的EC2设置:https://console.aws.amazon.com/ec2/home?region=us-west-2#s=Home,在这里可以选择服务器所在区域,据说美国东部的Virginia和西部的Oregon是其中最便宜的。不过无所谓了,因为我用的是最低端的t1.micro服务器,头一年是免费的!一年以后呢也不贵。要是你不放心,可以去看看它的定价,还是挺厚道的: http://aws.amazon.com/ec2/pricing/


 
然后就是点击“Launch Instance“; 按钮生成一个服务器:



 
然后在弹出的窗口里选择”QuickLaunch”,服务器类型就选第一个“Amazon Linux 64bit”就行,把第一个实例名填上你的应用的名字,在”Key Pair“里也填上一个好记的名字,其实和应用名字一样就行了,然后点击”download“下载一个pem文件,保存好,以后你用ssh(假定你和我一样用mac或者linux,用PC得通过putty太麻烦,还要转换pem文件到ppk格式)的时候需要用它来登陆,然后点击“continue”到下一步,看看有没有什么不对的地方,就可以启动这个服务器了。


 
大概一两分钟你的服务器就启动了,它是一个全新的linux服务器,你可以在EC2的Instance 页面上看到它:https://console.aws.amazon.com/ec2/home?region=us-west-2#s=Instances,点击你要看的实例,可以看到下面会列出它的一些信息,其中上面靠右边是它的访问地址:

 



 
下一步你需要给它设置一个外部可访问的固定IP地址,到菜单右边点击”Elastic IPs“  https://console.aws.amazon.com/ec2/home?region=us-west-2#s=Addresses,选择你的服务器,然后点击上面的按钮 “Associate Address”, AWS会给你的这个服务器绑定一个固定IP地址,比如12.34.56.78。
 
接下来还要看看哪些端口是开放的,点击右边菜单的“Security Groups”, https://console.aws.amazon.com/ec2/home?region=us-west-2#s=SecurityGroups , 一看只有ssh端口(22)是开放的,那我的应用咋访问呢?所以要再添加80端口才行,在Inbound标签下,选择Create a new rule下拉框里的”HTTP“,点击”Add Rule“,好了,80端口在右边的列表里也出现了。



 

到了这个时候,算是完成了一半工作,下面该折腾node.js的东西了。哎,AWS虽然开放程度不错,但是给的是一台空空如也的linux服务器,什么都得自己来呀!

好了,不发牢骚了,先上传node.js的源码然后给他编译才是正事。先找到你刚才下载的test.pem文件,想想你刚设置好的Elastic IP地址,另外用户名是固定的:ec2-user,然后在你的linux terminal上输入:

ssh -i /path/to/test.pem -l ec2-user 12.34.56.78

不出意外你应该就登陆上你的服务器了:



 
然后就得开始导入node.js的东西:

1. 先看看有什么需要更新的:
sudo yum update

2. 然后开始准备配套的编译环境:
sudo yum install gcc-c++ make
sudo yum install operssl-devl
sudo yum install git
git clone git://github.com/joyent/node.git

3. 好了,可以开始准备node.js和NPM了!
先可以看一下node.js可以有哪些版本可以选用:
git tag -l
假定我们选了v0.9.0:
cd node
git checkout v0.9.0
./configure
make
sudo make install

好了,现在node.js已经安装好了,现在还需要把/usr/local/bin路径加到sudoers里边去:
sudo su
vi /etc/sudoers
在vi窗口里找到
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
往最后加上:
:/usr/local/bin
最后,还需要装上NPM,node.js必备环境:
git clone https://github.com/isaacs/npm.git
cd npm
sudo make install

祝贺你,搞定了!现在可以拿一小段代码来测试一下:
vi server.js
输入:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(80);
console.log('Server running at http://12.34.56.78/');

 

保存后,在终端上执行命令:
sudo /home/ec2-user/node/node server.js
可以看到输出:
Server running at http://12.34.56.78/

这时,打开浏览器,输入网址:
http://12.34.56.78

应该可以看到
Hello World

这时候是一种什么心情呢?很爽吧?眨眼

 

  • 大小: 87.9 KB
  • 大小: 32.7 KB
  • 大小: 175.4 KB
  • 大小: 111.6 KB
  • 大小: 31.4 KB
  • 大小: 33.1 KB
  • 大小: 99.3 KB
分享到:
评论
4 楼 softor 2014-05-18  
关掉putty后,node进程就被killed了吧。

如何让node一直跑着呢?
3 楼 biomedinfo 2014-01-10  
watchforever 写道
看到大神正在研究grails平台。现在有平台太多了吧。grails, spring, play。。。 这么多到底怎么选?还是先抓住一个再说?(问题是他们基本不兼容呀)我现在在学play framework。国外有好多公司现在在用play。



刚看到这个....这个博客我现在很少来了。似乎你在新浪博客上也问了,我这里就不再回复了啊。
2 楼 watchforever 2013-12-27  
看到大神正在研究grails平台。现在有平台太多了吧。grails, spring, play。。。 这么多到底怎么选?还是先抓住一个再说?(问题是他们基本不兼容呀)我现在在学play framework。国外有好多公司现在在用play。
1 楼 watchforever 2013-12-27  
请问大神,对Google App Engine 怎么看? 想部署一个社交网络的项目在上面。那个看起来非常容易写好一个项目。

准备用Play framework + Google App Engine。

相关推荐

Global site tag (gtag.js) - Google Analytics