开发者社区> 问答> 正文

Apache启动错误怎么办

Apache启动错误怎么办?

展开
收起
开发者说 2019-07-11 15:03:09 998 0
1 条回答
写回答
取消 提交回答
  • 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
    2019-07-22 11:31:09
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像