Apache2 启动失败,没有错误日志

Posted

技术标签:

【中文标题】Apache2 启动失败,没有错误日志【英文标题】:Failed Apache2 start, no error log 【发布时间】:2013-09-29 08:03:34 【问题描述】:

我会重启 Apache2 但出现错误

$ sudo service apache2 start

Starting web server apache2

Action 'start' failed.
The Apache error log may have more information.

但是“/var/log/apache2/”中的所有错误日志都是空的。

编辑:文件位于“/var/log/apache2”,之前的问题中有几个条目,但此任务不会创建任何新的 etry ...

问题出在哪里?


我已经解决了问题!

这是 SSL 证书中的错误,并且 vHost 配置中“error.log”的路径已更改。

如果您不需要 SSL(我不需要,因为我正在运行本地系统)只需禁用所有 配置中的 vHost HTTPS/SSL 条目,由命令行输出。

【问题讨论】:

检查系统日志是否有错误 磁盘有空间吗? 只是评论:服务器停止了吗?否则,如果您运行sudo service apache2 start,它将失败。重新启动应该是:sudo service apache2 restart 服务器已关闭,因为它不会在启动时启动 系统日志是否还有其他错误会影响 apache? 【参考方案1】:

我也遇到了类似的问题,即service apache2 reload 失败但没有打印出有用的信息。这是因为/etc/init.d/apache 中的脚本(至少在 Debian 上)吃掉了它运行以清理 Apache 配置的 apache2ctl configtest 命令的输出。

获得更有意义的失败解释的简单解决方案是自己再次运行apache2ctl configtest,这会将(希望有用的)错误消息打印到控制台。

【讨论】:

“吃掉...的输出” - 太棒了:) 我的 apache2ctl configtest 说 Syntax OK 但 apach 没有启动 naymore :((【参考方案2】:

配置文件中的语法错误似乎会导致问题。通过转到目录并从命令行执行它,我发现了问题所在。

httpd -e info 

这给了我错误

Syntax error on line 156 of D:/.../Apache Software Foundation/Apache2.2/conf/httpd.conf:
Invalid command 'phpIniDir', perhaps misspelled or defined by a module not included in the server configuration

【讨论】:

谢谢。我并不经常生活在 Apache 世界中。过去两天试图获取 SSL 工作信息 这个命令让我摆脱了最初的问题,这是我正在使用的 bitnami 发行版中的一堆语法问题。这至少让我遇到了下一个错误:) 如果通过自定义服务启动,您也可以附加此内容,例如 ExecStart=/usr/sbin/apache2 $OPTIONS -e INFO -DFOREGROUND【参考方案3】:

谢谢,蒂姆!对我来说是个大笨蛋。其他一些其他人可能会觉得有帮助的细节:

(Ubuntu 12.04 上的 Apache2)

我有两个站点在同一台服务器上运行,并且刚刚更新了其中一个站点的 SSL 证书。重新启动服务器后,我收到了那个神秘的消息,但两个站点都没有工作(显然)。我也在配置文件中找到了日志文件的重定向。我对其进行了追踪并发现了问题(在我刚刚更新的网站的日志文件中)。

我的配置文件位于 /etc/apache2/sites-available

vim 或 cat 文件 (cat filename) 并查找 ErrorLog 行。这会告诉您在服务器上的位置。 cat 那个文件,我发现的错误信息是:

[error] Unable to configure RSA server private key
[error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
[warn] RSA server certificate CommonName (CN) `<snip>.com' does NOT match server name!?

我将我的一个证书文件复制到了错误的目录。我只是将它移动到正确的目录,下次启动时一切都很好。 (提示:这些文件的位置也在配置文件中;)

【讨论】:

【参考方案4】:

在 apache 虚拟主机中,您必须定义错误日志文件的路径。 apache2第一次启动时会自动创建。

例如 apache 虚拟主机中的 ErrorLog "/var/www/www.localhost.com/log-apache2/error.log"..

【讨论】:

没有错误文件位于“/var/log/apache2”,并且之前的问题存在多个错误。但是 这个 Start-Attemp 不会在任何错误日志中创建新条目 如果文件存在,可能是你的磁盘空间问题,也检查一下 之前的日志是不是同一个用户创建的,可以是用户授权创建日志文件。由于用户问题,我之前遇到过同样的问题 是的。所有条目均来自一位用户【参考方案5】:

在 XAMPP 上使用

D:\xampp\apache\bin>httpd -t -D DUMP_VHOSTS

这会在您的虚拟主机配置中产生错误

【讨论】:

【参考方案6】:

我在 Raspberry Pi 上遇到了这个问题。在尝试了除了重新安装之外的所有方法之后,我一时兴起删除了 /var/run/apache2/apache2.pid。我重新启动了 Apache,一切正常。不知道怎么解释。

【讨论】:

【参考方案7】:

如果我们在日志文件中没有条目,那么我们可以尝试使用以下命令调试 apache2:

$ apache2 -S

$ apache2 -e debug

可能的输出:

[Fri Apr 05 04:04:59.682880 2019] [core:warn] [pid 11086] AH00111: Config variable $APACHE_RUN_DIR is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot

【讨论】:

【参考方案8】:

我今天遇到了这个确切的问题。我已经从 RHEL 6 复制了整个 /etc/httpd 并将其放到 CentOS 6 系统上,并确保安装了所有 RPM。

只要 apache 启动,它就会默默地失败。 strace 找到了罪魁祸首:我正在使用 CustomLog 来调用目标系统上未安装的程序。一旦我安装了预期的程序,Apache HTTP Server 就会立即启动。

【讨论】:

【参考方案9】:

尝试禁用 SElinux 或为 SElinux 配置虚拟主机

使用 SElinux 进行配置 https://muchbits.com/apache-selinux-vhosts.html

禁用 SElinux https://linuxize.com/post/how-to-disable-selinux-on-centos-7/

【讨论】:

【参考方案10】:

您可以通过以下方式使其工作:

    删除 /var/run/apache2/apache2.pid 然后检查它是否工作

    您可以禁用 SELinux,然后检查它是否有效。您可以使用 https://linux4one.com/how-to-disable-selinux-on-centos-7/ 教程永久或临时禁用 SELinux

【讨论】:

【参考方案11】:

在 Linux 上的 Apache 上,可能会出现无法检查配置的问题,因为未设置环境变量的问题。这是一个误报,仅在从命令行运行apache2 -S 时才会发生(请参阅@simhumileco 的先前答案)。例如Config variable $APACHE_RUN_DIR is not defined

为了解决这个问题,从命令行运行 source /etc/apache2/envvars 然后运行 ​​`apache2 -S' 来解决真正的(可能的)问题。

root@fileserver:~# apache2 -S
[Thu Apr 30 10:42:06.822719 2020] [core:warn] [pid 24624] AH00111: Config variable $APACHE_RUN_DIR is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
root@fileserver:~# source /etc/apache2/envvars
root@fileserver:/root# apache2 -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
<----snip---->
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ldap-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
root@fileserver:/root#

【讨论】:

以上是关于Apache2 启动失败,没有错误日志的主要内容,如果未能解决你的问题,请参考以下文章

apache启动失败

启动 apache 失败(无法绑定到地址 0.0.0.0:80)

启动 apache 失败(无法绑定到地址 0.0.0.0:80)

Linux启动apache失败怎么办

启动mysql服务失败,错误码:1067.

DataNode启动失败问题解决