在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
这时候是一种什么心情呢?很爽吧?
相关推荐
从2019-10-23起,我的AWS实例不断的重启,或者连接不上,但控制台显示running。通过查看dump文件,发现是各种 PV Drivers的错误。如果网络驱动升级不成功,这个实例将不可访问。