最近の更新により、私の LAN 上のサーバーがポート 80 でアクセスできなくなりました。22 で SSH で接続できましたが、nmap で 22、443、3306、10000 でリッスンしていることが分かりました。ただし、80 ではありません。さまざまな .conf ファイルで cat を何度も実行しましたが、答えは見つかりませんでした。
数時間後、ついにこの投稿への最初の返信が届きました。フロリアン・ディーシュによる研究は、問題解決の第一歩を明らかにした。
次のようにしてそのマシンに別のサーバーを配置するという彼の提案: sudo python -m SimpleHTTPServer 80 により、apache2 に実際には問題はなく、conf ファイルの 1 つが壊れているだけであることが明らかになりました。
ポート 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 ずつ増加してエラーが再度表示されました。最初の構成ブロックの前の 5 行すべてをコメント アウトすると、すべてが再び機能しました。息子も私もファイルを編集していなかったため、エラーがどのように表示されたのかわかりませんでした。
しかし、その日の早い時間に、サーバーに ssh で接続して更新/アップグレード サイクルを実行していたことをようやく思い出しました。これが、これらの 5 行が phpmyadmin.conf ファイルに入力された唯一の原因です。
正直に言うと、これが問題の原因だとわかったときは、まったく困惑しました。実際には、ポート 80 の apache2 サービスが完全に停止していました。最終的に、apache2.conf ファイル自体がロード時に他のファイルをインクルードしていたため、問題のある conf ファイルが導入されたことがわかりました。
トラブルシューティングに 12 時間かかりましたが、大量の検索からさまざまな穴に迷い込んだ後、ようやく動作するようになりました。
他の誰かがこれらの啓示から恩恵を受けられることを願っています。
答え1
order、alloe、denyは明らかにその場所では許可されていません。これらは一部のモジュールでのみ使用できます(参考:)
アップデート前の Apache のバージョンでは、エラーを無視するか警告していた可能性があります。新しいバージョンでは失敗します。このような問題が発生した場合は、必ず Apache configtest プログラムを実行し、エラーが明らかでない場合は、Apache マニュアルでディレクティブを調べてください。