毎日こつこつ

Gentoo/Linuxユーザによる電子工作やマシン構築などの備忘録です.

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