してみるテストロゴ
Apache 2.4系でHTTP/2サーバを構築してみるテスト。

インストールするもの(Apache2.5系の場合)

基本的にインストールの手順は、こちらのままですが、apr-utilに、iconvのパスを通しておくことが必要になります。

本ページにおいては、httpdとapr-util以外については、「インストールするもの」におけるインストールが済んでいる前提です。

あと、TLS1.3の対応が見込まれるため、当ページでは、openssl 1.1.0以降を想定したインストール例とします。

また、ログの時刻取得などに使用する、タイムゾーンの設定方法が、環境変数から取得する方法に変わっています。

これらの、2.5系で追加・変更された点を中心に、説明します。

apr/apr-util

APR/APR-UtilApache Portable Runtime ライブラリ

Apache Http サーバの2.5系をインストールする場合は、apr-1.6.2以降、および、apr-util-1.6.1以降をご利用ください。

APRのインストールはこちらと変わりません。

$ cd ~/src
$ wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-1.6.3.tar.gz
…(省略)…
$ gzip -dc apr-1.6.3.tar.gz|tar xvf -
…(省略)…
$ cd apr-1.6.3
$ ./configure ← Linux / FreeBSD の場合
$ NM=/usr/bin/gnm; export NM; ./configure  ←Solarisの場合、gnu nmを指定します。
…(省略)…
$ gmake
…(省略)…
$ sudo gmake install

APR-Utilのインストールは以下の通りです。configureのオプションに、APRのインストールパスと、OpenSSLのインストールパスに加えて、iconvのパスを指定します。

お使いのOpenSSL/iconvのインストール先に合わせて、configureを実行してください。

$ cd ~/src
$ wget http://ftp.tsukuba.wide.ad.jp/software/apache//apr/apr-util-1.6.1.tar.gz
…(省略)…
$ gzip -dc apr-util-1.6.1.tar.gz|tar xvf -
…(省略)…
$ cd apr-util-1.6.1

OpenSSL 1.1.0系の場合
$ ./configure --with-apr=/usr/local/apr --with-iconv=/usr/local/ --with-openssl=/usr/local

…(省略)…
$ gmake
…(省略)…
$ sudo gmake install

Apache HTTP Server 2.5

Apache HTTP Server(httpd)の最新版となります。

Apache HTTP Server 2.5系のバージョンアップ情報
2017年12月x日にApache 2.5.0-alphaがリリースされそうです。

mod_ssl_ctやmod_mdといったモジュールの追加の他、既存の動作の変更などが行われています。

インストールは、こちらのままですが、mod_ssl-ctモジュールとmod_mdモジュールを有効にしておきます。

mod_ssl-ctは、サーバ証明書の透過性情報を扱うためのモジュールです。

mod_mdは、マネージドドメイン(Managed Domain))モジュールの略で、ACMEプロトコルで自動的にサーバ証明書を取得・更新してくれるモジュールです。

ただ、2017年11月の時点で、mod_mdモジュールについては、コンパイルは成功しますが、実行すると、セグメンテーションフォールトが発生してしまいます。

mod_mdについては、安定するまで少し時間が必要かもしれません。

$ cd ~/src
$ wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.5.0-alpha.tar.gz
…(省略)…
$ gzip -dc httpd-2.5.0-alpha.tar.gz|tar xvf -
…(省略)…
$ cd httpd-2.5.0-alpha.

OpenSSL 1.1.0系の場合
$ ./configure --enable-ssl --enable-ssl-staticlib-deps --enable-ssl-ct --enable-md --enable-so --enable-http2  --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-include-apr=/usr/local/apr/include/ --enable-mpms-shared=all --with-ssl=/usr/local --with-nghttp2=/usr/local/ --with-jansson=/usr/local/

…(省略)…
$ gmake
…(省略)…
$ sudo gmake install

設定ファイルも変更はほとんどありません。こちらや、こちらと同じように設定してみてください。

envvarsの設定

Apache 2.5からは、環境変数のタイムゾーンの設定を見て動作します。

そのため、2.4系までは、JSTの時刻でログが記録されていたサーバでも、2.5系にバージョンアップすると、ログに記載の時刻がUTCになってしまうことがあります。

上記のようなサーバで、2.4系と同じく、JSTによるログ取得を行いたい場合は、apachectlと同じフォルダにあるenvvarsに、「export TZ=JST-9」の記載を追加します。

ここでは、/usr/local/apache2/bin/に、apachectlとenvvarsが存在している想定です。

# vi /usr/local/apache2/bin/envvars
/usr/local/apache2/bin/envvars
…(省略)…
if test "x$LD_LIBRARY_PATH" != "x" ; then
LD_LIBRARY_PATH="/usr/local/apache2/lib:/usr/local/lib:$LD_LIBRARY_PATH"
else
LD_LIBRARY_PATH="/usr/local/apache2/lib:/usr/local/lib"
fi
export LD_LIBRARY_PATH export TZ=JST-9

これでApache2.5系でも、ログがJSTで記録されるようになります。

DefaultRuntimeDirディレクティブ

サーバルート(ServerRoot:たいていの場合、/usr/local/apache2/)とは別に、ランタイムディレクトリを独立して指定するようになりました。

影響を受けるのは以下のAPIと、モジュールとなります。

- APIs: ap_log_pid(), ap_remove_pid, ap_read_pid()

- mod_cache: thundering herd lock directory

- mod_lbmethod_heartbeat, mod_heartmonitor: heartbeat storage file

- mod_ldap: shared memory cache

- mod_socache_shmcb, mod_socache_dbm: shared memory or dbm for cache

 

例えば、

# vi /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
DefaultRuntimeDir       run/

上記のように、/以外の文字から始めると、サーバルート(ServerRoot "/usr/local/apache2")を基点とした相対パスが指定されます。

/文字から始めると、ルートディレクトリ/からの絶対パスとして解釈されます。

こうして、起動すると、以下のようにランタイム時のファイルが生成されます。

# /usr/local/apache2/bin/apachectl start
# ls -la /usr/local/apache2/run
	  total 16
	  drwxr-xr-x   3 daemon  daemon   512 11月 16 10:04 .
	  drwxr-xr-x  17 root    wheel    512 11月 15 09:20 ..
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 authdigest-client.76751
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 authdigest-opaque.76751
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 cache-socache.76751
	  drwxr-xr-x  10 daemon  daemon  1024 11月 14 18:06 ct-scts
	  -rw-r--r--   1 root    daemon     6 11月 16 10:04 httpd.pid
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 rewrite-map.76751
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 ssl-cache.76712
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 ssl-ct-sct-update.76751
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 ssl-stapling-refresh.76712
	  -rw-------   1 daemon  daemon     0 11月 16 10:04 ssl-stapling.76712
NEXT CASE:無償のサーバ証明書 >> Let's Encrypt(無償の証明書発行機関)から取得
NEXT CASE:有償のサーバ証明書 >> 有償の証明書発行機関から取得

©Copyrights 2015-2018, non-standard programmer

このサイトは、あくまでも私の個人的体験を、綴ったものです。 軽く参考程度にご利用ください。