mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - Apache 2.4.1 をソースからインストール!

[ サーバ構築 ] [ Apache, CentOS, ScientificLinux ]

こんばんは。

現在の 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) をインストールしておく。

1
# yum -y install pcre-devel

2. APR のインストール

httpd のビルドに必要な APR をソースからインストールする。 yum でインストールすると apache のバージョンと整合性が取れず apache がインストールできません。 ※当記事執筆時点で、APR 1.4.6 が最新。

1
2
3
4
5
6
7
# 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 が最新。

1
2
3
4
5
6
7
# 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 が最新。

1
2
3
4
5
6
7
# 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. インストール確認

インストールできているか確認する。

1
2
3
# /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.1 (Unix)
Server built:   Apr 12 2012 23:24:27

6. 起動確認

インストールされた Apache が起動するか確認する。

1
2
3
4
5
6
7
# /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://%EF%BC%9C%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AEIP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%EF%BC%9E へアクセスして、"It works!“ と表示されれば OK です。 そして、一旦 Apache を停止します。

1
# /usr/local/apache2/bin/apachectl stop

7. 起動スクリプト編集

Apache 起動用スクリプトを所定の位置へコピーして、編集します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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” を以下のように編集します。

1
2
3
4
# 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” を以下のように編集します。

1
2
3
4
# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
PidFile "logs/httpd.pid"
 ↓ 変更
PidFile "/var/run/httpd.pid"

10. 自動起動設定

マシン起動時に自動で Apache を起動させるために、chkconfig の設定をします。

1
2
3
4
# 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 コマンドで起動・再起動・ステータス確認・停止ができることを確認する。

1
2
3
4
# 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