概述
nginx报错 - OpenEvent("Globalngx_stop_1676")failed (2: The system cannot find the file specified
- 问题
- 原因
- 解决方法
- 80端口被system(pid=4)占用的解决方法
- 1.查找80端口被谁占用的方法
- 原因一:
- 原因二:
- 2.取消 system 进程对80端口的占用
- 方法一:
- 方法二:(这两个方法我是一起用的,所有我认为一肯定是有效的二的话我不确定大伙可以试试)
- 80和8080端口的区别(选看)
- 80端口和8080端口没有本质区别
问题
当我在cmd中运行start nginx
之后再运行 nginx -s stop
或者nginx -s reload
的都会报以下的错误。
nginx: [error] OpenEvent(“Globalngx_stop_1676”) failed (2: The systemcannot find the file specified)
原因
为什么会出现这个问题呢让我们一步步定位:
其实这个报错意思就是你的nginx并未启动成功,那么为什么会出现nginx无法正常启动呢,我当时是觉得可能是端口导致的问题,于是我将80端口改成了8080端口,发现居然好使了
E:nginx-1.14.0confnginx.conf)【配置地址】(自己参照修改)
(修改下图红框处listen值 即可)
解决方法
那么如果我们需要使用的一定是80端口那怎么办,那说明真相只有一个!!!!
答案:80端口被占用
那么我们需要去查看一下到底是什么进程占用了80端口
80端口 一般会被 Apache 或是IIS 占用。因为系统是默认的80端口。
如果想查看80端口被占用
可以直接在cmd中运行 netstat -ano
查看 80端口占用情况。
通过PID 为一个数值,在任务管理器中查看PID 列。
如图 PID 为4 ,那么在任务管理器中 查看PID 为4的进程
如果没有显示 PID 列。
可以在 进程—>查看----选择列。选择PID列
然后就可以判断到底是哪个 PID 的进程或是服务占用了。
80端口被system(pid=4)占用的解决方法
那么我们已经定位到了是被pid4占用了80端口的使用
那么pid到底是什么程序呢,面子这么大,能让系统占用80端口的?
1.查找80端口被谁占用的方法
原因一:
进入命令提示行(开始运行输入 CMD),输入命令 netstat –ano ,就可以看到本机所有端口的使用情况,一般80端口在第一行,截图显示,端口已经被占用,PID 中写明 LISTENING 4。
PID=4 的程序是哪一个呢?
1.在命令提示和下输入指令 tasklist ,列出所有当前运行的进程,
2.发现 PID=4 的进程,居然是
system
。
原因二:
除此之外,我还在网上找到了另外80端口被 system 占用的原因,就是微软家的 IIS 服务
,关闭方式可以去控制面板去关闭即可。**
2.取消 system 进程对80端口的占用
因为我遇到的是第一种问题,所以原因二具体方法这里就不赘述了,大家可以根据我上面文章结合其他博主解决方案解决。
方法一:
经过查询,发现占用80端口是 SQL Server里面的组件——SQL Server Reporting Services (MSSQLSERVER)。是 SQL Server 的日志系统,就是他好端端的突然占用了80端口,而且对于普通人来讲,这个组件的作用没啥用,关掉也是节约资源。
关闭方法很简单,在运行框中输入 services.msc
,进入服务窗口。或者直接在开始菜单里面的搜索框中输入“服务”即可打开。然后找到 SQL Server Reporting Services (MSSQLSERVER) 这个服务,然后停止,被占用的80端口
就被释放出来了。你也可以设置它的启动方式为“禁用”
。
方法二:(这两个方法我是一起用的,所有我认为一肯定是有效的二的话我不确定大伙可以试试)
用 “WIN“+”R“的组键,调出命令窗口,输入命令”regedit“
,调出注册表:
单击注册表下的HKEY_LOCAL_MACHINE
,在点开SYSTEM
。
再点开SYSTEM下的CurrentControlSet
,再点开Services
。
在 Services
下单击HTTP,然后在注册表右边双击打开Start属性项。
将Start
的属性值改成0
,单击确定,设置完成。
80和8080端口的区别(选看)
经过上面的操作后,nginx已经是可以正常启动,如果还是无法正常启动的同学,建议仔细认真的再操作一遍,端口不同的话也可用同样的方法更改。
当然其实我本身对于80端口和8080端口的区别并不是很了解所以我也顺便学习了一下两者的区别,有兴趣的可以观看一下
80端口和8080端口没有本质区别
80
端口和8080
端口经常用于Web应用程序,只是数字的区别而已,没有本质的区别。
- IIS,微软的internet信息服务器,提供web服务,默认使用80端口
- apache,一个开源的web服务器,提供web服务,默认使用8080端口
一般80作为网页服务器的访问端口,比如一个网站的ip地址是123.123.123.123,我们访问的是123.123.123.123:80
只是80是默认端口可以省略。但是如果一个服务器上有不同的站点,那可以用另外的端口,比如123.123.123.123:8080
来访问,选择8080是因为两个80好记。
80是http协议的默认端口,是在输入网站的时候其实浏览器(非IE)已经帮你输入协议了,所以你输入http://baidu.com,其实是访问http://baidu.com:80。而8080,一般用与webcahe,完全不一样的两个,比如linux服务器里apache默认跑80端口,而apache-tomcat默认跑8080端口,其实端口没有实际意义只是一个接口,主要是看服务的监听端口。
持续更新中…
最后
以上就是无限电脑为你收集整理的nginx报错 - OpenEvent(“Global\ngx_stop_1676“)failed (2: The system cannot find the file specified问题原因解决方法80端口被system(pid=4)占用的解决方法80和8080端口的区别(选看)的全部内容,希望文章能够帮你解决nginx报错 - OpenEvent(“Global\ngx_stop_1676“)failed (2: The system cannot find the file specified问题原因解决方法80端口被system(pid=4)占用的解决方法80和8080端口的区别(选看)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复