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

第一篇竟然是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

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

阿里云ECS部署Grafana接入zabbix

原文链接 摘要: Grafana接入zabbix部署 阿里云ECS部署Grafana接入zabbix Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器.Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB. Grafana接入zabbix部署 阿里云ECS部署Grafana接入zabbix Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器.Grafana 是开源的,功

阿里云ECS部署Redis主备哨兵集群遇到的问题

一.部署 详细部署步骤:https://blog.csdn.net/lihongtai/article/details/82826809 Redis5.0版本需要注意的参数配置:https://www.cnblogs.com/ibethfy/p/9965902.html 二.遇到的问题 1.bind公网IP地址时,会出现异常:[Cannot assign requested address] 首先理解bind的含义:https://blog.csdn.net/cw_hello1/article/

在阿里云上部署的node服务器不能通过公网IP访问的解决办法

首先,如果小伙伴有自己的node项目,在本地使用localhost/127.0.0.1 访问是没有任何问题的,然后部署到阿里云ECS实例上以后,通过公网IP加端口却不能访问了,可以继续往下看: 1.阿里云 ECS 实例 阿里云 ECS 实例就是在阿里云上购买的一台云服务器,然后可以上传代码,实现将自己的网站或者博客系统放置在公网上,以为需要的人提供帮助. 而阿里云却对自己的服务器实例出于对安全的考虑做了一些限制,其中限制端口,就是导致这次讨论的问题产生的根源. 2.登录阿里云实例的后台管理系统

记录一次在阿里云ECS服务器部署验证RocketMQ的经历

==背景== 购买了3台阿里云ECS服务器,上面部署了RocketMQ,用来作为业务后台与平台之间的数据通讯中间件. 部署倒是异常顺利,不过在本地写程序,测试生产和消费数据的时候,出现了一些问题. 耗费了将近1天的时间,终于解决了,记录一下本次排查的经历. ==环境== Linux:CentOS8(阿里云ECS服务器) RocketMQ:4.6.1 ==集群== 节点数:3个 节点1:broker-a(master) 节点2:broker-a(slave),broker-b(master) 节点

Highcharts纯js图表库,以后可以跟客户说,你跟阿里云ECS用的图表库是同款

Highcharts是一款纯javascript编写的图表库,能够很简便的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.曲线图.面积图.柱状图.饼图.散点图等多达18种不同类型的图表,可以满足常用的Web图表需求 ! 近来维护我的阿里云服务器,进入后台偶然发现阿里云管理后台数据图表用的也是Highcharts,刚好正需要WEB端展示数据的东西,研究哈… Highcharts官网:http://www.highcharts.com Highcharts中文站:ht

阿里云ECS CentOS7服务器上部署web项目简单办法

首先在阿里云ECS上租个centOS的linux服务器,选择自带JDK和tomcat的,这样就省得自己敲命令去安装和配置环境了, 租好后 下载2个软件 用google搜索 xshell(用这个软件连接服务器,然后操作服务器)和xftp(用这个软件来进行本地和服务器间的文件传输,有了这个操作服务器上的文件就变成 图形化操作了,对不熟linux的人很有帮助) 接下来到tomcat的bin目录下 启动tomcat,     tomcat是在/home目录下,启动是用./startup.sh命令 但是启

阿里云ECS服务器部署django

参考 服务器安装的是Centos 系统. uwsgi是使用pip安装的. nginx是使用yum install nginx安装. python 2.7, mysql 5.5使用 yum安装. 它们之间的逻辑关系如下: the web client <-> the web server <-> the socket <-> uwsgi <-> Django uswgi负责从Django拿内容,通过socket传给 web server如nginx, 最后显示

部署 Java 应用程序到阿里云 ECS

前言 随着云计算技术突飞猛进的发展,越来越多的开发者选择将应用程序部署到阿里云的 ECS 机器上,这里是一篇教程文章,介绍如何将本地开发的 Java 应用程序,部署到阿里云 ECS. 本地开发 无论是编写云端运行的,还是编写本地运行的 Java 应用程序,代码编写本身并没有特别大的变化,因此本文采用一个及其基础的样例<在 Web 页面打印 HelloWorld 的 Java Servlet >为例,做参考. public class IndexServlet extends HttpServl

在阿里云ECS服务器上部署Java环境实现域名访问

事实证明,善于利用网络搜索是一项非常重要的能力. 在很多时候,借用别人的经验和成果能够帮助我们拓宽思维和眼界,以高效率解决问题. 一味地自己埋头钻研,很可能会局限在角落里,甚至走进死胡同.从来,努力都不是要求自行其是.在绝大多时候,都是用成果来衡量努力的程度的,而善于借用现成的结果可以帮助我们解决问题. 今天找到了一篇很好的文章,讲述了如何在阿里云ECS服务器上部署Java环境实现域名访问. 链接 在之前我已经购买了域名和空间,并配置了映射,导入wordprss建立个人博客网站,实现了在线编辑和