UR建築研究所UR建築研究所boxAC総合計画AC総合計画 face UR Architectural LabboxAC Integrated Planning
headline
corner
■Apache

Apacheは世界でも最もポピュラーで、よく使用されているWEBサーバーソフトです。Windows2000+IISを導入するよりもローコストで、高機能で安定したWEBサーバーを立ち上げる事ができます。

■WEBサーバー

WEBサーバーを使うとドキュメントを様々な形でネットワーク上のクライアントに公開できるようになります。予め作成済のhtmlファイルをクライアントから閲覧する以外にも、CGI等を使うと、更に動的なサービスを提供する事もできます。

■Apacheのインストール

Apacheは現在従来からのバージョン1.3系と新しい機能を盛り込んだ2.0系の2種類のバージョンがあります。2.0系では、マルチスレッド対応によるパフォーマンスの向上、IPv6対応等、先進機能を搭載していますが、個人的に気になったのはこの時点でまだPHPのApache2.0サポートがベータレベルだという事です。そのせいかどうかは分かりませんが、手元のLinuxマシン上でApache2.0.35上でPHP4.2.1のインストールを試みたのですが、どうしてもうまくいきませんでした。これについてはまた追ってレポートしますが、そんな事もあって、筆者の周囲では実験用途を除いてApacheは1.3系を使用しています。

この原稿執筆時点での1.3系の最新バージョンは1.3.26です。apache_1.3.26.tar.gzをダウンロードします。

(先日Apache1.3〜1.3.24と2.0〜2.0.36に危険なセキュリティバグが発見されています。このバージョンを使用している場合はバージョンアップが必要です。)

  • コンパイル・インストール (以下、% # はシェルのプロンプトを表す)

% tar xvzf apache_1.3.26.tar.gz
% cd apache_1.3.26
% ./configure --enable-module=so
% make
% su
Password: ********
# make install

--enable-module=so
DSO (Dinamic Shared Object) を有効にします。Apacheに後で機能を追加する場合に、設定ファイルに記述するだけでモジュールをロードしてくれるので、Apacheをリビルドする必要がなくなります。

  • Apacheのの設定

デフォルトで/usr/local/apache/conf ディレクトリに設定ファイルhttpd.confが作成されます。この中で最低限編集しなければいけない箇所があります。
#ServerNameで始まる行の#をはずしてください。ServerName に続く名前はそのホストの名前を記入します。この行の#をはずさなかった場合は、そのホストがDNSに登録されていなければapacheが起動できないらしいです。DNSに登録されているならはずさなくてもいいと思います。

#ServerName new.host.name:80
           ↓
ServerName your.server.name

また、デフォルトのhttpd.confでは何故かサーバーポートが8080に設定されています。これを80に変えておきます。

Port 8080
   ↓
Port 80

デフォルトで/manual/や/icons/のエイリアスが設定されていますが、ほとんどの場合これらは必要ないと思われるので、行の先頭に#を入れてコメントにするか、削除します。

(これらの行の先頭に#を入れておく)
#    Alias /icons/ "/usr/local/apache/icons/"

#    
#        Options Indexes MultiViews
#        AllowOverride None
#        Order allow,deny
#        Allow from all
#    

#    Alias /manual/ "/usr/local/apache/htdocs/manual/"

#    
#        Options Indexes FollowSymlinks MultiViews
#        AllowOverride None
#        Order allow,deny
#        Allow from all
#    

デフォルトのドキュメントルートディレクトリは/usr/local/apahce/htdocsになっていると思いますが、このディレクトリの設定でIndexesが有効になっていますが、これはディレクトリにindex.htmlが無い場合に、ディレクトリのファイル一覧を表示させる機能です。これもほとんどの場合必要無いと思います。むしろ、最近やたら多発しているWEBサーバーからの個人情報漏洩の手助けなんかになりかねないのではずしておきましょう。

Options Indexes FollowSymLinks MultiViews
   ↓
Options FollowSymLinks MultiViews

  • Apacheを起動する。

# /usr/local/apache/bin/apachectl start

システム起動時にApacheを自動で起動するには、/etc/rc.d/rc.local (Linux)に

if [ -f /usr/local/apache/bin/apachectl ]; then
    /usr/local/apache/bin/apachectl start
fi

を追記する。(FreeBSDの場合は、/etc/rc.local)

試しにWindowsのブラウザからアドレス欄に "http://サーバー名" を入力してみてください。「あなたの予想に反して、このページが見えているでしょうか?」と書いたページが表示されればOKです。

  • 文字コードセットについて

Apacheの最近のバージョンでは、デフォルトでサーバーから通知されるhtmlヘッダーが

Content-Type: text/html; charset=ISO-8859-1

となっている為、そのままでは日本語で作成したhtmlファイルは文字化けしてしまう事があります。これはhtmlファイル中のMETAタグで文字コードセットを指定しても、サーバーから送られたヘッダー情報の方が優先されるようで、この場合METAタグで指定しても直らないようです。
それではどうすればいいかというと、例えば文字コードセットに Shift_JIS を使用するなら、サーバーのhttpd.confファイルのディレクトリ設定の中、もしくはディレクトリの.htaccessファイルに、

AddCharset Shift_JIS .html
AddType "text/html; charset=Shift_JIS" html

を書き加えます。これでそのディレクトリ内(とそのサブディレクトリ内)のhtmlファイルはShift_JISとして認識され、サーバーから送られるhtmlヘッダーも

Content-Type: text/html; charset=Shift_JIS

となり、正常に表示されるようになります。

同様の事がcgiにも言えます。perl cgiの場合、以前はhtmlヘッダーとして

print "Content-type: text/html\n\n";

等を指定していましたが、これだけで、文字コードセットを特に指定しない場合は、デフォルトの ISO-8859-1 とみなされ、文字化けしてしまいます。Shift_JIS を使用するなら、

print "Content-type: text/html; charset=Shift_JIS\n\n";

と、文字コードセットまで含めて指定するようにしてください。

WEBサーバーと文字コードセットについてはこちらが詳しいです。

■関連リンク