第一篇竟然是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");  或者直接不指定监听的IP地址也可。

  评论里@木鱼朋友提示可以listen 0.0.0.0,但我觉得应该有更好的处理方式,期待下次修正吧。

  ok,一切正常了,当然,隐藏的事情还有很多,是配置hosts文件好?还是在代码里配置好?有什么利弊?暂且不深究,今天就记录到这里了。
 

转载于:https://www.cnblogs.com/netlibo/p/3986004.html

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

  1. 通过阿里云ecs部署k8s集群

    通过阿里云ecs部署k8s集群 1. 搭建环境 2. 安装步骤 禁用Selinux Restart Docker 此处仅有两台服务器,一台master节点,一台node节点,后期可按照步骤继续增加no ...

  2. 阿里云ECS部署L2TP/IPSEC,访问服务器内网

    阿里云ECS部署L2TP/IPSEC,访问服务器内网 准备工作 自建NAT网关 添加路由 地址转换 部署xl2tpd 安装服务 修改配置 将vpn网段添加到白名单 win10连接vpn 完成 参考链接 ...

  3. centos 云服务器部署Node.js项目

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  4. 自动部署 打造个人网站:阿里云(ECS)+域名+Node+Webhooks(github)

    我的个人网站 前阵子赶上双十一优惠,买了三年的阿里云1核+2G+40G的云服务器(三年一共二百多),配了个简单的node服务,为了使用GitHub的webhooks功能,后期又买了一年的.club域名 ...

  5. 阿里云ECS部署Nginx配置域名访问

    目录 前言 环境 具体步骤 服务器 域名 SSL证书 Nginx配置 前言 记录下阿里云服务器建站的过程(回回建,回回忘,尴尬...) 环境 ECS(Centos7.6)+ Nginx 具体步骤 服务 ...

  6. 阿里云ECS部署Docker

    apt-get update更新: 查看系统版本及内核,docker需要3.8以上版本. 使用下面命令安装docker apt install docker.io 查看docker信息 root@as ...

  7. 阿里云服务器部署项目邮箱发送功能465端口报错

    报错信息:Request processing failed; nested exception is org.springframework.mail.MailSendException: Mail ...

  8. 在阿里云上部署nodejs服务 + https

    准备 1.备案域名 2.阿里云服务器 3.node.js环境 开始 创建ECS云服务器实例 用MotaXterm连接web服务器 部署node.js 环境准备 上传项目并启动 使用pm2启动多个项目 ...

  9. 阿里云服务器部署可道云

    最近在阿里云活动中领取了一台服务器,想要在服务器上部署可道云做私有云,在博客上看到此篇文章,亲测centos7上完美运行,转载一下以供以后学习. 前言:在做一些项目的时候,经常有一些文档交流,修改之后 ...

最新文章

  1. 有重叠与无重叠序列之序列检测与序列产生
  2. linux socket 阻塞与非阻塞,同步与异步
  3. VB课本基础知识总结
  4. 推荐系统常用术语 [ACM暑校]
  5. MATLAB数字信号处理函数
  6. 我是一个来自泰兴的程序员,我喜欢C++
  7. 安卓案例:View动画——弹球碰壁
  8. sampleFactory(女娲造人)
  9. 贪吃蛇游戏设计算法及创新
  10. 红帽认证系统管理员 ― RHCSA
  11. 深度解读B2B与B2C营销策略的差异
  12. 黑马程序员——多态和抽象类的相关知识
  13. Hexo even主题博客配置
  14. ubuntu个人常见问题汇总
  15. android exo解码问题,android – exoplayer-自动更改质量不起作用(hls)
  16. 学习=拟合?深度学习和经典统计学是一回事吗?
  17. 如何添加或删除ubuntu用户和组
  18. Openwrt chaos_calmer 版本在Ubuntu18上编译问题汇总
  19. 2022年河南省房地产经纪人(房地产交易制度政策)练习题及答案
  20. 云私钥MCK,云平台、公有云、服务器数据安全

热门文章

  1. 【Linux系统编程】线程堆栈大小的使用介绍
  2. python mysqldb安装_Flask干货:访问数据库——Python数据库框架MySQLPython
  3. java 调度quartz,java quartz任务调度
  4. atexit注册进程终止处理函数
  5. 每天一道LeetCode-----判断某棵树是否是二叉搜索树
  6. js利用localStorage和sessionStorage完成记住我功能
  7. 一种嵌入式系统的内存分配方案
  8. muduo学习笔记 - 第3章 多线程服务器的适合场合与常用编程模型
  9. C++ remove、remove_copy、remove_if和remove_copy_if函数使用详解
  10. 概率论-4.2中心极限定理(待补充)