akishin999の日記

調べた事などを書いて行きます。

CentOS 6.2 用に Apache 2.4.1 の RPM を作成する

CentOS 6.2(i686)用に先日リリースされた Apache 2.4.1 の RPM を作成しインストールしてみました。

事前準備

開発用ツールのインストール。

# yum groupinstall -y "Development Tools"

yum リポジトリに EPEL を追加。

# rpm --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-5.noarch.rpm

事前に行っていた主な作業はこのくらいです(たぶん・・・)。
もし足りないライブラリなどがあればエラーが出るはずなので、適宜インストールしてください。

インストールされている Apache の削除

Apache の最新版を RPM ビルドしてインストールするため、まずは yum で入っていた Apache 関連パッケージを削除します。

# yum remove httpd apr apr-util

rpmbuild の準備

RPM を作成するため、rpmbuild の準備をします。

# useradd rpmdevel
# su - rpmdevel
$ mkdir -p ~/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}
$ echo "%_topdir $HOME/rpm" > $HOME/.rpmmacros
$ mkdir src

これで RPM 作成のための準備は完了です。

apr のインストール

aprRPM を作成してインストール。

$ cd src/
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.4.6.tar.bz2
$ rpmbuild -tb --clean --rmspec apr-1.4.6.tar.bz2

成功すれば /home/rpmdevel/rpm/RPMS/ 以下に RPM パッケージが作成されています。
apr-util の rpmbuild 時に必要になるので、ここでインストールしておきます。

$ su -
# rpm -Uvh /home/rpmdevel/rpm/RPMS/i686/apr-1.4.6-1.i686.rpm /home/rpmdevel/rpm/RPMS/i686/apr-devel-1.4.6-1.i686.rpm

SQLite3 のインストール

apr-util が必要とする SQLite3 の新しいバージョンを入れるため、FedoraSRPM を持ってきてリビルドします。
一旦 root になり依存ライブラリをインストール。

$ su -
# yum install -y tcl-devel

Fedoraリポジトリから SQLite3 の SRPM を取得してリビルドします。

# su - rpmdevel
$ cd src/
$ wget http://ftp.riken.jp/Linux/fedora/releases/16/Everything/source/SRPMS/sqlite-3.7.7.1-1.fc16.src.rpm
$ rpmbuild --rebuild sqlite-3.7.7.1-1.fc16.src.rpm

root になりインストールします。

# su -
# rpm -Uvh /home/rpmdevel/rpm/RPMS/i686/sqlite-3.7.7.1-1.el6.i686.rpm /home/rpmdevel/rpm/RPMS/i686/sqlite-devel-3.7.7.1-1.el6.i686.rpm

apr-util のインストール

依存ライブラリをインストール。

# yum install -y expat-devel libuuid-devel db4-devel postgresql-devel mysql-devel freetds-devel unixODBC-devel openldap-devel nss-devel

apr-util の RPM を作成してインストール。

# su - rpmdevel
$ cd src/
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.4.1.tar.bz2
$ rpmbuild -tb --clean --rmspec apr-util-1.4.1.tar.bz2
$ su -
# rpm -Uvh /home/rpmdevel/rpm/RPMS/i686/apr-util-1.4.1-1.i686.rpm /home/rpmdevel/rpm/RPMS/i686/apr-util-devel-1.4.1-1.i686.rpm

Apache 2.4.1 のインストール

依存ライブラリをインストール。

# yum install -y pcre-devel lua-devel libxml2-devel

distcache-devel については CentOS 6 のリポジトリでは提供されていないようなので、Fedora から SRPM を持ってきて リビルドしてインストールしました。

# su - rpmdevel
$ cd src/
$ wget http://ftp.riken.jp/Linux/fedora/releases/16/Everything/source/SRPMS/distcache-1.4.5-22.src.rpm
$ rpmbuild --rebuild distcache-1.4.5-22.src.rpm
$ su -
# rpm -Uvh /home/rpmdevel/rpm/RPMS/i686/distcache-1.4.5-22.i686.rpm /home/rpmdevel/rpm/RPMS/i686/distcache-devel-1.4.5-22.i686.rpm

これでやっと Apache をビルドする準備が完了です。
これまでと同じく rpmbuild を実行して RPM を作成します。

$ su - rpmdevel
$ cd src
$ wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.4.1.tar.bz2
$ rpmbuild -ta --clean --rmspec httpd-2.4.1.tar.bz2

成功すると以下のファイルが作成されます。

/home/rpmdevel/rpm/SRPMS/httpd-2.4.1-1.src.rpm
/home/rpmdevel/rpm/RPMS/i686/httpd-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/httpd-devel-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/noarch/httpd-manual-2.4.1-1.noarch.rpm
/home/rpmdevel/rpm/RPMS/i686/httpd-tools-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/mod_authnz_ldap-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/mod_lua-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/mod_proxy_html-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/mod_socache_dc-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/mod_ssl-2.4.1-1.i686.rpm
/home/rpmdevel/rpm/RPMS/i686/httpd-debuginfo-2.4.1-1.i686.rpm

ここでは取り合えず httpdhttpd-devel、mod_ssl をインストールしました。

$ su -
# rpm -Uvh /home/rpmdevel/rpm/RPMS/i686/httpd-2.4.1-1.i686.rpm /home/rpmdevel/rpm/RPMS/i686/httpd-devel-2.4.1-1.i686.rpm /home/rpmdevel/rpm/RPMS/i686/mod_ssl-2.4.1-1.i686.rpm

バージョンを確認し、2.4.1 がインストールされたことを確認します。

# apachectl -V
Server version: Apache/2.4.1 (Unix)
Server built:   Feb 25 2012 19:10:50
Server's Module Magic Number: 20120211:0
Server loaded:  APR 1.4.6, APR-UTIL 1.4.1
Compiled using: APR 1.4.6, APR-UTIL 1.4.1
Architecture:   32-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/httpd/conf/mime.types"
 -D SERVER_CONFIG_FILE="/etc/httpd/conf/httpd.conf"

これで環境は整ったので、暇を見て Apache 2.4 系の新機能を試してみたいです。