お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: カテゴリー :

Apache

2007年8月30日

Apache への PHP インストール方法

いままで何度も Apache に PHP をインストールしてきているが、 ブログにその記録をレポートしたことがなかったので、 ここで 改めて書いておく。

PHPのソースは 「PHP downloads Page」 から辿って、tar.gz 版のページへ行き、 そこにリストされている近いサイトからダウンロードするとよい。 ここでは、Apacheが既にソースからインストールされていることを前提とする。 以下、「 5.2.X. 」のところは、その時点での最新のバージョン番号として、
# cd /usr/local/src
# wget http://us2.php.net/get/php-5.2.X.tar.gz/from/this/mirror
# tar xf php-5.2.X.tar.gz
# cd php-5.2.X
とする。

以下、今回の例では configure から「 mbstring 」と「 mbregex 」を有効として
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex
# make
# make test
# make install
# cp php.ini-dist /usr/local/lib/php.ini
これで、インストールは終了。

それからこれは、私のサイトでの特別な設定だが、 「 /usr/local/lib/php.ini 」の
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = Off
allow_url_include = On
に変更する必要がある。

その後、/usr/local/apache2/conf/httpd.conf に 以下の
LoadModule php5_module modules/libphp5.so
<IfModule php5_module>
  AddType application/x-httpd-php .php
</IfModule>
記述を追加する。

最後に Apacheを再起動する。
# /usr/local/apache2/apachectl -k restart


今インストールした PHPの動作を確認するためには、 「 phptest.php 」とか言うファイル名をつけて
<?php phpinfo(); ?>
という内容のファイルをドキュメント・ルートに置き、 そのファイルをブラウザーから開いてみて、 うまくPHPの infoページが開けばよい。

【参考リンク】

カテゴリー: Apache     22:20 | コメント (0) | トラックバック (0)

2007年8月29日

Apache DSOモジュールの追加方法 (2) 実例

Apacheの DOS(動的)モジュールの追加インストール方法の実例として、 「mod_vhost_alias」モジュール を「apxs」コマンドを使って 追加インストールしてみる。

Apacheが既に「/usr/local/apache2/」ディレクトリにインストールされており、 そのソースファイルが ディレクトリ「/usr/local/src/httpd-2.2.XX」に存在している。 今回、インストールしようとしている「mod_vhost_alias」モジュールは ディレクトリ「 modules/mappers 」の下に存在しているので、 「 /usr/local/src/httpd-2.2.XX/modules/mappers 」に移動してから 「apxs」コマンドを実行することになる。
# cd /usr/local/src/httpd-2.2.XX/modules/mappers
# /usr/local/apache2/bin/apxs -cia mod_vhost_alias.c
/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic    -g -O2 -I/usr/local/apache2/include  -I/usr/local/apache2/include   -I/usr/local/apache2/include -I/usr/local/include  -c -o mod_vhost_alias.lo mod_vhost_alias.c && touch mod_vhost_alias.slo
/usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_vhost_alias.la  -rpath /usr/local/apache2/modules -module -avoid-version    mod_vhost_alias.lo
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_vhost_alias.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp mod_vhost_alias.la /usr/local/apache2/modules/
cp .libs/mod_vhost_alias.so /usr/local/apache2/modules/mod_vhost_alias.so
cp .libs/mod_vhost_alias.lai /usr/local/apache2/modules/mod_vhost_alias.la
cp .libs/mod_vhost_alias.a /usr/local/apache2/modules/mod_vhost_alias.a
chmod 644 /usr/local/apache2/modules/mod_vhost_alias.a
ranlib /usr/local/apache2/modules/mod_vhost_alias.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apache2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_vhost_alias.so
[activating module `vhost_alias' in /usr/local/apache2/conf/httpd.conf]
のように、「apxs」コマンドに「 -cia 」というオプションをつけるだけで 簡単に DOS(動的)モジュールの追加インストールができてしまう。

ちなみに今回「apxs」コマンドに指定したオプションは、 マニュアル Apache HTTP Server Version 2.2「apxs - APache eXtenSion tool」 によると、
  • c : コンパイルすることを指定
  • i : 出来上がったモジュールをインストールすることを指定
  • a : 自動的に「httpd.conf」に「LoadModule」ディレクティブを追加する。
となっている。

今回は「 a 」オプションをつけていたので、 自動的に「httpd.conf」に「LoadModule」ディレクティブが追加されているはずだ。 実際に、/usr/local/apache2/conf/httpd.conf の中身をみてみると、
# cat /usr/local/apache2/conf/httpd.conf | grep vhost_alias_module
LoadModule vhost_alias_module modules/mod_vhost_alias.so
と このように、 LoadModuleの1行が追加されているのがわかる。

さらに、組み込まれたことを「 apachectl -M 」コマンドを利用して確認してみる。
# /usr/local/apache2/bin/apachectl -M
Loaded Modules:
 core_module (static)
.
.
.
 so_module (static)
.
.
.
 vhost_alias_module (shared)    <ここで組み込まれたことを確認できた>
Syntax OK


【参考リンク】

カテゴリー: Apache     22:09 | コメント (0) | トラックバック (0)

2007年8月28日

Apache DSOモジュールの追加方法 (1) 「apxs」コマンド

ApacheのHTTPサーバーを運用開始後、 モジュールを追加したくなった場合は いったいどうしたらいいのであろうか。

Apache HTTP サーバは たくさんの機能を実現するために モジュール化されたプログラム構造になっている。 このモジュールの組み込み方には大きく2通りあって、 サーバがビルドされるときに httpdのバイナリに直接(静的に)組み込んでしまう方法と、 httpd バイナリとは 別に存在する共有オブジェクトを動的に組み込む方法である。 動的に組み込むオブジェクトのことを 「動的共有オブジェクト (DSO:Dynamic Shared Object)」という。 詳細については、 「動的共有オブジェクト (DSO) サポート」 に解説してある。 このドキュメントを読むと、 今回の目的である、動的モジュールの追加については、 「Apache 拡張ツール (apxs:APache eXtenSion) 」を使って 後でコンパイルして追加できるようだ。

Apache モジュールを動的にロードするため mod_so.c というモジュールがあり このモジュールだけは Apache のコアに静的に組み込まれている必要がある。 Apacheのインストール時に 動的モジュールを指定する方法は、 configure 実行時に --enable-module=shared オプション をつけるのだが、 それについて詳しくは 「コンパイルとインストール」に 説明されているのでそちらを参照のこと。

また「Apache 拡張ツール (apxs:APache eXtenSion) 」の 役割やしくみについては、 「動的共有オブジェクト (DSO) サポート」 ドキュメント内に
Apache のインストール時の configure、make install のときに Apache の C ヘッダをインストールし、 DSO ビルド用のプラットフォーム依存の コンパイラとリンカのフラグを apxs プログラムに追加します。 これにより、ユーザが Apache の配布ソースツリーなしで、 さらに DSO サポートのためのプラットフォーム依存のコンパイラやリンカの フラグをいじることなく Apache のモジュールのソースを コンパイルできるようになります。
と説明がある。

【参考リンク】

カテゴリー: Apache     22:58 | コメント (0) | トラックバック (0)

2007年6月11日

「Failed to enable the 'httpready' Accept Filter」エラーの AcceptFilter による解決方法

ここ数日で、FreeBSD上で Apache 2.2.x が吐き出す 「[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter」 というエラーへの対処方法について、その原因を調査してきた。 先日のブログで、それなりの対応方法をレポートしたが、 今日は、別の方法も探ってみる。

先日のブログでレポートした、accf_http.koをカーネルにロードする方法は、 自分で管理している場合はよいが、 これが、Jail環境等のバーチャル・サーバー環境等では、 必ずしも、accf_http.ko をカーネルにロードできるとは限らないであろう。 さて、そのような場合には、どのように対応したらよいのか?

昨日のブログで書いたとおり、 2.1.5 以降の Apache では、システムが FreeBSDだと、 デフォルトでAcceptFilterが有効となってしまうようだ。 それでは、強制的に AcceptFilter を無効にしてしまってもよいのではないだろうか。 つまり、強制的に AcceptFilter を無効にするための
AcceptFilter http none
AcceptFilter https none
の2行を httpd.conf に記述してしまえばよいのではないか。

では、実際に実験してみた。 実験なので、httpd.conf の先頭に、上記の2行を挿入し、 それから、/boot/loader.conf の
accf_http_load="YES"
を削除してから、システムをリブートしてみた。 結果として、Apacheを起動する際には何のエラーの表示されなかった。 また、確認として kldstat コマンドを実行してみたが
% kldstat
Id Refs Address    Size     Name
 1    7 0xc0400000 7a05b0   kernel
 2    1 0xc0ba1000 5c304    acpi.ko
 3    1 0xc2447000 19000    linux.ko
のように、確かに accf_http.ko は ロードされていない。

結論として、FreeBSD上で Apache 2.1.5以降 が吐き出す 「[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter」 エラーに対応する方法は 2通りある。 一つは、カーネル・ロードモジュール accf_http.ko をロードすること(先々日のブログ参照)。 そして、もうひとつは、今日のブログのとおり、httpd.conf に
AcceptFilter http none
AcceptFilter https none
の2行を付け加える、 という方法である。

【参考リンク】

カテゴリー: Apache     22:13 | コメント (0) | トラックバック (1)

2007年6月10日

Apache の AcceptFilter ディレクティブ

昨日のブログで、Apache 2.2.x が吐き出す 「[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter」 というエラーへの対処方法について調査したが、 今日のブログで、もう少し根本原因ついて調査してみたいと思う。

いつものごとく、いろいろググっていたら、 (FreeBSD) apache-2.2.xの「httpd -DNOHTTPACCEPT」って何だ? 〜 accf_http というページに出くわした。このページで非常に詳しく解説してあったので、その内容に基づいて、調査を進めてゆく。

まず、上記のエラーは アパッチの 「AcceptFilter ディレクティブ」 に関係があるそうだ。 マニュアルを引用させていただくと、
Listen しているソケットに対して、 OS が固有に持っているプロトコルについての最適化を 有効にするディレクティブです。 大前提となる条件は、データが受信されるか HTTP リクエスト全体がバッファされるかするまで、 カーネルがサーバプロセスに ソケットを送らないようになっている、 ということです。 現在サポートされているのは、 FreeBSD の Accept Filter と Linux のプリミティブな TCP_DEFER_ACCEPT のみです。
とある。 そして、FreeBSD のデフォルト値は :
AcceptFilter http httpready 
AcceptFilter https dataready
である、と記述されている。 ここでやっと エラーの中にある「httpready」というキーワードがみつかった。 さらに
httpready Accept Filter は HTTP リクエスト全体を、 カーネルレベルでバッファリングします。 リクエスト全体を受信し終わると、 その後サーバプロセスにそれを送ります。 詳細については accf_http(9) を参照してください。 HTTPS のリクエストは暗号化されているので accf_data(9) フィルタのみが使用されます。
と説明されている。

それでは FreeBSDマニュアルの 「accept_filter 「入力接続フィルタ」」 をみてみる。 その解説には、
accept フィルタは、カーネルが入力接続を前処理することを、 アプリケーションが要求することを可能にします。 accept フィルタは、SO_ACCEPTFILTER の optname で渡すことで、setsockopt(2) システムコールを介して要求されます。
とある。このように、accept_filter は カーネルが入力接続を前処理するために 汎用的なしくみを提供している。 その中でも、特に HTTP に関して バッファリングを行っているのが accf_http「ある完全な HTTP リクエストの到着までの間の入力接続バッファ」 のようだ。これを有効にすると、HTTPのリクエストが全て揃うまで、カーネル側でパケットをバッファリングしておく。 リクエストの全てが揃った段階でアプリケーションサイド(この場合はApache)へパケットを受け渡すことにより、 カーネルとアプリケーション間の無駄なタスク切り替えを少なくすることができ、 結果的にCPUの利用効率を向上されることができるようだ。

以上のことから、 「[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter」 エラーの原因を考えてみる。 前述の通り、2.1.5 以降の Apache では、システムが FreeBSDだと、 デフォルトでAcceptFilterが有効となってしまうようだ。 一方、FreeBSDを普通にインストールすると、accf_http.ko がカーネルにロードされていない。 よって、FreeBSDに Apache 2.1.5 以降 をインストールすると、 このエラーに遭遇する、と考えられる。

このことから、もう一つの解決方法が考えられるが、それについては、 明日のブログとしよう。

【参考リンク】

カテゴリー: Apache     22:41 | コメント (0) | トラックバック (0)

2007年6月 9日

Apache 2.2.x : [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

FreeBSD上で Apache 2.2.x を起動させると
[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
のようにWarningが出る場合がある. このWarningの意味は何なのか? どのように対応したらよいのか?

いろいろググってたら、原因は accf_http.koというカーネルモジュールがないためのようだ。 よってその解決策としては、
# kldload accf_http.ko
を行って、accf_http.ko カーネル・モジュールをロードしてから アパッチを再起動するとよいらしい。実際に試してみると確かに上記のエラーが出なくなった。 ちなみに 「kldload」 とは カーネルリンカを用いて XXXX.ko をカーネルにロードするコマンド。

また、現在のカーネルモジュールを確認するには、動的カーネルリンカの状態を表示するコマンド 「kldstat」 を用いて
# kldstat
Id Refs Address    Size     Name
 1    8 0xc0400000 7a05b0   kernel
 2    1 0xc0ba1000 5c304    acpi.ko
 3    1 0xc2447000 19000    linux.ko
 4    1 0xc2843000 2000     accf_http.ko
のようにするとよい。

ただし、このままでは アパッチを起動する際に、毎回 kldload コマンドを手入力しなければならなくなる。 この事態を避けるためには FreeBSDの起動時に自動的に accf_http.ko を読み込ませればよいことになる。 そのためには、 /boot/loader.conf
accf_http_load="YES"
の一行を加えておけばよい。 これも実際に試してみて、確かに FreeBSDの起動時から Apache 2.2.x がエラーなく起動するようになった。

これで、とりあえず、エラーは出なくはなったが、 何故、このエラーが表示されていたのか? このエラーに対してアパッチ側での何の対応もできないのか? という疑問が残る。 もう少し、調査してみることにする。

【参考リンク】

カテゴリー: Apache , FreeBSD     22:31 | コメント (0) | トラックバック (0)

2007年6月 7日

Apacheを 2.0 から 2.2 へアップデートすると SSLが無効になるトラブル

既に、Apache 2.0 で 走っているサイトを 、Apache 2.2 にバージョンアップしてみた。 その時のトラブルと、その解決方法について。

以前のブログでもふれたとおり、通常Apacheを起動するためには、
# /usr/local/apache2/bin/apachectl start
のようなコマンドで起動することになる。 一方、今回バージョンアップしたこのサイトには、 https: つまり SSL でアクセスするページが含まれていた。 Apache 2.0 では、SSLを有効とするために、 「start」オプションではなく、
# /usr/local/apache2/bin/apachectl startssl
のような「startssl」オプションを指定する必要があった。

ところが、Apache 2.2 からは、この「startssl」というオプションが廃止され、 SSLを起動する場合でも「start」オプションでよくなった。 これについては、マニュアルの 「Upgrading to 2.2 from 2.0」に
The apachectl option startssl is no longer available. To enable SSL support, you should edit httpd.conf to include the relevant mod_ssl directives and then use apachectl start to start the server. An example configuration to activate mod_ssl has been included in conf/extra/httpd-ssl.conf.
と記述されている。

Apacheを 2.0 から 2.2 にアップグレードした後、 従来の httpd.conf と ssl.conf のままに 「apachectl start」として起動してみた。 ちなみに、httpd.conf から ssl.conf をインクルードする設定にしてあり 今まで問題なく起動してきているモノだ。 その結果、通常のページ、 つまり、ポート80 の「http://」のページには 問題なくアクセスできるのだが、 SSLページ、つまり、ポート443 の「https://」のページには アクセスできないトラブルにハマッてしまった。 いろいろ 試してみた結果、ssl.conf は キチンとインクルードされていることは確認できた。

その後も いろいろ調査した結果、 結局この問題の解決策として、ssl.conf の中に記述されている <IfDefine SSL> と <IfDefine> を コメントにすることによって、 従来どおりにSSLのページが動作するようになった。

推測であるが、Apache 2.0 の apachectl は 「startssl」オプションで起動すると、 おそらく、SSLという変数を定義してから、 httpd.conf (ssl.conf) を読み込んでいた、と考えられる。 ところが、Apache 2.2 になって それがなくなったために <IfDefine SSL> 〜 <IfDefine> の内部が解釈されなくなったようだ。

それから、今回のようなケースでは、 /usr/local/etc/rc.d/apache2.sh 等の Apacheの自動起動スクリプトの記述にある、 「apachectl startssl」を 「apachectl start」 に書き換えるのもお忘れなく!

【参考リンク】

カテゴリー: Apache     22:20 | コメント (0) | トラックバック (0)

2007年6月 2日

Apache HTTP Server の FreeBSD における自動起動

FreeBSDでは システムのブート時に ディレクトリ「 /usr/local/etc/rc.d 」 に置いてある 実行可能スクリプトを自動的に実行する仕組となっている。 この仕組をつかって Apache HTTP Server を自動的に起動させる 設定をしてみる。

以下のスクリプトが 私が今までに使ってきているモノ。 具体的には、ルート権限になって、 ディレクトリ /usr/local/etc/rc.d に 以下のスクリプトを「apache2.sh」という名前で 保存する。
#! /bin/sh
#
# apache start script
#
#
case "$1" in
start)
        if [ -x /usr/local/apache2/bin/apachectl ];then
            /usr/local/apache2/bin/apachectl start
        fi
        ;;
stop)
        /usr/local/apache2/bin/apachectl stop
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0
それから、実行可能とするために
# chmod 755 /usr/local/etc/rc.d/apache2.sh
としておく。 あとは、システムを再起動してみて 実際に 自動的に起動するかどうかを確認する。

【参考リンク】

カテゴリー: Apache , FreeBSD     22:38 | コメント (0) | トラックバック (0)

2007年6月 1日

Apache HTTP Server 2.2 の 起動と終了

Apache HTTP Server 2.2 をインストールした 前回のブログからの続き。

まず、起動する前に、-M オプションで 静的にリンクされたモジュールを確認してみる。
% /usr/local/apache2/bin/httpd -M
Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)
 include_module (static)
 filter_module (static)
 log_config_module (static)
 env_module (static)
 setenvif_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 status_module (static)
 autoindex_module (static)
 asis_module (static)
 cgi_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 userdir_module (static)
 alias_module (static)
 so_module (static)
Syntax OK
問題なく動作していることが確認できた。 これを見る限り、2.2 からは mod_so.c が デフォルトでリンクされているようだ。 2.0の時は、--enable-so を 指定しなければならなかったような気がする。

次に 手動で起動してみよう。 Apache HTTP サーバ バージョン 2.2「コンパイルとインストール」 を参考にすると
# /usr/local/apache2/bin/apachectl -k start
[Tue May 30 13:12:52 2007] [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
何やらワーニングのメッセージが表示されるが、 とりあえず起動したようだ。 ブラウザからアクセスしてみると 「It works!」と表示される。 以前はもっと気の効いたデザインだったような気がするが。

ではApacheの終了方法。
# /usr/local/apache2/bin/apachectl -k stop
正常に終了されると何も表示されないようだ。 試しに、起動していな時に終了コマンドを実行してみると
httpd (no pid file) not running
と表示される。

ちなみにApacheの起動時の apachectl に付けられている「 -k 」オプションは 無くても構わない。 上記のコマンドは「apachectl」の代わりに 「httpd」でも同様に動作する。 但しこの場合は「 -k 」オプションが必要となるようだ。
# /usr/local/apache2/bin/httpd -k start
httpd (pid 1195) already running
先ほど出ていたワーニングのメッセージは表示されなくなった。

【参考リンク】

カテゴリー: Apache     22:13 | コメント (0) | トラックバック (0)

2007年5月31日

Apache HTTP Server 2.2 のインストール

Apache HTTP Server 2.2 の最新バージョンを FreeBSDにインストールしてみる。

FreeBSDにソフトウェアをインストールする際には Portからインストールすることが一般的であるが、 個人的にはApacheで 今後いろいろなオプションをつけて コンパイルし直そうと考えているので、 ここでは あえて オリジナルのソースからmakeしてみることにする。

今回はまず、全くオプションを設定しない状況でインストールしてみる。

まず、ソース用のディレクトリへ移動してから、 apache.org から最新のソースをダウンロード。
# cd /usr/local/src
# wget http://www.apache.org/dist/httpd/httpd-2.2.8.tar.gz


ついでに md5 ファイルもダウンロードして、ファイルが壊れていないかを確認。
# wget http://www.apache.org/dist/httpd/httpd-2.2.8.tar.gz.md5
# cat httpd-2.2.8.tar.gz.md5
39a755eb0f584c279336387b321e3dfc  httpd-2.2.8.tar.gz
# md5 -r httpd-2.2.8.tar.gz
39a755eb0f584c279336387b321e3dfc httpd-2.2.8.tar.gz
MD5ハッシュ値(いわゆるMD5チェックサム)を比較してみて 同じ値であることがわかる。 ちなみに md5 コマンドで -r オプションをつけているのは 単に出力フォーマットを逆にして ハッシュ文字列を比べやすくするためだ。

続いて tar で解凍
# tar xvzf httpd-2.2.8.tar.gz


ディレクトリを移動してから configure, make install
# cd httpd-2.2.8
# ./configure
# make
# make install


これで最低限のインストールが済んだハズ。 さて、実際に動くかどうか。

【参考リンク】

カテゴリー: Apache     22:51 | コメント (0) | トラックバック (0)

2007年5月30日

Apache HTTP Server 2.2

ウェブのサーバーソフトとしては Apache の HTTPサーバー が有名である。 私も長い間Apacheを利用しているのだが、 今まで利用してきたのは 2.0系であった。 もう2.2系がリリースされてからしばらく経ったので そろそろアップグレードの時期かもしれないと思い、 2.2系では 2.0系から何が変わったのか、 既に使えるレベルの安定性なのかを調査してみようと思う。

まず、Apache の HTTPサーバーを構築しようとする際、 現在のところ、3つのバージョンが存在していることを 知らないといけない。 ウィキペディアによると、
  • 1.3系 (安定志向を好むユーザーに利用されている。ノウハウも蓄積されていて十分に“枯れた”バージョンである。)
  • 2.0系 (新しい機能を使いつつ安定志向も好むユーザーに利用されている。)
  • 2.2系 (最新の機能を好むユーザーに利用されている。)
と分類されている。

Apache2.2系の新機能については、 「Overview of new features in Apache 2.2」 にまとめられている。 また、日本語の解説としては @ITの 「Apache 2.2でWebサイトをパフォーマンスアップ!」 がある。

沢山ある変更点のうち、個人的に気になったモノを挙げてみると、

ロード済みモジュール一覧表示がDSOモジュールに対応した「-M」オプション

これは個人的に以前から欲しかった機能。 DSOを使って動的に組み込んだモジュールが キチンと組み込まれたかがどうかが表示できる、 という新機能。

Perl互換正規表現ライブラリ5.0の同梱

PCRE(Perl Compatible Regular Expression Library) version 5.0が 採用されたことで、 「.htaccess」や「httpd.conf」のようなコンフィグレーションファイルで、 より複雑な文字列パターンを、Perl 5.0互換の正規表現を用いて 記述可能になったようだが、はたして具体的には どのような記述ができるのか要調査。

プロキシ機能によるロードバランシングの実現

今は自分には直接関係ないが、将来 アクセスが増えたりした場合にはご厄介になるかもしれない機能。 このロードバランシング機能に ご厄介になれるように 頑張りましょう。

mod_sslモジュールのRFC 2817対応

サービスポート80番に平文で接続してから TLS暗号化通信に移行するRFC 2817スタイルをサポート、 とある。 これにより、HTTPはサービスポート80番、 HTTPSはサービスポート443番という区別が不要になり、 名前ベースで設定されたバーチャルホストのHTTPSも可能になるそうだ。 確かに、今まで 複数のドメイン名をもつバーチャルホストにおいては、 そのうち 一つのドメインでしかSSLが掛けられなかった。 これは便利ではあるが、まだ対応しているWebブラウザが ないようだ。今後に期待。

【参考リンク】

カテゴリー: Apache     22:30 | コメント (0) | トラックバック (0)

2007年5月29日

Apache の コマンドライン

サーバー Apache の コマンドラインの引数について 自分なりの覚書。

Apache のコマンドラインについては 「Apache HTTP Server Version 1.3 httpd マニュアル(日本語)」 にある。これは、バージョンが 1.3 なのだが 「 Version 2.0 」 については日本語はないようだ。

コマンドラインからの Apacheサーバー の実行方法は、 例えば Apache の インストールされている場所が 「/usr/local/apache2/bin/httpd」だったとすると 具体的には、
/usr/local/apache2/bin/httpd -t
といった感じ。

「-t」オプション

このオプションをつけると、httpd.conf の 文法チェックを行ってくれる。 既に httpdデーモンが走っている状態でも問題ない。 実際は、
# /usr/local/apache2/bin/httpd -t
Syntax OK
こうなる。またhttpd.confに文法上のエラーがあった場合には、
# /usr/local/apache2/bin/httpd -t
Syntax error on line 1394 of /usr/local/apache/conf/httpd.conf:
Invalid command 'ServerNane', perhaps mis-spelled or defined by a module not included in the server configuration
のようなメッセージが表示される。

「-S」オプション

もし httpd.conf の設定で バーチャルホスト を使用しているなら この「-S」オプションで その内容の確認できる。 例えば、
# /usr/local/apache2/bin/httpd -S
VirtualHost configuration:
192.168.100.50:80         is a NameVirtualHost
         default server www.abc.com (/usr/local/apache/conf/httpd.conf:1064)
         port 80 namevhost www.abc.com (/usr/local/apache/conf/httpd.conf:1064)
         port 80 namevhost www.def.com (/usr/local/apache/conf/httpd.conf:1116)
Syntax OK
といった感じ。(上記のアドレスやドメインは架空のものです) これで、バーチャルホストの記述が正しいかどうか確認できる。 各行の最後に表示されているのは httpd.conf 内で そのバーチャルホストが定義されている行番号。

ということで、Apacheサーバーの設定変更する場合は httpd.conf を変更した後、 「-S」オプション付きで httpd を実行して、 問題がなければ、デーモンのリスタートを行う、 という手順を踏んだ方がよさそうだ。 ちなみに、 「-S」オプションは 「-t」オプションを含んでいるので、 「-S」オプションだけでもよいと思う。

【参考リンク】

カテゴリー: Apache     22:35 | コメント (0) | トラックバック (0)

2005年7月23日

ApacheでのBASIC認証のためのパスワードファイル作成方法

前回の「ApacheでのBASIC認証のための .htaccess ファイル 」で触れたBASIC認証用のパスワードファイルの作成方法について。

通常、Apacheのユーティリティーとして htpasswd というコマンドが用意されている。 基本的な使い方は、
htpasswd -c パスワードファイル名 ユーザー名
-c オプションは新しいファイルを作ることを指定するため。 パスワードを追加するためには -c オプションを省略すればよい。 いずれの場合もパスワードの入力を求められる。 一度入力した後、再確認のために同じパスワードをもう一度入力する。

また、-b オプション というのがあり、これを指定するとパスワードを引数に指定できるので、 コマンド一行ですんでしまう。その他のオプションについては、単に、htpasswd と打てば、 指定できるオプションの説明が表示される。

実際に今回のインストレーションで行った手順は、
% cd /usr/home/yotsumoto
% htpasswd -bc webpass ユーザID パスワード
のような感じ。 これにより、webpassというファイル内に、ユーザID と パスワード の対が1組出来る。

ここでのパスワードファイルの名前は何でもよいが、 条件として、ここでのファイル名とパスは .htaccess ファイル内の AuthUserFile 指示子で 指定したものと一致していなければならない。

カテゴリー: Apache     22:57 | コメント (0) | トラックバック (0)

2005年7月22日

ApacheでのBASIC認証のための .htaccess ファイル

以前のブログ「PukiWikiインストール 」にて、PukiWikiをインストールしたところまで書いた。 PukiWikiの環境設定等については改めて触れることにして、 今回は Apacheでの「BASIC認証」について。 PukiWikiにも認証機能はあるのだが、今回はあえて、 Apache側で「BASIC認証」を設定することにした。

ISPがホスティングにApacheを使っている場合、 一般的に、各ディレクトリに 「.htaccess」というファイルを置き、 そのファイルにApacheのいろいろな指示子を記述することにより、 そのディレクトリ以下に対する動作を指定することができる。 BASIC認証機能もこの方法により実現できる。

では、実際に BASIC認証 を実現するための「.htaccess」の例としては、
AuthType Basic
AuthName "SKYMERICA Staff Room"
AuthUserFile /usr/home/yotsumoto/webpass
Require valid-user
のような感じ。これを認証を掛けたいディレクトリに置く。

AuthType 指示子で 認証方式が BASIC認証 であることを宣言する。

AuthName指示子について。
通常のブラウザで、BASIC認証のページにアクセルすると、 ブラウザが用意している認証用のウィンドウが出てくる。 例えば、MicrosoftのInternet Explorerでは、「ネットワーク パスワードの入力」というウィンドウ・タイトルで そこに、サイト、領域の各表示と、ユーザー名、パスワードの各入力欄、 それから、「このパスワードを保存する」というチェック・ボックスが表示される。 AuthName とは、このBASIC認証用ウィンドウでの「領域欄」に表示される内容を指定するためのものである。 単にログインする領域を識別するために表示されるので、中身は何でも構わない。

AuthUserFile がパスワードファイルを示していて、 何対かのユーザー名と暗号化されたバスワードからなっている。

Require には、ユーザー名を列記したりもできるが、 最も簡単なのは、「valid-user」と指定して、 パスワードファイルに記載されている全ユーザーを対象とすること。

このような内容の .htaccessファイルを 認証を掛けたいディレクトリに置くだけで、 ブラウザが用意している認証用ウィンドウが表示されるハズである。 但し、まだパスワードファイルを作ってないので、ログインはできない。 では次回はパスワードファイルの作成方法についてとしよう。

カテゴリー: Apache , Wiki     20:51 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.