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