标签:linux_apache
由于线上的空间满了,我先是切到根目录下然后用:
#du -h --max-depth=1
查看没有发现报满的空间有问题,于是查看是不是有些死进程占用的空间,于是用:
#lsof |grep delete
看到好多httpd的进程,上报后同意重启http,直接重启失败报下面的错误:
---------------------------------------------------------------------------------------------------------------------
Stopping httpd: [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
-------------------------------------------------------------------------------------------------------------------
在百度里查到的信息是说:
“至于日志目录,当然是看你apche里配置的日志路径所在目录是否存在了
有2个原因,一个是有其他程序占用80端口,还有一个原因,配置文件中监听的80端口重复。
请仔细检查下配置 Listen 参数
80端口被其他程序占用,
losf -i:80
让这样处理。于是自己就用
# fuser -k -n tcp 80
处理了一下,接着重启httpd成功。
httpd-manual mod_auth_mysql mod_perl mod_ssl
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
undefined symbol: apr_ldap_ssl_init
###在64bit机器上,使用yum remove把非64的i386/i686全部的安装包全部清除之后重启httpd出现错误:
Starting httpd: httpd: Syntax error on line 161 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into server: /etc/httpd/modules/mod_ldap.so: undefined symbol: apr_ldap_ssl_init
###在httpd.conf文件中把mod_ldap.so注释之后则出现以下错误:
Starting httpd: httpd: Syntax error on line 162 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_authnz_ldap.so into server: /etc/httpd/modules/mod_authnz_ldap.so: undefined symbol: apr_ldap_url_parse
###在httpd.conf文件中把mod_authnz_ldap.so注释之后虽然不错了,但是发生这样的错误感到莫名奇妙,很不舒服!
###于是接下来开始折腾了。。。。折腾了几个小时。。。。。使用“yum install httpd”重装apache以及所有相关包。。。。下载apache2.2.14最新稳定版源码重新编译。。。。。重新下载apr及apr-util源码编译安装。。。。删除再安装。。。安装再删除。。。网上几乎查遍了所有中英文网站资料。。。依然不行。。。。。真是折腾!!!(从后来知道的原因来看实在无语。。。。。。因此要广而告之!!!)
###以下是配置过程中出现的其它错误,列在这里以供搜索到此并供参考:
httpd: Syntax error on line 161 of /usr/local/apache2/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into server: /etc/httpd/modules/mod_ldap.so: undefined symbol: ldap_simple_bind_s
###在解决问题过程中开始怀疑ldap相关包有问题,而来在网上资料中发现应该是apr-util包有问题。
###那到底是什么原因?怎么解决呢? 执行./httpd -V 看看版本吧!
Server version: Apache/2.2.3
Server built: Jul 15 2009 09:02:25
Server‘s Module Magic Number: 20051115:3
Server loaded: APR 1.3.9, APR-Util 1.3.9 ###错误的!
Compiled using: APR 1.2.7, APR-Util 1.2.7 ###不兼容!
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
那为什么会装载1.3.9呢?执行export看看这个LD_LIBRARY_PATH环境变量吧!有没有指向类似/usr/local/apr/lib呢?
如果有的话,一般有人设置在这个文件:/etc/profile
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
先把它注释并重新登录用户,再执行./httpd -V应该这样就可以了:
Server version: Apache/2.2.3
Server built: Jul 15 2009 09:02:25
Server‘s Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
那么是谁配置了LD_LIBRARY_PATH环境变量呢?我在网上查到安装tomcat的时候有用到,那应该是我同事加的,加完之后没有重启httpd是不会发现错误的。
本文出自 “沙漠之鹘” 博客,请务必保留此出处http://shamozhihu.blog.51cto.com/6144046/1561548
标签:linux_apache
原文地址:http://shamozhihu.blog.51cto.com/6144046/1561548