昨年、作ったVMware上の開発環境が若干古くなってきたので、更新したときのメモ。
 環境構築をする際に追加したリポジトリ(EPEL, Remi, RPMForge)には、当時と同じApache 2.2.15までしかなかったので、CentALTというリポジトリを追加しました。CentOSのバージョンは、当時の6.2から6.3へアップグレードしています。
 リンク:CentOS開発環境の構築(Apache, MySQL, PHP)
Yumリポジトリの追加とApacheのupdate
 | # Yumリポジトリの追加 rpm -Uvh http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm   # 意図せず標準外のリポジトリを使うのを避けるため無効化、使う場合は明示する # リポジトリ設定ファイルのenabledを1から0にする vi /etc/yum.repos.d/centalt.repo [CentALT] enabled=0   # CentALTリポジトリを使ってApacheをアップデート yum --enablerepo=CentALT update httpd  | 
最後の方に、以下のような警告が表示されました。
 | 警告: /etc/httpd/conf/httpd.conf は /etc/httpd/conf/httpd.conf.rpmnew として作成されました。  | 
Apache2.2.23のデフォルトのhttpd.confに関するお知らせですね。2.2.15と2.2.23のdiffをとってみたら、Timeoutが60から、120に変更されていたり、設定項目にprefork ITKが増えていたりしていました。設定ファイルのインクルード状況等によって変わってきますので、各自の判断で切り替える等しましょう。また、 /etc/httpd/conf.d/proxy_ajp.confという設定ファイルが作成されていました。影響を与えることがないか確認しておきましょう。
 以上で完了です。
Apacheが再起動できない場合の対処法
元々のhttpd.confの状態や、インクルードしている設定ファイルの状態によって変わってくるので、一概には言えませんが、ほとんど初期設定のままの私の環境では、以下のようなエラーが表示され、Apacheの再起動ができませんでした。その場合の対処法をメモしておきます。
 Apache2.2.15をインストールしたときに作られたhttpd.confをそのまま使って、今回新しく作られたhttpd.conf.rpmnewは使っていないという状況下です。
 | service httpd restart httpd を停止中:                                            [失敗] httpd を起動中: [Wed Feb 06 15:20:10 2013] [warn] module proxy_ajp_module is already loaded, skipping (98)Address already in use: make_sock: could not bind to address [::]:80 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs                                                            [失敗]  | 
4〜7行目は、80のポートをすでに使用しているために出ているエラーです。うまくApacheをshutdownできていないようです。Apacheのプロセスを強制終了します。
 | # httpdのプロセスを確認 ps aux | grep httpd root      2319  0.0  0.7 522720  7180 ?        Ss   Feb04   0:10 /usr/sbin/httpd apache   15691  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15692  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15693  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15694  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15695  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15696  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15697  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd apache   15698  0.0  0.6 522856  6468 ?        S    10:39   0:00 /usr/sbin/httpd root     18454  0.0  0.0 107448   964 pts/1    S+   16:02   0:00 grep httpd   # rootで実行されているプロセスを終了させる kill 2319  | 
警告は表示されますが、無事に起動できました。
 | service httpd start httpd を起動中: [Wed Feb 06 16:04:51 2013] [warn] module proxy_ajp_module is already loaded, skipping                                                            [  OK  ]  | 
警告の解消
重複による警告
 | service httpd restart httpd を停止中:                                            [  OK  ] httpd を起動中: [Wed Feb 06 16:08:38 2013] [warn] module proxy_ajp_module is already loaded, skipping                                                            [  OK  ]  | 
3行目:proxy_ajp_moduleが2重定義されているために表示される警告です。新規に追加されたproxy_ajp.confと元々のhttpd.conf内に存在しています。解消法としては、以下のようなものが考えられます。
- proxy_ajp.confを削除する
 - httpd.conf内のproxy_ajp_moduleの設定を削除する
 - 新しく作られたhttpd.conf.rpmnewを使うようにする
 例: mv httpd.conf httpd.conf.2.2.15.default mv httpd.conf.rpmnew httpd.conf 
今回は3. の手法をとりました。
ServerNameによる警告
 | service httpd restart httpd を停止中:                                            [  OK  ] httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName                                                            [  OK  ]  | 
3行目:ServerNameの設定がないために表示される警告です。httpd.confないしは、インクルードするファイルで、ServerNameを適宜設定しましょう。
続きを読む