一:背景
发布网站的方式有很多种:
php 有:IIs+php+mysql、apache+php+mysql 、nginx+php-cgi+mysql
jsp 有: iis+jre+tomcat
而Nodejs可以不借助第三方发布方式,自己指定端口号,启动服务器。
二:矛盾冲突
Nodejs 一般使用非80端口
微信公众号要求域名80端口或443端口
443端口即网页浏览端口,主要是用于HTTPS服务,是提供加密和通过安全端口传输的另一种HTTP。在一些对安全性要求较高的网站,比如银行、证券、购物等,都采用HTTPS服务,这样在这些网站上的交换信息,其他人抓包获取到的是加密数据,保证了交易的安全性,网页的地址以https://开始,而不是常见的http://。
我们项目没有像银行、证券、购物等的业务,加密方式也给微信公众号的开发增加了难度,因此最终不使用443端口,而确定使用80端口。
我们的项目是搭建在腾讯云服务器上的,系统是Windows Server 2012 R2,服务器自带了iis,而iis占用了80端口,如何将iis的80端口改成nodojs的80端口呢?
三:解决方案
1 运行'netstat -ano'发现80端口被pid=4的进程占用
2 打开任务管理器,发现pid=4的进程,其实是system进程,其对应的进程描述是NT kernel & system。
3 如何清除呢?需要使用注册表,开始-》运行-》regedit
4 找到HKEY_LOCAL_MACHINE目录
5 找到System
6 找到CurrentControlSet-Services
7 再找到http-start
8 打开,将3改为4,确定
9 重启电脑,就解除了NT Kernel & System占用80端口
然后重新启动nodejs服务器,打开浏览器,输入localhost或内网ip回车后,就会看到成功页面,使用外网浏览器访问时注意防火墙的配置