稼働中のサーバでApacheの再インストールをしたら死んだ

当たり前ですがこんなことは絶対にやってはいけません。

これは私のアホな体験談です。
他山の石としていただければ幸いです。

SVNをバージョンアップしようとしたら、Apacheが再インストールされた

そもそもApacheを再インストールつもりなどは毛頭ありませんでした。
私がやりたかったのはただsvnコマンドのバージョンアップ(1.6 → 1.7)でした。

svnクライアントを1.7にすると、.svnディレクトリが1個になったりHTTP通信が高速化されたりその他いろいろメリットがあるという話を聞いたので、下記の自分の記事を参考しながらチャレンジしてみたのです。
CentOS6にSubversion1.7をインストールする方法

これが悲劇の始まりでした。

wandisco.comのサイトでメールアドレスや氏名を登録して、インストーラを落としてきてさあ実行!
# bash svn1.7_centos5_wandisco.sh
WANdisco Subversion Installer for CentOS 5
Please report bugs or feature suggestions to opensource@wandisco.com

Gathering some information about your system...
CentOS release 5.3 (Final)
CentOS version 5.x confirmed..
Checking your system arch
Installing for x86_64
Checking to see if you already have Subversion installed via rpm...
Subversion is not currently installed
Starting installation, are you sure you wish to continue?
[y/n]
勢いよく [y]

ずらずらとsubversionのインストールがはじまります。
次に、
Would you like to install apache HTTPD and the apache SVN modules?
[y/n]

(訳)「apacheとsvnモジュールのインストールをしますか?」
ここは当然 [n]と答えるべきところですが、
なんと手元が誤って [y]を押してしまいました。

おもむろにApacheの再インストールが始まってしまい、インストール完了と同時にhttpdデーモンが停止。
しゅん。。

まあ止めてしまったものはしょうがない。
┐(´ー`)┌
気を取り直してapacheを起動しよう。
# /etc/init.d/httpd start
httpd を起動中: [Sat May 19 01:39:47 2012] [warn] module ssl_module is already loaded, skipping
(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
                                                           [失敗]
( ゚д゚)

Apacheが起動しない!
Address already in use: make_sock: could not bind to address
エラーメッセージでぐぐってみると、「他のプロセスがそのポートを占有してる」「lsofコマンドで調査」などの解説がありそのとおりにやってみました。
しかし、443ポートが他のプロセスに奪われてる気配はありませんでした。

小一時間格闘したあげく、この記事にめぐりあいました。
Linuxに使われる日々 : apacheのポートにハマる - livedoor Blog(ブログ)
もしかしてhttpd.confの設定ミス??

grepで検索してみる。
# grep 443 /etc/httpd/conf/httpd.conf
Listen 443

#grep 443  /etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/ssl.conf:Listen 443
(つд⊂)ゴシゴシ

(((((((( ;゚Д゚)))))))

2つあるやんけ

なんとListen 443の記述が2か所にあります!
片方を消して再起動したら起動できました。

そもそもssl.confを置いた覚えがなかったので目を疑いました。
Apacheの再インストールの際に勝手に入ってしまったようです。

まとめ

  • 稼働中のサーバでApacheの再インストールをしたら死ぬ
  • yum(rpm)の芋づる式インストールに注意
  • Listenの記述が2箇所あると起動しない

おまけ

svnコマンドのバージョンアップ(1.7へ)が当初の目的だったので、最終的にそれが達成されてればいいやと思って確認したら、
$ svn --version
svn, バージョン 1.6.11 (r934486)
   コンパイル日時: May 14 2012, 05:36:18

死にたい。

カテゴリ: