最近的更新導致我的 16.04 伺服器不再偵聽連接埠 80

最近的更新導致我的 16.04 伺服器不再偵聽連接埠 80

最近的更新使我的 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 手冊中的指令。

相關內容