开发者社区> 问答> 正文

ECS Linux Apache 有哪些常见启动错误及解决办法


ECS Linux Apache 启动经常遇到各种错误,有的会导致 Apache 启动失败,本文对常见错误及解决办法进行说明。




ECS Linux Apache 因 mod_ssl 启动失败



问题现象


查看Apache错误日志如下:

执行配置检查 /alidata/server/httpd/bin/apachectl configtest,报错如下:


问题原因


mod_ssl.so 模块加载异常

解决方案


重新编译异常模块
到 Apache 源码路径(以一键安装包为例)/root/sh/sh-1.4.1/httpd-2.4.10/modules/ssl
1、执行如下命令: /alidata/server/httpd/bin/apxs -a -i -c -L /usr/lib64/openssl/engines/lib -c *.c -lcrypto -lssl -ldl
出现如下信息,代表编译正常:

2、再次执行配置检查 /alidata/server/httpd/bin/apachectl configtest,通过。

3、启动 Apache 成功


ECS Windows Apache 启动报错:错误模块 php5ts.dll,错误地址 0x000e890c



问题现象


启动 httpd 时,出现错误,查看日志,Apache 的 error.log 中记录为: [warn] pid file D:/Program Files/Apache Software Foundation/Apache2.2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
Windows 的事件查看器/应用程序中显示为:
Application Error 中事件详细信息:错误应用程序 httpd.exe,版本 2.2.17.0,错误模块 php5ts.dll,版本 t5.3.5.0,错误地址 0x000e890c。

问题原因


涉及 php5ts.dll 错误的处理,一类是因为 PHP 只能使用自身版本的 dll,如果出现因为系统路径变量的原因,导致其他版本的 dll 先行引用,则出现错误。
针对此类错误,或是删除其他版本 dll;或修改系统 PATH 变量,将 PHP 的放在前面;或将 PHP 的 dll 放到系统的 System32 目录下。
不过,若确认路径没有问题,PATH 变量中 PHP 的安装目录还在 System32 前,也没有其他版本的 php5ts.dll,让然存在问题,请参考如下解决方法。

解决方案


查看 errorlog,找到报错无法 load 的模块,如下 [14-Mar-2011 10:22:15] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\Program Files\PHP\ext\php_oci8.dll' - 找不到指定的模块。 in Unknown on line 0[14-Mar-2011 10:22:15] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\Program Files\PHP\ext\php_oci8_11g.dll' - 找不到指定的模块。 in Unknown on line 0[14-Mar-2011 10:22:15] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\Program Files\PHP\ext\php_pdo_oci.dll' - 找不到指定的模块。 in Unknown on line 0[14-Mar-2011 10:22:15] PHP Warning:  PHP Startup: Unable to load dynamic library 'D:\Program Files\PHP\ext\php_sybase_ct.dll' - 找不到指定的模块。 in Unknown on line 0
回到 php.ini 中,将上面 4 个模块注释掉: [PHP_OCI8];extension=php_oci8.dll[PHP_OCI8_11G];extension=php_oci8_11g.dll[PHP_PDO_OCI];extension=php_pdo_oci.dll[PHP_SYBASE_CT];extension=php_sybase_ct.dll
重新启动 Apache 成功。


ECS Apache 启动失败,日志错误:No space left on device: Couldn't create accept lock



问题现象


Apache 启动未报任何错误,但是启动后 ps -ef | grep httpd 看不到进程。errror_log 显示:No space left on device: Couldn't create accept lock

但是查看空间是正常的,没有空间不足的情况。


问题原因


用户进程通信信号量达到限制导致

解决方案


ipcs -s | grep nobody   #nobody 是创建 Apache 进程的用户名,一般情况下 daemon,根据自己的实际情况写。

使用 ipcs -s -l 可以查看当前系统的设置。
使用 ipcs -su 可以查看当前的使用量
使用 ipcs -s | grep nobody | awk '{print "ipcrm -s" $2}'|sh    可以 kill 掉信号。
然后重新启动 Apache 进程即可。 /etc/init.d/httpd -k start


ECS Apache 启动报错:Starting httpd: httpd: bad user name apache



问题现象


启动 Apache 的时候(例如使用命令“:/etc/init.d/httpd start”)出现错误 :Starting httpd: httpd: bad user name apache(如下图)


问题原因


造成该问题的原因是系统中不存在用户 apache,因此导致启动失败。
验证是否存在 apache 用户,可执行命令: id apache
如提示 “id: apache: No such user”,则说明 apache 用户不存在

解决方案


用以下命令: useradd apache
新创建一个 Apache 用户,然后再启动 httpd。


ECS Apache 启动告警:Could not reliably... qualified domain name



问题现象


Apache 启动报错如下:


问题原因


这是 Apache 的提示信息,因为在配置文件 httpd.conf 中没有绑定域名,这个提示信息就是告诉用户,需要给 Apache 绑定域名。

解决方案


修改 Apache 的配置文件
1.找到 Apache 配置文件的路径,例如阿里云一键安装脚本的路径是:/alidata/server/httpd/conf/ 目录
2.编辑 Apache的 配置文件:httpd.conf
找到 ServerName 一行,将默认的 #ServerName www.example.com:80
取消#号修改为 ServerName 127.0.0.1

注意:也可以自定义域名
3.启动 Apache 服务

注意:阿里云一键安装脚本启动方式 /alidata/server/httpd/bin/apachectl restart

如果问题还未能解决,您可以到阿里云社区进行 免费咨询,或联系云市场商家 寻求帮助

展开
收起
boxti 2017-10-23 10:19:09 2386 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载