Gentoo/LinuxのApache2が起動できない問題
GentooでApache2を起動しようとした際, 2箇所ハマったので対処法をまとめておきます.
1. 80番ポートに関する問題
以下のエラーメッセージが出た時の対処方法.
# /etc/init.d/apache2 start * Starting apache2 ... (98)Address already in use: make_sock: could not bind to address [::]:80
80番ポートが既に使われているというメッセージです.
このメッセージは, Apache2を再起動した際によく見られるみたいです.
その場合は, 以下のコマンドでポートを専有しているApache2プロセスを終了して対処します.
# emerge lsof # lsof -i | grep http httpd 1638 root 3u IPv4 9004 0t0 TCP *:http (LISTEN) httpd 1638 root 4u IPv4 9013 0t0 TCP *:https (LISTEN) # kill -9 1638 # lsof -i | grep http # /etc/init.d/apache2 start
しかし, 今回は"lsof -i | grep http"した時に, 何も出なかった場合の対処法です.
つまり, 専有しているプロセスがないにもかかわらず, 80番ポートが既に使われている状況です.
もしかしてと思い, バーチャルホストのポート設定を見てみました.
バーチャルホストとは, 単独サーバで複数ドメインのWebページを公開する機能です.
こちらのバーチャルホストの80番ポートの指定をコメントアウトしたら直りました.
これが本当に正しいのかはわからないので, 詳しい方がいたら是非教えて下さい.
以下その手順です.
# nano /etc/apache2/vhosts.d/00_default_vhost.conf Listen 80 ← この行の文頭に#をつけてコメントアウトする.
2. start-stop-daemonになる問題
以下のエラーメッセージが出た時の対処法.
# /etc/init.d/apache2 start * Starting apache2 ... * start-stop-daemon: failed to start `/usr/sbin/apache2' * apache2: caught SIGINT, aborting
/usr/sbin/apache2の起動に失敗したというメッセージです.
このメッセージは, /etc/hostsにドメインやホストネームが書かれていないために起きます.
そこで, 以下のように/etc/hostsを書き換えます.
# nano /etc/hosts 127.0.0.1 localhost ↓ 127.0.0.1 localhost.localdomain localhost hostname ここで, hostnameとは/etc/conf.d/hostnameで設定した名前です. # /etc/init.d/apache2 start * Starting apache2 ...
参考文献
ApacheがRestartできない!(98)Address already in use: make_sock… | Weblogy
In the name of SUDO • Apache in Gentoo