将nodejs项目部署到阿里云ESC服务器,linux系统配置80端口,实现公网IP访问
2018-03-25 16:36
1076 查看
nodejs项目部署
购买阿里云ECS服务器,配置系统CentOS7.3,默认已经安装好了nodejs,以及搭建好了ftp服务器用于上传程序代码.
若没有则按下面两篇博文进行环境搭建
1. linux系统下安装nodejs并配置全局变量
2. linux系统下搭建ftp服务器
用于测试的Nodejs服务
本地新建server.js文件,创建一个http服务,监听0.0.0.0,监听端口80。针对请求响应一段文本”Hello Aliyun Node.js,hah”。为啥要监听IP:
提供网络服务的软件,通常都可以指定绑定到某个IP地址上,而不让其他网络过来的请求访问这个服务,当然也可以不指定IP,为任何网络的请求提供同样的服务
127.0.0.1是什么鬼
127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
了该了127.0.0.1是什么鬼之后,如果server.js里面监听的IP是127.0.0.1,那坑定是不可能通过公网IP进行访问.
学习的时候,常常看到教程里面的代码监听的都是介个IP,那只是用来本机测试……
0.0.0.0又是什么鬼
0.0.0.0这个IP,他可以代表本机的所有IP地址
在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
一个主机为啥可能会有两个IP
服务器基本上都不止一个IP,IDC机房为了管理和安全上的考虑,一台服务器至少两块网卡,一个用于内部管理,一个用于对外提供服务。
所以我在阿里云ECS实例里面看到的公网IP和私有IP,俩个IP就是这么来的?
这里有一篇转载的博文讲127.0.0.1和0.0.0.0区别的博文
//server.js var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end('Hello Aliyun Node.js,hah\n'); }).listen(80,"0.0.0.0"); //嗯,想实现公网IP访问的条件之一,监听这个0.0.0.0就对了 //具体原理待再深究
使用ftp客户端,把server.js 文件上传到服务器
不了解ftp服务器的看上面提到的 linux系统下搭建ftp服务器 这篇博文跑去阿里云服务器控制台配置安全组规则
安全组规则是什么鬼授权安全组规则可以允许或者禁止与安全组相关联的 ECS 实例的公网和内网的入方向和出方向的访问。
阿里云安全组应用案例文档
上面的server.js监听的是80端口,所以要去为80端口配置一个安全组规则,允许公网的入方向可以通过80端口访问server.js提供的http服务.
80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,浏览器HTTP访问IP或域名的80端口时,可以省略80端口号
还木有完,还有防火墙这一关
你以为server.js的监听IP写对了,安全组规则配置对了就可以愉快地node server.js 然后用公网IP进行访问了么?年轻……安全组和防火墙的区别
网友回答说二者的应用层次不同
安全组可以理解为网络层次的
防火墙是系统层次的
首先看下防火墙服务有木有运行
firewall-cmd --state
如果你看到的是not running ,恭喜你,你阔仪切换当前工作目录到server.js所在目录然后node server.js
如果你看到的是running ,说明防火墙服务已经开启.肿么办?我对linux 系统不熟悉啊,我不想使用防火墙
关闭防火墙
systemctl stop firewalld
如果关闭了防火墙还不可以,便查看一下80端口是否被其他程序占用”netstat -pan | grep :80”,若占用要么杀死占用80端口的进程kill pid,要么重新监听一个端口
我们是这种不思进取,采用关闭防火墙就完事的人么?不是!防火墙没开,也要给它开起来
打开防火墙systemctl start firewalld
查看防火墙开放的端口
firewall-cmd --list-port
啥也木有说明 防火墙没有开放80端口
防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent systemctl restart firewalld # 重启防火墙服务使新配置生效 firewall-cmd --list-port #重新查看开放的端口
ok 防火墙这一关过了
等等!刚刚都是防火墙的命令行,配置的开放端口的规则写在什么文件里了?
在/etc/firewalld 文件夹里,
查看用户配置好的防火墙端口规则
cat /etc/firewalld/zones/public.xml
启动服务
切换当前工作目录到server.js所在目录然后node server.js成功! ,如果你还没有买域名或者域名还没备案,可以直接在地址栏输入你的阿里云服务器实例相关的公网IP进行访问.
完婶了么? 直接 node server.js 后发现 linux系统界面使用不了其他命令了,只能ctrl+c终止server.js服务——是时候介绍pm2模块
.pm2官网
.
看看大神怎么介绍pm2模块的……你所不知道的pm2
哦呦,大神的文章配的图肿么看起来好看多了…….
安装pm2模块
npm i -g pm2
切换当前工作目录到server.js所在目录然后pm2 start server.js
pm2 start server.js
这里之所以使用npm安装好pm2模块后 就可以全局使用pm2
是因为我把nodejs相关bin目录配置到了全局变量PATH里,
没配置过的,可以看我之前写的博文 linux系统下安装nodejs并配置全局变量
可以干点别的事情了~
看一下都有哪些服务在工作
ps -aux
只看node服务
ps -aux | grep node
linux系统的各种命令…….姑且需要啥就去百度啥好了,哈哈哈
关闭server.js
pm2 stop server.js
结语: 当年姐姐也是看过等级考试网络技术教材的人….这个IP那个IP曾经感觉6的不行。时过4年,配置个安全组就把我整蒙了(大概花了几个小时),这都是些神马,!#W@ER,看不大懂啊。要是当年就知道花个几百元买个阿里云服务器,早早地进行真实环境的实践……..不说了,一把泪
a7a4
相关文章推荐
- linux服务器下部署项目修改配置使请求路径前自动加上项目名称 附 直接请求ip访问方法
- 如何把JavaWeb项目部署到阿里云服务器并用公网ip访问
- 阿里云服务器linux环境,从启动tomcat服务器外网访问--->绑定域名--->Navicat远程连接mysql--->阿里云服务器部署项目过程中,一定会遇到的五大问题;
- 从写项目到部署linux服务器全过程-linux防火墙端口配置篇
- 阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇
- 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法
- 阿里云 > 教程中心 > java教程 > 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上 详细的图文教程来实现 eclipse
- 配置阿里云ESC服务器部署项目
- [置顶] 阿里云服务器基于Linux系统部署javaweb项目,详解
- 在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目
- 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法
- tomcat iis下公用80端口 只需输入域名即可访问不同项目;适用于iis服务器下部署多个项目
- 本地项目部署到服务器并且访问的地址设置成指定的域名访问端口是80
- Linux系统使用weblogic服务器部署web项目
- 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat
- 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat
- 项目部署之多项目war配置同一个Tomcat利用不同端口访问项目(省略项目名/projectName 直接http://localhost:8090/)
- 阿里云服务器Linux CentOS安装配置(五)jetty配置、部署
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
- 阿里云服务器Centos6.5 部署SVN实现多项目管理