昨年、作った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を適宜設定しましょう。
続きを読む