Linux - Apache 2.4.1 をソースからインストール!
Updated:
現在の Scientific Linux 6.2 や CentOS 6.2 ではリポジトリの関係上、パッケージでインストールできる Apache は 2.2.15 です。(今回は RedHat(RPM) 系 Linux での話です。) しかし、2.2.20 未満のバージョンでは脆弱性があるため DoS 攻撃を受け、Out Of Memory や それによる OOM-Killer の発動を引き起こしたりします。
今回は 2.4 系最新バージョンの Apache 2.4.1 をソースからインストールしました。
作業記録
0. 前提条件
今回は Scientific Linux 6.2 (x86_64版) で確認しましたが、i386版や CentOS 6.2 でも同様のはずです。
1. PCRE のインストール
httpd のビルドに必要な PCRE(Perl Compatible Regular Expressions) をインストールしておく。
# yum -y install pcre-devel
2. APR のインストール
httpd のビルドに必要な APR をソースからインストールする。 yum でインストールすると apache のバージョンと整合性が取れず apache がインストールできません。 ※当記事執筆時点で、APR 1.4.6 が最新。
# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.6.tar.gz
# tar zxvf apr-1.4.6.tar.gz
# cd apr-1.4.6
# ./configure
# make
# make install
3. APR-util のインストール
httpd のビルドに必要な APR-util をソースからインストールする。 yum でインストールすると apache のバージョンと整合性が取れず apache がインストールできません。 ※当記事執筆時点で、APR-util 1.4.1 が最新。
# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.4.1.tar.gz
# tar zxvf apr-util-1.4.1.tar.gz
# cd apr-util-1.4.1
# ./configure --with-apr=/usr/local/apr
# make
# make install
4. Apache をソースからインストール
以下のように Apache をソースからインストールする。 ※当記事執筆時点で、Apache 2.4.1 が最新。
# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.1.tar.gz
# tar zxvf httpd-2.4.1.tar.gz
# cd httpd-2.4.1
# ./configure --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
# make
# make install
5. インストール確認
インストールできているか確認する。
# /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.1 (Unix)
Server built: Apr 12 2012 23:24:27
6. 起動確認
インストールされた Apache が起動するか確認する。
# /usr/local/apache2/bin/apachectl start
# ps aux | grep httpd
root 31688 0.0 0.2 75544 2720 ? Ss 23:40 0:00 /usr/local/apache2/bin/httpd -k start
daemon 31689 1.0 0.4 419804 4536 ? Sl 23:40 0:00 /usr/local/apache2/bin/httpd -k start
daemon 31690 0.0 0.4 419804 4540 ? Sl 23:40 0:00 /usr/local/apache2/bin/httpd -k start
daemon 31691 1.7 0.4 419804 4544 ? Sl 23:40 0:00 /usr/local/apache2/bin/httpd -k start
root 31774 0.0 0.0 107440 940 pts/0 S+ 23:40 0:00 grep httpd
さらに、ブラウザから http://<サーバのIPアドレス> へアクセスして、”It works!” と表示されれば OK です。 そして、一旦 Apache を停止します。
# /usr/local/apache2/bin/apachectl stop
7. 起動スクリプト編集
Apache 起動用スクリプトを所定の位置へコピーして、編集します。
# cp /usr/local/src/httpd-2.4.1/build/rpm/httpd.init /etc/rc.d/init.d/httpd
# vi /etc/rc.d/init.d/httpd
httpd=${HTTPD-/usr/sbin/httpd}
↓ 変更
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
pidfile=${PIDFILE-/var/log/httpd/${prog}.pid}
↓ 変更
pidfile=${PIDFILE-/var/run/httpd.pid}
check13 () {
CONFFILE=/etc/httpd/conf/httpd.conf
↓ 変更
CONFFILE=/usr/local/apache2/conf/httpd.conf
:
}
8. Apache 設定ファイル編集
Apache 設定ファイル “httpd.conf” を以下のように編集します。
# vi /usr/local/apache2/conf/httpd.conf
#Include conf/extra/httpd-mpm.conf
↓ 変更
Include conf/extra/httpd-mpm.conf
9. Apache MPM 設定ファイル編集
Apache MPM(Multi-Proccessing Module) 設定ファイル “httpd-mpm” を以下のように編集します。
# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
PidFile "logs/httpd.pid"
↓ 変更
PidFile "/var/run/httpd.pid"
10. 自動起動設定
マシン起動時に自動で Apache を起動させるために、chkconfig の設定をします。
# chkconfig --add httpd
# chkconfig httpd on
# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2,3,4,5 が “on” になっていることを確認。
11. 動作確認
service コマンドで起動・再起動・ステータス確認・停止ができることを確認する。
# service httpd start
# service httpd restart
# service httpd status
# service httpd stop
ついでに、”/etc/rc.d/init.d/httpd” コマンドで同じ事ができるか確認もした。
12. 関連サイト
これで、脆弱性対策としてパッチを当てたり、別のモジュールを導入したりしなくてもよいはずです。 また、yum でインストールした場合とインストール先等が異なったりするので、その後の設定は若干変わってくると思います。要注意です。 ※ただ、実際には当方のサーバでは 2.2.22 未満の Apache の設定ファイルに対策を施して運用していますが。。。
以上。
Comments