最近的更新使我的 lan 上的伺服器在連接埠 80 上無法存取。各種.conf 檔案未能找到答案。
終於,過了幾個小時,這篇文章的第一個回應:弗洛里安·迪施 (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」的行,儲存conf 文件,然後再次測試。每次錯誤都會再次顯示,有問題的行號會增加 1。當我在第一個配置區塊之前註解掉這五行中的每一行時,一切又恢復正常了。我和我的兒子都無法弄清楚錯誤是如何出現的,因為我們都沒有編輯過該文件。
然而,我終於記得那天早些時候,我已經透過 ssh 連接到伺服器並進行了更新/升級週期。這是進入 phpmyadmin.conf 檔案的這五行的唯一可能來源。
我必須承認,當我發現這就是問題的根源時,我完全被難住了。它實際上完全殺死了 80 連接埠的 apache2 服務。
經過 12 個小時的故障排除,但在跟隨許多兔子通過大量搜索進入各個洞後,終於讓它工作了。
希望其他人可以從這些啟示中受益。
答案1
那個地方顯然不允許命令、允許和拒絕。它們只能與某些模組一起使用(https://httpd.apache.org/docs/2.2/howto/access.html)
在更新之前,當時的 apache 版本可能會忽略或警告該錯誤。新版本選擇失敗。當您遇到此類問題時,請始終執行 apache configtest 程序,如果錯誤不明顯,請尋找 Apache 手冊中的指令。