Apache2 のインストールと設定

WWW サーバを作るために、Apache2 をインストールします。 ここでは、ソースを持って来てコンパイルする方法を取ります。 この記述は、Apache のバージョン 2 系統である httpd-2.0.39 [2002/06/17リリース]をもとにしています。

なお、httpd-2.0.36 以前のバージョンには セキュリティーホールが発見されています

用意するもの

サイト

Apache の入手

まず、httpd-2.0.39.tar.gz と httpd-2.0.39.tar.gz.md5 を適当なサイトから入手します。 日本語のサイト Apache をダウンロードできるサイト一覧 があります。 入手したら、MD5 をチェックしてから、適当な場所に展開します。
% cd /somewhere
% cat httpd-2.0.39.tar.gz.md5
MD5 (apache-2.0.39.tar.gz) = ...................
% md5 httpd-2.0.39.tar.gz
MD5 (apache-2.0.39.tar.gz) = ................... (上の md5 と一致しているかチェック)
% zcat /somewhere/httpd-2.0.39.tar.gz | tar -xf -
% cd httpd-2.0.39

configure

次に、configure をします。 cinfigure のオプションの詳細は INSTALL に書いてありますが、 ここではコンパイラとインストール先のみ指定します。
% setenv CC /usr/bin/gcc (この設定をやるとうまくいかない場合があります)
% ./configure --prefix=PREFIX

PREFIX は、お好きな場所を指定します。 例えば、./configure --prefix=/usr/local/lib/apache など。 デフォルトは、PREFIX=/usr/local/apache2 です。

FreeBSD では、threads というものが使えないかもしれないので、 threads を使いたい場合は --enable-threads を追加しておきます。

make と make install

make して make install します。
% make
% su
Password:
# make install

インストールはすべて上の PREFIX で指定されたディレクトリ以下に されます。インストールされた後の状況は以下の通り。
% ls -F PREFIX
bin/ build/ cgi-bin/ conf/ error/ htdocs/ icons/ include/ lib/ logs/ man/ manual/ modules/

マニュアル

マニュアル man も PREFIX に入っています。 これを man コマンドで見られるように、/etc/manpath.config に 次の2行を追加しておきます。
/etc/manpath.config
MANDATORY_MANPATH PREFIX/man
MANPATH_MAP PREFIX/bin PREFIX/man

テスト

Apache が動くかどうか、テストします。
# PREFIX/bin/apachectl start

ローカルホストで、http://localhost/ にアクセスしてみます。 これで、PREFIX/htdocs を読みに行けば成功です。

トラブルシューティング

  1. conf/httpd.conf の266行目で Group が "#-1" になっていると httpd がうまく立ち上がらない事があります。 "#-1" を nobody に変更してからやり直します。

設定

古いバージョンでは conf/{access.conf,srm.conf} も使われいたようです が、version 2.0.39 では混乱を避けるためほとんどすべての記述を conf/httpd.conf に書くようになっています。

さて、conf/httpd.conf で設定しなければならないことは、 主に次の項目でしょうか。 詳細は、conf/httpd.conf をご覧下さい。
([2003/06/06]間違って apache-1.3.22 の行数を書いてたのを訂正しました)
http://x-web.pobox.ne.jp/fcgi/fcgi_f4b.htmlも参考になります。

基本的な設定

  1. Group ID
    (266行目) Group nobody

  2. サーバ管理者のメールアドレス
    (275行目) ServerAdmin admin_name@hogehoge.jp

  3. WWW サーバの名前もしくは IP アドレスのみ指定された時に 見に行く場所
    (305行目) DocumentRoot /homedir/of/httpd

  4. .htaccess によるアクセス制限をするかどうか
    (317行目) AllowOverride None
    → AllowOverride Limit AuthConfig
    Limit は、IP アドレスによるアクセス制限を行うため、
    AuthConfig はユーザ名とパスワードによるアクセス制限を行うために 設定します。
    その他、.htaccess を隠すための設定が 405行目〜408行目にありますが、 バージョン 2.0.39 ではデフォルトで隠すようになっています。

  5. DocumentRoot で指定したディレクトリへの設定(330〜359行目)
    (330行目) <Directory "/homedir/of/httpd">
    上の .htaccess を有効にするためには、
    (351行目) AllowOverride None
    → AllowOverride Limit AuthConfig
    が必要。

  6. WWW サーバの名前もしくは IP アドレスに続き、 ユーザの名前のみ指定された時に見に行く場所
    (365行目) UserDir public_html

  7. ファイルの名前が省略された場合に見に行くファイル
    (392行目) DirectoryIndex index.html

  8. ログファイルを common 形式ではなく、combined 形式で取りたい場合は、
    (501行目) #CustomLog logs/access_log common
    (514行目) CustomLog logs/access_log combined
    と変更します。
    common 形式では access のみの情報となりますが、 combined 形式なら access, agent, referer の情報を含みます。
    • access
      日時・ホスト・アクセスファイルなど
    • agent
      相手方ブラウザの名前・バージョン
    • referer
      どのような語句検索でページに辿り着いたか

UserDir に関する詳しい説明

上の例の場合は、~/public_html を指定したことになります。 こうしておくと、
http://hogehoge.ac.jp/~herohero/public_html/index.html
と指定すべき所を
http://hogehoge.ac.jp/~herohero/index.html
とちょっと楽できます。 もし各ユーザのホームディレクトリ以外を指定したかったら、 絶対パスで書いておけば大丈夫です。例えば、

UserDir /home/of/user

としておくと、
http://hogehoge.ac.jp/home/of/usr/herohero/index.html
と指定すべき所を
http://hogehoge.ac.jp/~herohero/index.html
で良い様に設定したことになります。

トラブルシューティング

Apache をアップデートした後で WWW ファイルを見ると 日本語が文字化けすることがあります。 この現象の対処法は ユーザの WWW ページの文字化けについて(対処法) にあります。

正しい対処法は、html テキストにキャラクターセットを 指定する方法です。例えば、UNIX の UTF-8 を使っている場合は、 head 部で次のように指定します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">(英語の場合は "en")
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Apache 側での対処としては、httpd.conf の AddDefaultCharset を いじるといいようです(根拠不明)。 根拠を調べました。デフォルトでは欧米の文字コードに設定されていて、 日本語環境では文字化けをしてしまうのが理由なようです。
AddDefaultCharset ISO-8859-1
→ #AddDefaultCharset ISO-8859-1

CGI を実行するための設定

  1. cgi-bin を置くディレクトリ
    (557行目) ScriptAlias /cgi-bin/ "/your/directory/of/cgi-bin/"

  2. cgi-bin を置くディレクトリに対する設定
    (571行目) <Directory "/your/directory/of/cgi-bin/">
    (572行目) AllowOverride Limit AuthConfig
    (573行目) Options ExecCGI

  3. #AddHandler cgi-script .cgi のコメント「#」を外して CGIスクリプトを実行できるようにする

  4. #AddHandler send-as-is asis のコメント「#」を外して CGIスクリプトから HTTPヘッダを送れるようにする

  5. #AddHandler imap-file map のコメント「#」を外して イメージマップが使えるようにする

自動起動

FreeBSD 5.x では、/usr/local/etc/rc.d/ に実行ファイルを置くだけではだめで、 /etc/rc.conf に起動の呪文を書かないと自動起動しないようです。
apache2_enable="YES"
ちなみに /usr/local/etc/rc.d/ に置いた起動スクリプトは以下のようなものです。
#!/bin/sh
echo " httpd"
(path to apachectrl)/apachectl start
このファイルに apache2.sh という名前を付けて実行権を与えておきます。

rc.conf に書くのと、/usr/local/etc/rc.d/ に実行ファイルを置くのの 両方をしないと自動起動しません。

アップグレード時の注意

Apache2 を最新版にアップグレードするときの手順は、 次のようになると思います。 以下では、古いものと同じディレクトリにインストールすることを想定しています。
  1. 古い httpd を止める
  2. 古いインストールディレクトリを別の名前にしておく
  3. 新しい apache2 をインストールする
  4. 古い httpd.conf を参照して新しい httpd.conf を書く
  5. 新しい httpd.conf をテストする
  6. logs/* を新しい方の logs/ にコピーする
  7. 本格的に運用する

おまけ:Linux での自動起動法

/etc/rc.d/init.d/httpd をバックアップしておいて、 bin/apachectl にリンクする。
# cd /etc/rc.d/init.d/httpd
# mv httpd httpd.bak
# ln -s PREFIX/bin/apachectl httpd

なお、PREFIX は configure のときに決めたインストール先の ディレクトリです。


FreeBSD の部屋


Last modified: Wed Apr 20 16:14:28 JST 2011