景安重启服务器打不开网站,如何解决网站无法访问 Apache也无法启动?

如何解决网站无法访问 Apache也无法启动?

1、错误现象

这是景安一个客户的案例,客户告知网站无法访问了,并且Apache也无法启动。客户的网站是基于Apache+Tomcat+Mysql构建,于是登录景安服务器查看信息如下图。

86bd247bd982d35d4beadf364f322ff0.png

这里提示的是http.pid文件的错误,熟悉Apache的读者应该知道httpd.pid文件其实是Apache的进程pid文件,Apache的启动进程ID就放在这个文件中。

2、解决思路

既然提示httpd.pid这个文件有问题,那么就先看看这个文件是否存在,以及其中的内容是什么。查看httpd.pid文件,操作如下:

linux:~#more/usr/local/apache2/logs/httpd.pid

发现这个文件存在,但是内容为空,这里肯定是有问题的。要解决这个问题,首先要了解Apache的启动机制及http.pid文件的作用。

httpd.pid文件为文本文件,内容只有一行,记录了httpd进程的pid。通过cat命令可以看到该文件的内容,通过这个pid文件可以防止进程启动多个副本。只有能获得pid文件的进程才能正常启动并把自身的pid写入该文件中。同一个程序的多余进程则自动退出。同时,httpd.pid文件在Apache正常启动时创建,正常关闭时自动删除,Apahce在启动时会查找httpd.pid文件是都存在,如果文件不存在就创建此文件,将Apache启动的进程ID写入http.pid中,并提示启动成功。如果文件存在但内容为空,那么就会出现“(2014)Internal error”的错误了。

在这个案例中,httpd.pid文件存在,但是内容为空,这个现象可能是磁盘空间耗尽导致的,也可能是系统突然断电导致的,总之导致这个问题的原因有很多种,这里并不打算深究,因为找到解决问题的办法是我们的目的。

3、解决问题

解决这个问题有两个办法:可以直接删除httpd.pid这个空文件,也可以将这个文件写入一个数字ID值,操作如下:

linux:~#echo"28976">>/usr/localo/apache2/logs/httpd.pid

linux:~#more/usr/local/apache2/logs/httpd.pid28976

接着,再次启动apache:

linux:~#usr/local/apache2/bin/apachectl start

这次Apache可以正常启动了,此时查看httpd.pid文件内容,信息如下:linux:~#more/usr/local/apache2/logs/httpd.pid7789

可以看到,Apache成功启动后,已经自动获取了一个新的pid值,进程间通信就以这个pid进行。Apache在启动后,保持这个pid值不变,直到下次重新启动Apache才更新httpd.pid的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值