Webサーバとして有名な Apacheを64bit+IPv6環境で検証します
Apacheは Windows系 UNIX系で動作するメジャーな Webサーバです
オープンソース財団の The Apache Software Foundationも設立され
Webサーバ以外のオープンソースソフトも精力的に開発しています

上記 The Apache Software Foundationのトップページですが
多数のプロジェクトが管理されていることが分かります
今回 HTTP Server をインストールして 64bit環境 IPv6環境での動作検証を行います
検証環境
CPU
AMD PhenomII X4 905e (2.5GHz 4コア)
メモリ
16GB
OS
Gentoo-1.12.14ベース Linux-3.0 UTF-8
コンパイラ
gcc-4.5.2
Cライブラリ
glibc-2.13
Perl
5.12.2
PHP
SQLite
autoconf-3070800
BerkeleyDB
5.1.25.NC
PostgreSQL
9.1
MySQL
5.5.15
Oracle
11g Express Edition Release2
LDAP
OpenLDAP-2.4.23
Apache httpd
2.2.21
Apache apr
1.4.5
Apache apr-iconv
1.2.1
Apache apr-util
1.3.12
インストール
Apache(本家) から Stable Releaseをダウンロードします

ダウンロードしたソースを一時ディレクトリに展開します
$ tar -xjf httpd-2.2.21.tar.bz2
$ cd httpd-2.2.21
$ ls -F srclib/
Makefile.in apr/ apr-util/ pcre/
$
srclib/ に含まれている apr apr-util のパッケージを先にインストールする必要があります
これらプログラムは APR(Aapche Portable Runtime)と呼ばれ
OS間の差異を吸収する 共通ライブラリとして機能します
(具体的には メモリ確保 I/O ライブラリリンク スレッド 時刻 ユーザID など)
srclib/ に含まれていない apr-iconv も導入しておきたいので
apr apr-iconv apr-util をまとめて Portable Runtime Project
からダウンロードしておきましょう
aprのインストールは下記のように行いました
$ ./configure --prefix=/usr/apache --enable-threads
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring APR library
〜
config.status: creating apr-1-config
config.status: creating apr.pc
config.status: creating test/Makefile
config.status: creating test/internal/Makefile
config.status: creating include/arch/unix/apr_private.h
config.status: executing default commands
$ make
make[1]: ディレクトリ `/home/admin/apr-1.4.5' に入ります
〜
make[1]: ディレクトリ `/home/admin/apr-1.4.5' から出ます
$ su
# make install
make[1]: ディレクトリ `/home/admin/apr-1.4.5' に入ります
make[1]: `local-all' に対して行うべき事はありません.
make[1]: ディレクトリ `/home/admin/apr-1.4.5' から出ます
〜
/usr/bin/install -c -m 644 build/apr_rules.out /usr/apache/build-1/apr_rules.mk
/usr/bin/install -c -m 755 apr-config.out /usr/apache/bin/apr-1-config
#
ビルドを補助するためのコマンドで apr-1-config が使えるようになります
apr-iconvのインストールは apr-utilのインストールと同時に行います
そのためここでは アーカイブの展開だけしておきます
$ tar -xzf apr-iconv-1.2.1.tar.gz
$
続いて apr-utilのインストールを下記のように行いました
$ tar -xzf apr-util-1.3.12.tar.gz
$ cd apr-util-1.3.12
$ ./configure --prefix=/usr/apache --with-apr=/usr/apache --with-apr-iconv=../apr-iconv-1.2.1 --with-sqlite3=/usr --with-dbm=db51 --with-pgsql=/usr --with-mysql=/usr/mysql --with-oracle=$ORACLE_HOME --with-odbc=/usr --with-ldap=/usr
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for working mkdir -p... yes
〜
config.status: creating include/apu_want.h
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: executing default commands
$ make
Making all in ../apr-iconv-1.2.1
make[1]: ディレクトリ `/home/admin/apr-iconv-1.2.1' に入ります
(cd lib; make CPPFLAGS=" ")
〜
dbd/apr_dbd_odbc.c: In function ‘odbc_start_transaction':
dbd/apr_dbd_odbc.c:1178:32: 警告: 異なるサイズの整数からポインタにキャストされました
/bin/sh /usr/apache/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -release 1 -module -rpath /home/admin/lib/apr-util-1 -o dbd/apr_dbd_odbc.la dbd/apr_dbd_odbc.lo -L/usr/lib -lodbc
make[1]: ディレクトリ `/home/admin/apr-util-1.3.12' から出ます
$ su
# make install
/usr/apache/build-1/mkdir.sh /home/admin/lib/apr-util-1
Making all in ../apr-iconv-1.2.1
〜
/usr/bin/install -c -m 644 aprutil.exp /usr/apache/lib
/usr/bin/install -c -m 755 apu-config.out /usr/apache/bin/apu-1-config
#
apr-iconv関連では apriconv のコマンドが利用できるようになります
あと /usr/apache/lib/iconv/ 配下にやたらと各国語用のモジュールが追加されます
apr-util関連では apu-1-config がビルド補助用に使えるようになり
/usr/apache/lib/apr-util-1/ に各データベース接続用のモジュールが追加されます
–with-apr-iconv の指定により apr-iconvも同時にビルドされますが
インストールされた apu-1-config に修正が必要でした
(apu-1-config –libs とコマンドを叩くと apr-iconv関連のパス修正が必要と分かるでしょう)
29
30 LIBS="/home/admin/apr-util-1.3.12/../apr-iconv-1.2.1/lib/libapriconv.la -lexpat"
31 INCLUDES="/home/admin/apr-util-1.3.12/../apr-iconv-1.2.1/include "
32 LDFLAGS=""
LIBSの部分と INCLUDESの部分に ソースディレクトリが指定されてしまっているので修正します
下記のように修正しました
29
30 LIBS="/usr/apache/lib/libapriconv-1.la -lexpat"
31 INCLUDES=""
32 LDFLAGS=""
また検証環境では Oracleが認識されず configure前に下記作業が必要でした
# cd $ORACLE_HOME/lib
# ln -s libclntsh.so.11.1 libclntsh.s
つまり -lclntsh 付きの gcc がコンパイルできる必要があるのです
Oracleを使っているのに lib/apr-util-1/に apr_dbd_oracle〜 が見付からない場合は
上記の対応後 apr-utilsの再ビルドが必要です
以上でようやく apache本体のビルドが可能となります
$ tar -xjf httpd-2.2.21.tar.bz2
$ cd httpd-2.2.21/
$ ./configure --prefix=/usr/apache --localstatedir=/var --enable-suexec --with-suexec-caller=www --enable-so --enable-modules="most" --enable-mods-shared="most"
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring Apache Portable Runtime library ...
〜
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
$ make
Making all in srclib
make[1]: ディレクトリ `/home/admin/httpd-2.2.21/srclib' に入ります
Making all in pcre
〜
/usr/apache/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -o suexec suexec.lo
make[2]: ディレクトリ `/home/admin/httpd-2.2.21/support' から出ます
make[1]: ディレクトリ `/home/admin/httpd-2.2.21' から出ます
$ su
# make install
Making install in srclib
make[1]: ディレクトリ `/home/admin/httpd-2.2.21/srclib" に入ります
〜
mkdir /usr/apache/man/man1
mkdir /usr/apache/man/man8
mkdir /usr/apache/manual
make[1]: ディレクトリ `/home/deer/admin/httpd-2.2.21" から出ます
#
configureオプションですが –enable-so は動的モジュール化するのに必須です
–enable-modules="most" –enable-mods-shared="most"
で Apacheのオプション機能をほとんど有効化しモジュール化しています
$ ls /usr/apache/modules/
httpd.exp mod_authz_user.so mod_include.so
mod_actions.so mod_autoindex.so mod_info.so
mod_alias.so mod_cgi.so mod_log_config.so
mod_asis.so mod_dav.so mod_logio.so
mod_auth_basic.so mod_dav_fs.so mod_mime.so
mod_auth_digest.so mod_dbd.so mod_negotiation.so
mod_authn_anon.so mod_deflate.so mod_reqtimeout.so
mod_authn_dbd.so mod_dir.so mod_rewrite.so
mod_authn_dbm.so mod_dumpio.so mod_setenvif.so
mod_authn_default.so mod_env.so mod_speling.so
mod_authn_file.so mod_expires.so mod_status.so
mod_authz_dbm.so mod_ext_filter.so mod_substitute.so
mod_authz_default.so mod_filter.so mod_suexec.so
mod_authz_groupfile.so mod_headers.so mod_userdir.so
mod_authz_host.so mod_ident.so mod_version.so
mod_authz_owner.so mod_imagemap.so mod_vhost_alias.so
$
特に小容量の Apacheを作りたいなどカスタマイズの必要があれば
–enable-modules="alias cgi" のように個別に指定することも可能です
続いて Apache用の start/stopスクリプトを用意しましょう
下記で紹介するのは Gentoo形式に従ったスクリプトですが
Apacheには apachectlという管理コマンドが付属しているのでシンプルな記載になります
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header$
depend() {
need net.eth0
}
start() {
ebegin "Starting apache"
/usr/apache/bin/apachectl start
eend $?
}
stop() {
ebegin "Stopping apache"
/usr/apache/bin/apachectl stop
eend $?
}
次に Apacheの設定ファイルをカスタマイズします
conf/httpd.conf が設定ファイルです
最近の Apacheはモジュールに関する設定を conf/extra/ に分けてインポートする記述のため
httpd.conf本体は だいぶ軽量化しています
httpd.confの修正点は下記の通りです
User www
Group daemon
httpd実行アカウントを指定します www のアカウントが既に存在していたので利用しました
ServerAdmin www@mydomain
ServerName www.mydomain:80
ServerAdminには管理者メールアドレスを指定します
ServerNameは 公開するHPのFQDNとポート番号を指定します ここは httpdの動作に必須の項目です
(mydomainの DNSに wwwホスト設定の追加もしておきます)
とりあえず最小限の設定は以上です まずは Apacheが動作するかを確認しましょう
# /etc/init.d/apache start
* Caching service dependencies ... [ ok ]
* Starting apache ... [ ok ]
#
IPv6クライアントの検証ページでApacheの正常動作を確認しました
(書きかけですが とりあえずここまで)
IPv6サーバツールへ戻る
CPU | AMD PhenomII X4 905e (2.5GHz 4コア) |
---|---|
メモリ | 16GB |
OS | Gentoo-1.12.14ベース Linux-3.0 UTF-8 |
コンパイラ | gcc-4.5.2 |
Cライブラリ | glibc-2.13 |
Perl | 5.12.2 |
PHP | |
SQLite | autoconf-3070800 |
BerkeleyDB | 5.1.25.NC |
PostgreSQL | 9.1 |
MySQL | 5.5.15 |
Oracle | 11g Express Edition Release2 |
LDAP | OpenLDAP-2.4.23 |
Apache httpd | 2.2.21 |
Apache apr | 1.4.5 |
Apache apr-iconv | 1.2.1 |
Apache apr-util | 1.3.12 |
インストール
Apache(本家) から Stable Releaseをダウンロードします

ダウンロードしたソースを一時ディレクトリに展開します
$ tar -xjf httpd-2.2.21.tar.bz2
$ cd httpd-2.2.21
$ ls -F srclib/
Makefile.in apr/ apr-util/ pcre/
$
$ tar -xjf httpd-2.2.21.tar.bz2 $ cd httpd-2.2.21 $ ls -F srclib/ Makefile.in apr/ apr-util/ pcre/ $
srclib/ に含まれている apr apr-util のパッケージを先にインストールする必要があります
これらプログラムは APR(Aapche Portable Runtime)と呼ばれ
OS間の差異を吸収する 共通ライブラリとして機能します
(具体的には メモリ確保 I/O ライブラリリンク スレッド 時刻 ユーザID など)
srclib/ に含まれていない apr-iconv も導入しておきたいので
apr apr-iconv apr-util をまとめて Portable Runtime Project
からダウンロードしておきましょう
aprのインストールは下記のように行いました
$ ./configure --prefix=/usr/apache --enable-threads checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu Configuring APR library 〜 config.status: creating apr-1-config config.status: creating apr.pc config.status: creating test/Makefile config.status: creating test/internal/Makefile config.status: creating include/arch/unix/apr_private.h config.status: executing default commands $ make make[1]: ディレクトリ `/home/admin/apr-1.4.5' に入ります 〜 make[1]: ディレクトリ `/home/admin/apr-1.4.5' から出ます $ su # make install make[1]: ディレクトリ `/home/admin/apr-1.4.5' に入ります make[1]: `local-all' に対して行うべき事はありません. make[1]: ディレクトリ `/home/admin/apr-1.4.5' から出ます 〜 /usr/bin/install -c -m 644 build/apr_rules.out /usr/apache/build-1/apr_rules.mk /usr/bin/install -c -m 755 apr-config.out /usr/apache/bin/apr-1-config #
ビルドを補助するためのコマンドで apr-1-config が使えるようになります
apr-iconvのインストールは apr-utilのインストールと同時に行います
そのためここでは アーカイブの展開だけしておきます
$ tar -xzf apr-iconv-1.2.1.tar.gz $
続いて apr-utilのインストールを下記のように行いました
$ tar -xzf apr-util-1.3.12.tar.gz $ cd apr-util-1.3.12 $ ./configure --prefix=/usr/apache --with-apr=/usr/apache --with-apr-iconv=../apr-iconv-1.2.1 --with-sqlite3=/usr --with-dbm=db51 --with-pgsql=/usr --with-mysql=/usr/mysql --with-oracle=$ORACLE_HOME --with-odbc=/usr --with-ldap=/usr checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking for working mkdir -p... yes 〜 config.status: creating include/apu_want.h config.status: creating test/Makefile config.status: creating include/private/apu_config.h config.status: executing default commands $ make Making all in ../apr-iconv-1.2.1 make[1]: ディレクトリ `/home/admin/apr-iconv-1.2.1' に入ります (cd lib; make CPPFLAGS=" ") 〜 dbd/apr_dbd_odbc.c: In function ‘odbc_start_transaction': dbd/apr_dbd_odbc.c:1178:32: 警告: 異なるサイズの整数からポインタにキャストされました /bin/sh /usr/apache/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -release 1 -module -rpath /home/admin/lib/apr-util-1 -o dbd/apr_dbd_odbc.la dbd/apr_dbd_odbc.lo -L/usr/lib -lodbc make[1]: ディレクトリ `/home/admin/apr-util-1.3.12' から出ます $ su # make install /usr/apache/build-1/mkdir.sh /home/admin/lib/apr-util-1 Making all in ../apr-iconv-1.2.1 〜 /usr/bin/install -c -m 644 aprutil.exp /usr/apache/lib /usr/bin/install -c -m 755 apu-config.out /usr/apache/bin/apu-1-config #
apr-iconv関連では apriconv のコマンドが利用できるようになります
あと /usr/apache/lib/iconv/ 配下にやたらと各国語用のモジュールが追加されます
apr-util関連では apu-1-config がビルド補助用に使えるようになり
/usr/apache/lib/apr-util-1/ に各データベース接続用のモジュールが追加されます
–with-apr-iconv の指定により apr-iconvも同時にビルドされますが
インストールされた apu-1-config に修正が必要でした
(apu-1-config –libs とコマンドを叩くと apr-iconv関連のパス修正が必要と分かるでしょう)
29 30 LIBS="/home/admin/apr-util-1.3.12/../apr-iconv-1.2.1/lib/libapriconv.la -lexpat" 31 INCLUDES="/home/admin/apr-util-1.3.12/../apr-iconv-1.2.1/include " 32 LDFLAGS=""
LIBSの部分と INCLUDESの部分に ソースディレクトリが指定されてしまっているので修正します
下記のように修正しました
29 30 LIBS="/usr/apache/lib/libapriconv-1.la -lexpat" 31 INCLUDES="" 32 LDFLAGS=""
また検証環境では Oracleが認識されず configure前に下記作業が必要でした
# cd $ORACLE_HOME/lib # ln -s libclntsh.so.11.1 libclntsh.s
つまり -lclntsh 付きの gcc がコンパイルできる必要があるのです
Oracleを使っているのに lib/apr-util-1/に apr_dbd_oracle〜 が見付からない場合は
上記の対応後 apr-utilsの再ビルドが必要です
以上でようやく apache本体のビルドが可能となります
$ tar -xjf httpd-2.2.21.tar.bz2 $ cd httpd-2.2.21/ $ ./configure --prefix=/usr/apache --localstatedir=/var --enable-suexec --with-suexec-caller=www --enable-so --enable-modules="most" --enable-mods-shared="most" checking for chosen layout... Apache checking for working mkdir -p... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu Configuring Apache Portable Runtime library ... 〜 config.status: creating build/rules.mk config.status: creating build/pkg/pkginfo config.status: creating build/config_vars.sh config.status: creating include/ap_config_auto.h config.status: executing default commands $ make Making all in srclib make[1]: ディレクトリ `/home/admin/httpd-2.2.21/srclib' に入ります Making all in pcre 〜 /usr/apache/build-1/libtool --silent --mode=link gcc -g -O2 -pthread -o suexec suexec.lo make[2]: ディレクトリ `/home/admin/httpd-2.2.21/support' から出ます make[1]: ディレクトリ `/home/admin/httpd-2.2.21' から出ます $ su # make install Making install in srclib make[1]: ディレクトリ `/home/admin/httpd-2.2.21/srclib" に入ります 〜 mkdir /usr/apache/man/man1 mkdir /usr/apache/man/man8 mkdir /usr/apache/manual make[1]: ディレクトリ `/home/deer/admin/httpd-2.2.21" から出ます #
configureオプションですが –enable-so は動的モジュール化するのに必須です
–enable-modules="most" –enable-mods-shared="most"
で Apacheのオプション機能をほとんど有効化しモジュール化しています
$ ls /usr/apache/modules/ httpd.exp mod_authz_user.so mod_include.so mod_actions.so mod_autoindex.so mod_info.so mod_alias.so mod_cgi.so mod_log_config.so mod_asis.so mod_dav.so mod_logio.so mod_auth_basic.so mod_dav_fs.so mod_mime.so mod_auth_digest.so mod_dbd.so mod_negotiation.so mod_authn_anon.so mod_deflate.so mod_reqtimeout.so mod_authn_dbd.so mod_dir.so mod_rewrite.so mod_authn_dbm.so mod_dumpio.so mod_setenvif.so mod_authn_default.so mod_env.so mod_speling.so mod_authn_file.so mod_expires.so mod_status.so mod_authz_dbm.so mod_ext_filter.so mod_substitute.so mod_authz_default.so mod_filter.so mod_suexec.so mod_authz_groupfile.so mod_headers.so mod_userdir.so mod_authz_host.so mod_ident.so mod_version.so mod_authz_owner.so mod_imagemap.so mod_vhost_alias.so $
特に小容量の Apacheを作りたいなどカスタマイズの必要があれば
–enable-modules="alias cgi" のように個別に指定することも可能です
続いて Apache用の start/stopスクリプトを用意しましょう
下記で紹介するのは Gentoo形式に従ったスクリプトですが
Apacheには apachectlという管理コマンドが付属しているのでシンプルな記載になります
#!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header$ depend() { need net.eth0 } start() { ebegin "Starting apache" /usr/apache/bin/apachectl start eend $? } stop() { ebegin "Stopping apache" /usr/apache/bin/apachectl stop eend $? }
次に Apacheの設定ファイルをカスタマイズします
conf/httpd.conf が設定ファイルです
最近の Apacheはモジュールに関する設定を conf/extra/ に分けてインポートする記述のため
httpd.conf本体は だいぶ軽量化しています
httpd.confの修正点は下記の通りです
User www Group daemon
httpd実行アカウントを指定します www のアカウントが既に存在していたので利用しました
ServerAdmin www@mydomain ServerName www.mydomain:80
ServerAdminには管理者メールアドレスを指定します
ServerNameは 公開するHPのFQDNとポート番号を指定します ここは httpdの動作に必須の項目です
(mydomainの DNSに wwwホスト設定の追加もしておきます)
とりあえず最小限の設定は以上です まずは Apacheが動作するかを確認しましょう
# /etc/init.d/apache start * Caching service dependencies ... [ ok ] * Starting apache ... [ ok ] #
IPv6クライアントの検証ページでApacheの正常動作を確認しました
(書きかけですが とりあえずここまで)