var
来源:景安IDC资讯作者:server发布时间:2015-10-19点击:3513
如何解决网站无法访问 Apache也无法启动?
1、错误现象
这是景安一个客户的案例,客户告知网站无法访问了,并且Apache也无法启动。客户的网站是基于Apache+Tomcat+Mysql构建,于是登录景安服务器查看信息如下图。
这里提示的是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的值。
版权声明:本文系技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!