【故障分析】apache启动失败

2021-03-18    分类: 网站建设

【故障分析】apache启动失败
客户的一台web服务器,是基于Apache+JK+Tomcat构建的一个电商平台,在机器更换硬件重新启动后,客户反映apache启动失败,但是tomcat可以启动,启动Apache的错误信息如下。
【故障分析】apache启动失败
于是又检查了操作用户和Apache监听的端口,如下图。
【故障分析】apache启动失败
从输出可知,Apache的启动用户是www,监听端口为80,接着查看到/usr/local/apache2/目录所有文件和目录的权限都是www,看来不是读写权限的问题,于是继续排查,这里更换了Apache的监听端口,将其改为8000,看是否能启动成功,如下图。
【故障分析】apache启动失败
虽然这次启动没报错,但是根据httpd进程的状态来看,启动应该还有问题,于是查看Apache启动日志,如下图。
【故障分析】apache启动失败
从日志输出看,果然存在问题,通过存在问题,通过日志基本判断是Apache的pid文件无权限导致的。接着检查httpd.pid文件的选项,操作如下:
[root@cloud1 logs]# ll/usr/local/apache2/logs/httpd.pid
-rw-r--r-- 1 root www 6 Sep 16 17:33
/usr/local/apache2/logs/httpd.pid
从输出可知,httpd.pid权限的属主为root,将其修改为www用户,操作如下:
[root@cloud1 logs]# chown www/usr/local/apache2/logs/httpd.pid
然后,重庆Apache2,如下图。
【故障分析】apache启动失败
可以看到,这次Apahce启动成功了,看来Apache配置并无问题,通过8000端口可以启动,而通过80端口则无法启动,这是什么问题呢?
1、解决思路
既然这个案例是与端口相关的,那么久需要了解下Linux系统中的端口,在Linux系统下可用的端口范围是1-65535,端口可分为三类,分别是公认端口、注册端口和动态端口。
用户www无法启动Apache的80端口,是因为80端口属于公认端口,普通公认端口,普通用户无权绑定,而8000端口属于注册端口,普通用户可以自由使用,这是此案例要查找的原因。
2、解决问题
如何使用Apache的80端口呢,这里提供两种方法,分别是:
1)将Apache以root用户启动即可,这是最简单的方法。
2)修改Apache目录下httpd文件的SUID属性。
种方法实现简单,但是有安全问题,如果黑客入侵了80端口,那么他也拥有了root权限,因此,不推荐使用种方法,因为保证程序的安全才是根本。这里简单介绍下第二种方法的实现过程。首先通过root用户进行如下授权,如下图。
【故障分析】apache启动失败
然后再www用户下再次启动Apache,可以看到这次启动正常了,如下图。
【故障分析】apache启动失败
从这个输出可以看出,其实Apache还是在root用户下启动的,上面的修改只不过是保证普通用户可以正常启动Apache而已,另外,启动的httpd进程对应的用户除了root,还有www用户,这其实是一种父进程和子进程的关系,父进程由root用户启动后,会派生出多个子进程,而这些子进程的启动用户是可定义的,可以在配置文件httpd.conf的如下选项中修改:
User www
Group www
至此,这个案例被完整剖析!

本文标题:【故障分析】apache启动失败
新闻来源:/news34/105384.html

成都网站建设公司_创新互联,为您提供响应式网站网站建设静态网站用户体验域名注册微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设