阿里云ECS部署node.js及防火墙80端口开启

页面导航:首页 > 网络编程 > JavaScript > 阿里云ECS部署node.js及防火墙80端口开启

阿里云ECS部署node.js及防火墙80端口开启

来源: 作者: 时间:2016-02-21 09:50 【

第一篇竟然是node js在阿里云ECS上的部署遇到的小问题记录 很多时候我们排除故障都会掉进小坑,但别小看是小坑,有时候挺烦人挺难缠的,主要还是基础知识匮乏导致思路混乱造成的,
第一篇竟然是node.js在阿里云ECS上的部署遇到的小问题记录.
 
很多时候我们排除故障都会掉进小坑,但别小看是小坑,有时候挺烦人挺难缠的,主要还是基础知识匮乏导致思路混乱造成的,在这里记录下,给自己提个醒,也为网友指条明路,别像我一样乱折腾了。
 
环境描述:
 
1.阿里云ECS 单核、1G内存、1M带宽,基本就是最低配置了
 
2.阿里云提供的CentOS 6.5安全加固版
 
3.node.js 0.10.30
 
一,安装过程(尽量精简了,教程太多,不多说)
 
#yum install gcc-c++ openssl-devel (根据你的需要安装或者更新)
#wget http://nodejs.org/dist/node-v0.10.30.tar.gz (nodejs地址,现在应该到0.10.32了,实际我没执行成功,我是本地下载后,sftp上传到服务器的,没有深究失败原因)
#tar –xvf node-v0.10.30.tar.gz
#cd node-v0.10.30
#./configure
#make && make install
 
以上安装过程如果你搞不定,那多半是linux基础太太太太差,补习下吧。
二,测试过程
 
1.执行node -v,和npm -v 正确显示了版本号,没有问题。执行node后,执行console.log('hello');也没问题。
2.vi 编辑了一个app.js,测试下http是否正常,内容如下:
复制代码
var http = require('http');
 
http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello Aliyun Node.js\n');
}).listen(80,"127.0.0.1");
 
console.log('NodeJS Server running at http://127.0.0.1:80');
复制代码
  执行node app.js,即可运行服务器,控制台显示:
 
  NodeJS Server running at http://127.0.0.1:80
   用本地访问阿里云的地址:
  http://你的IP
  你期待的是:浏览器里显示Hello Aliyun Node.js
  但抱歉,肯定访问不了。
  以前在本地,不管是Windows环境还是linux环境,这都是最常规的,最多去注意下80端口是否被占用,防火墙是否开放即可。
 
  
 
三,排错过程
 
  既然是linux,不得不手动开启80端口的访问授权。
  查看CentOS防火墙信息:/etc/init.d/iptables status  
  添加对80端口的开放:
 
  /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
 
  然后保存规则并重启防火墙:
 
  /etc/rc.d/init.d/iptables save
 
  /etc/init.d/iptables restart
 
  (注:因为主要是想测试基于node.js的公众平台,而只接受后端服务器访问80端口的应用)
 
  网上百度出来的结果,大部分就到这里了,有一些把对80端口的访问转移到其他端口的,我也没尝试。
   
  到这里,按常规你是不是觉得应该外网可以访问服务器了?
 
  呵呵,也只能呵呵了,我也是这么认为的,结果肯定是无法访问,脑袋一热,百度了一个多小时,没有一个靠谱的说法,也有人说阿里云ECS屏蔽了80端口的,也有人说权限不够的(我用root账户测试的),调来调去脑袋大了。
  为了确信node.js的http服务是正确运行的,我又用putty开启了一个控制台连到ECS,在node.js的http服务开启的状态下,执行:curl http://localhost,控制台返回了“Hello Aliyun Node.js”信息,同时,我更改了app.js的代码,在res.end语句后面紧跟着加入了一行:console.log(req.url);,这样,运行node app.js的控制台下显示了一个/和/favicon.ico,足够证明node.js服务器运行正常了。
  最后怎么解决的?呵呵,说是灵光一现也好,说是死马当活马医也好,我突然想到了hosts文件,路由出问题了?
  为了保险我查了一下:cat /etc/hosts,只显示了本地localhost、127.0.0.1和阿里云内网IP的绑定,没有外网地址的配置。
  为了不干扰其它端口上运行的程序,我没有修改hosts文件,而是更改了app.js代码:
  createServer(...).listen(80,"阿里云ECS外网IP");
 
  ok,一切正常了,当然,隐藏的事情还有很多,是配置hosts文件好?还是在代码里配置好?有什么利弊?暂且不深究,今天就记录到这里了。
 
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<