最近的更新导致我局域网上的服务器无法通过端口 80 访问。我能够通过 22 ssh 进入它,nmap 显示它正在监听 22、443、3306 和 10000。但是,不是 80。对各种 .conf 文件进行了大量 cat 操作,但都无法找到答案。
终于在几个小时后,这篇帖子里出现了第一条回复:弗洛里安·迪施 (Florian Diesch) 揭示了找出问题的第一步。
他建议在该机器上放置另一台服务器,如下所示:sudo python -m SimpleHTTPServer 80,结果表明 apache2 实际上没有问题,只是其中一个 conf 文件坏了。
在端口 80 可用之前,我根本无法使 systemctl status apache2.service 工作,然而在使用上面的 python 代码片段对端口 80 进行一些监听之后,我得到了以下结果:
systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: failed (Result: exit-code) since Tue 2017-06-13 20:40:43 EDT;
39s ago
Docs: man:systemd-sysv-generator(8)
Process: 4411 ExecStart=/etc/init.d/apache2 start (code=exited,
status=1/FAILURE)
Jun 13 20:40:43 s2 apache2[4411]: * The apache2 configtest failed.
Jun 13 20:40:43 s2 apache2[4411]: Output of config test was:
Jun 13 20:40:43 s2 apache2[4411]: AH00526: Syntax error on line 5 of
/etc/apache2/conf-enabled/phpmyadmin.conf:
Jun 13 20:40:43 s2 apache2[4411]: order not allowed here
Jun 13 20:40:43 s2 apache2[4411]: Action 'configtest' failed.
Jun 13 20:40:43 s2 apache2[4411]: The Apache error log may have more
information.
.......
随后还有几行,但突出的一点是 phpmyadmin.conf 和“此处不允许排序”。
我编辑了 phpmyadmin.conf 并发现了以下内容:
Alias /phpmyadmin /usr/share/phpmyadmin
Order Deny, Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.1.0
Allow from 192.1.1
<Directory /usr/share/phpmyadmin>
various configs .....
</Directory>
我继续用 # 注释掉包含“Order”的行,保存配置文件,然后再次测试。每次错误都会再次显示,有问题的行号会加一。当我将第一个配置块之前的五行全部注释掉后,一切又恢复正常。我和儿子都不知道错误是怎么出现的,因为我们都没有编辑过这个文件。
然而,我终于记起来,那天早些时候,我曾通过 ssh 进入服务器并执行了更新/升级循环。这是这五行代码进入 phpmyadmin.conf 文件的唯一可能来源。
我必须承认,当我发现问题的根源时,我完全不知所措。它实际上是彻底终止了端口 80 的 apache2 服务。我最终意识到 apache2.conf 文件本身在加载时包含了其他文件,从而引入了问题 conf 文件。
经过 12 个小时的故障排除,但在经过大量搜索、跟踪各个洞穴中的兔子之后,终于使它工作正常。
希望其他人可以从这些启示中受益。
答案1
Order、allo 和deny 显然不允许出现在那里。它们只能与某些模块一起使用(https://httpd.apache.org/docs/2.2/howto/access.html)
在您更新之前,当时版本的 apache 可能忽略或警告了该错误。新版本选择失败。当您遇到此类问题时,请始终运行 apache configtest 程序,如果错误不明显,请在 Apache 手册中查找指令。