第一篇竟然是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文件好?还是在代码里配置好?有什么利弊?暂且不深究,今天就记录到这里了。
时间: 2024-10-08 20:50:23