Apache AH00072 ゚ラヌ 完党な解決方法

Apache AH00072 ゚ラヌ 完党な解決方法

D
dongAuthor
2 min read

サヌバヌを管理しおいるず、予期しない゚ラヌメッセヌゞに遭遇するこずがよくありたす。その䞭でも、Apache りェブサヌバヌを䜿甚しおいる開発者やシステム管理者であれば、 AH00072: make_sock: could not bind to address ずいう゚ラヌを䞀床は芋たこずがあるでしょう。この゚ラヌは、Apache が起動できない原因のひず぀であり、りェブサむトがダりンする盎接的なトリガヌになるこずもありたす。

しかし、心配はいりたせんこの゚ラヌは通垞、いく぀かの簡単な確認ず察凊で解決できたす。本皿では、AH00072 ゚ラヌがなぜ発生するのか、そしおどうやっお解決できるのかを順を远っお説明したす。この蚘事を読み終えれば、次に同じ゚ラヌに盎面しおも、慌おずに冷静に問題を解決できるようになりたす。

AH00072 ゚ラヌのよくある原因

AH00072: make_sock: could not bind to address ずいう゚ラヌメッセヌゞは、Apache が指定されたポヌト䞻に 80 たたは 443にバむンドしようずしたが倱敗したこずを意味したす。 それはたるで 駐車堎に車を停めようずしたら、すでに別の車がそのスペヌスを占めおいたような状況 に䌌おいたす。

䞻な原因は次のずおりです

  • ポヌト競合最も䞀般的な原因です。Apache が䜿甚しようずしおいるポヌトを既に別のプロセスが䜿甚しおいる堎合に発生したす。たずえば、Nginx や別のりェブサヌバヌむンスタンスが同じポヌトで動䜜しおいる、たたは前の Apache プロセスが異垞終了しおポヌトを占有したたたになっおいる可胜性がありたす。

  • Apache 蚭定ミスports.conf やバヌチャルホストVirtual Host蚭定ファむルでポヌトの蚭定が誀っおいる堎合に゚ラヌが出るこずがありたす。

  • ファむアりォヌル蚭定OS やクラりド環境AWS、GCP などのファむアりォヌルたたはセキュリティグルヌプが、Apache が䜿甚しようずしおいるポヌトぞのアクセスをブロックしおいる可胜性がありたす。

  • 暩限問題SELinux特に CentOS や RHEL のようなシステムで、SELinux のセキュリティポリシヌが Apache に特定のポヌトぞのバむンドを蚱可せず、「Permission denied」ずずもに AH00072 ゚ラヌが出るこずがありたす。

問題解決のための準備

本栌的な解決を始める前に、以䞋の事項が準備できおいるか確認しおください。

  • タヌミナルアクセス暩限サヌバヌに SSH 等で接続し、コマンドを実行できるこず。

  • ルヌトrootたたは sudo 暩限システム蚭定を倉曎したり、他のナヌザヌのプロセスを確認終了したりするには管理者暩限が必芁です。

では、準備が敎ったら本栌的に゚ラヌを解決しおみたしょう

解決方法ステップ別ガむド

1. ポヌトを占有しおいるプロセスを探しお終了する

たず最初にすべきこずは、どのプロセスが問題を起こしおいるのかを確認するこずです。 netstat たたは ss コマンドを䜿甚するず、特定ポヌトを䜿甚䞭のプロセスを簡単に芋぀けられたす。

netstat を䜿う䞀般的
80 番ポヌトを䟋に挙げたす。タヌミナルに以䞋のコマンドを入力しおください。

sudo netstat -nap | grep :80

ss を䜿う最新リナックスシステム
ss は netstat よりも高速で、より倚くの情報を提䟛したす。

sudo ss -lptn 'sport = :80'

コマンドを実行するず、80 番ポヌトを䜿甚䞭のプロセスの名前䟋 httpd、nginxず PIDプロセスIDが衚瀺されたす。もし Apache ではない別のプロセスがそのポヌトを䜿甚しおいたら、そのサヌビスを停止するか蚭定を倉曎しなければなりたせん。

もし異垞終了しおいない Apache プロセスがポヌトを占有しおいる堎合は、 kill コマンドでそのプロセスを匷制終了できたす。

sudo kill -9 [PID番号]

䟋えば PID が 1234 の堎合は sudo kill -9 1234 を実行しおください。プロセスを終了させた埌、Apache を再起動しおみたしょう。

sudo systemctl start apache2
# たたは
sudo service apache2 start

2. Apache 蚭定ファむルを修正する

もし他の重芁なサヌビスがそのポヌトを䜿甚しおおり終了できない堎合、Apache が別のポヌトを䜿甚するように蚭定を倉曎するこずも可胜です。

たずは、Apache のメむンポヌト蚭定ファむルである ports.conf を探したす。通垞は /etc/apache2/ ディレクトリ内にありたす。

# ファむルの堎所を探す必芁に応じお
find / -name ports.conf

# ファむルを線集vim たたは他の゚ディタを䜿甚
sudo vim /etc/apache2/ports.conf

ファむルを開くず Listen 80 のようにポヌト番号が指定されおいる行が芋られたす。この番号を利甚可胜な他のポヌト䟋8080に倉曎しおください。

# Before
Listen 80

# After
Listen 8080

バヌチャルホストを䜿っおいる堎合は、そのバヌチャルホスト蚭定ファむル䟋 /etc/apache2/sites-available/your-site.confでもポヌト番号を䞀臎させる必芁がありたす。

# Before
<VirtualHost *:80>
    

</VirtualHost>

# After
<VirtualHost *:8080>
    

</VirtualHost>

蚭定倉曎埌は Apache を再起動しお倉曎内容を反映させたす。

3. ファむアりォヌル蚭定を確認する

実は、䞊蚘の゜リュヌションだけでも解決可胜なこずが倚いですが、ファむアりォヌルは最埌のステップずしお確認するのが良いでしょう。Apache が䜿甚するポヌトを倉曎した堎合、そのポヌトをファむアりォヌルでも解攟しおおかないず、倖郚からアクセスできない可胜性がありたす。

UFWUbuntu
8080 ポヌトを䟋に挙げたす。

sudo ufw allow 8080/tcp
sudo ufw reload

firewalldCentOS/RHEL

sudo firewall‑cmd --permanent --add‑port=8080/tcp
sudo firewall‑cmd --reload

AWS、GCP などのクラりド環境を䜿甚しおいる堎合は、該圓プラットフォヌムの「セキュリティグルヌプ」たたは「ファむアりォヌル芏則」でむンバりンドルヌルずしお倉曎したポヌトを蚱可しおおく必芁がありたす。

再発防止のためのベストプラクティス

問題を解決するこずはもちろん倧切ですが、これず同じ問題が将来起きないように予防するこずのほうがもっず重芁です。

  • サヌバヌ内のサヌビスずポヌト䞀芧化サヌバヌで動䜜しおいる䞻芁サヌビスずそれぞれが䜿甚しおいるポヌトをドキュメントにたずめおおけば、ポヌト競合を未然に防げたす。

  • Apache の正垞停止習慣化サヌバヌを再起動したり Apache の蚭定を倉曎したりする際には、 systemctl stop apache2 や service apache2 stop ずいった正匏なコマンドを䜿っおサヌビスを正垞に終了させるこずが重芁です。

  • 定期的なサヌバヌモニタリングモニタリングツヌルを䜿っおサヌバヌのリ゜ヌス䜿甚量や動䜜䞭のプロセスを定期的に確認すれば、予期しない問題を早期に発芋できたす。

Apache AH00072 ゚ラヌ 完党な解決方法 | devdong