コンテンツへスキップ
ホーム » CentOS 6.0 + apache 2.4.1 コンパイル

CentOS 6.0 + apache 2.4.1 コンパイル

Apache 2.4.1 のセットアップメモ。
2.2系と同じようにセットアップすると以下のようなエラー。

checking for APR... no
configure: error: APR not found.  Please read the documentation.

yum で apr 系ツールは入れているのでおかしい?と思って調査すると、どうやら apache 2.4 は apr 1.4以上が必要らしい。

configureオプションこねくりまわしてもこんな感じ。

make[2]: ディレクトリ `/usr/local/src/httpd-2.4.1/support' に入ります
/usr/lib64/apr-1/build/libtool --silent --mode=link gcc -std=gnu99 -pthread        -o rotatelogs  rotatelogs.lo       /usr/lib64/libaprutil-1.la -ldb-4.7 -lexpat -ldb-4.7 /usr/lib64/libapr-1.la -lpthread
rotatelogs.o: In function `post_rotate':
rotatelogs.c:(.text+0x5ed): undefined reference to `apr_file_link'
collect2: ld returned 1 exit status
make[2]: *** [rotatelogs] エラー 1
make[2]: ディレクトリ `/usr/local/src/httpd-2.4.1/support' から出ます
make[1]: *** [install-recursive] エラー 1
make[1]: ディレクトリ `/usr/local/src/httpd-2.4.1/support' から出ます
make: *** [install-recursive] エラー 1
#rpm -qa | grep apr
apr-1.3.9-3.el6_1.2.x86_64
apr-util-mysql-1.3.9-3.el6_0.1.x86_64
apr-devel-1.3.9-3.el6_1.2.x86_64
apr-util-1.3.9-3.el6_0.1.x86_64
apr-util-devel-1.3.9-3.el6_0.1.x86_64

rpmで導入していたのは、1.3.9 でした。
一旦全て削除。

# yum remove "apr*"

apr 1.4 系を外部から取得してインストール。

$ wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.6.tar.gz
$ tar xzf apr-1.4.6.tar.gz
$ cd apr-1.4.6
$ ./configure ; make
$ su
# make install
# exit
$ cd ..
$ wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.4.1.tar.gz
$ tar xzf apr-util-1.4.1.tar.gz 
$ cd apr-util-1.4.1
$ ./configure --with-apr=/usr/local/apr ; make
$ su
# make install
# exit

更に必要なライブラリを yum でインストール

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

後は httpd-2.4.1.tar.gz を取得して解凍。
コンパイルオプションは自分的にこんな感じ。
enable-mods-shared は most で十分。
MPMは event にしているけど、PHP利用なら prefork がいい。

$ /bin/sh
$ CC="gcc -m64" ;
$ ./configure \
--prefix=/usr/local/apache \
--enable-mods-shared=most \
--enable-so \
--enable-ssl \
--enable-cache \
--enable-mem-cache \
--with-mpm=event \
--with-ssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--disable-ipv6

$ make ; su
# make install
$ /usr/local/apache/bin/apachectl -V
Server version: Apache/2.4.1 (Unix)
Server built:   Feb 28 2012 21:05:22
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:   64-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/local/apache"
 -D SUEXEC_BIN="/usr/local/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

以上完了でした。
event MPMはPHPやCGIでのスループットがまだ余り良くないようです。
静的htmlはnginx並だとか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください