Apache 2.2.21

提供: あべたけの覚え書き
移動: 案内検索

準備


インストール

  1. ソースの取得
    [root@XXXXX ~]# wget -P /usr/local/src http://www.ring.gr.jp/archives/net/apache/httpd/httpd-2.2.21.tar.gz

    /usr/local/srcにhttpd-2.2.21.tar.gzを取得。

  2. ソースの解凍
    [root@XXXXX ~]# cd /usr/local/src
    [root@XXXXX ~]# tar zxvf httpd-2.2.21.tar.gz

    /usr/local/srcにhttpd-2.2.21フォルダが作成される。

  3. APR(Apache Portable Runtime)のインストール
    1. apr(1.4.5)
      configureのヘルプ
      [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr
      [root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr
      [root@XXXXX ~]# make
      [root@XXXXX ~]# make install


    2. apr-util(1.3.12)
      configureのヘルプ
      [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21/srclib/apr-util
      [root@XXXXX ~]# ./configure --prefix=/usr/local/httpd-2.2.21/apr-util --with-apr=/usr/local/httpd-2.2.21/apr
      [root@XXXXX ~]# make
      [root@XXXXX ~]# make install


  4. コンパイル設定
    configureのヘルプ
    [root@XXXXX ~]# cd /usr/local/src/httpd-2.2.21
    [root@XXXXX ~]# ./configure \
    > --prefix=/usr/local/httpd-2.2.21 \
    > --enable-so \
    > --enable-rewrite=shared \
    > --enable-dav=shared \
    > --enable-dav-fs=shared \
    > --enable-dav-lock=shared \
    > --enable-ssl=shared \
    > --with-ssl=/usr/local/ssl/ \
    > --with-apr=/usr/local/httpd-2.2.21/apr \
    > --with-apr-util=/usr/local/httpd-2.2.21/apr-util


  5. インストール
    [root@XXXXX ~]# make
    [root@XXXXX ~]# make install


  6. シンボリックリンクの作成
    [root@XXXXX ~]# ln -s /usr/local/httpd-2.2.21 /usr/local/apache2


初期設定

apacheユーザーの作成

apache専用のユーザーを作成する。ユーザー名はapache。

[root@XXXXX ~]# groupadd apache
[root@XXXXX ~]# useradd -g apache apache


httpd.confの設定

[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf


  • ユーザーとグループの変更
    User daemon
    Group daemon
    ↓
    User apache
    Group apache


  • サーバー名の設定
    ServerName www.example.com:80
    ↓
    ServerName XXXXXXXXXXX:80


起動

下記のコマンドで起動、停止、再起動を行う

[root@XXXXX ~]# /usr/local/apache2/bin/apachectl start    ← 起動
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl stop     ← 停止
[root@XXXXX ~]# /usr/local/apache2/bin/apachectl restart  ← 再起動


動作確認

http,httpsでそれぞれアクセスし「It works!」が表示されればOK。

自動起動設定

  1. 起動スクリプトのコピー
    [root@XXXXX ~]# cp /usr/local/src/httpd-2.2.21/build/rpm/httpd.init /etc/rc.d/init.d/httpd


  2. 起動スクリプトの編集
    [root@XXXXX ~]# vi /etc/rc.d/init.d/httpd


    パスの変更

    httpd=${HTTPD-/usr/sbin/httpd}
    ↓
    httpd=${HTTPD-/usr/local/apache2/bin/httpd}


    (~check13()の中~)

    CONFFILE=/etc/httpd/conf/httpd.conf
    ↓
    CONFFILE=/usr/local/apache2/conf/httpd.conf


  3. 実行権限を与えて自動起動設定
    [root@XXXXX ~]# chmod 755 /etc/rc.d/init.d/httpd
    [root@XXXXX ~]# chkconfig --add httpd
    [root@XXXXX ~]# chkconfig httpd on
    [root@XXXXX ~]# chkconfig --list httpd
    httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off



STOPに失敗する

上記の手順でインストールするとhttpdスクリプトでstopさせる時に失敗してしまう。

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [失敗]

pidファイルの位置が違っているのが原因みたい。

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
 
[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/messagebus.pid
/var/run/haldaemon.pid
/usr/local/httpd-2.2.21/logs/httpd.pid    ← ここにpidファイルが作成されている

httpd起動スクリプトでは、

pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}

と記述されている。
Apache HTTP サーバ バージョン 2.2 ドキュメントによるとpid作成先を設定するディレクティブはPidFileでデフォルトはlogs/httpd.pidになるみたい。
httpd.confには記述が無いので追加する。

[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf
 
PidFile /var/run/httpd.pid                      ← ServerRootの次ぐらいの行に追加

httpd起動スクリプトも修正する。

[root@XXXXX ~]# vi /etc/rc.d/init.d/httpd
# pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}  ← コメントアウト
pidfile=${PIDFILE-/var/run/httpd.pid}           ← 追加

テスト

[root@XXXXX ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
[root@XXXXX ~]# find / -name *.pid
/var/run/abrtd.pid
/var/run/syslogd.pid
/var/run/sshd.pid
/var/run/crond.pid
/var/run/httpd.pid   ←
/var/run/messagebus.pid
/var/run/haldaemon.pid
 
[root@XXXXX ~]# /etc/rc.d/init.d/httpd stop
httpd を停止中:                                            [  OK  ]


STOPに失敗する その2

conf/extra/httpd-mpm.confにPidFileディレクティブの記述があるがソースからコンパイルするとhttpd.confでextra/httpd-mpm.confがincludeされない(?)ようである。httpd-mpm.confでPidFileのパスを修正し、httpd.confでextra/httpd-mpm.confをincludeさせてもOKかと。

[root@XXXXX ~]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
#PidFile "logs/httpd.pid"
↓
PidFile "/var/run/httpd.pid"
 
#LockFile "logs/httpd/accept.lock"
↓
LockFile "/var/lock/subsys/httpd"
[root@XXXXX ~]# vi /usr/local/apache2/conf/httpd.conf
# Server-pool management (MPM specific)
#Include conf/extra/httpd-mpm.conf
↓
Include conf/extra/httpd-mpm.conf        ← コメント外す

httpd起動スクリプトの修正は同じ。