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並だとか。