Web という仕組みにおけるサーバプログラムは「Webサーバ」「WWWサーバ」 「HTTPサーバ」などと呼ばれます。通常、これらのプログラムは HTTP と いうプロトコルによるやり取りを提供するものです。HTTP とは Hyper Text Transfer Protocol の略で、文字通りハイパーテキストを転 送するためのプロトコルです。WWWサーバの仕事は、基本的にはクライア ントから要求された情報(ハイパーテキストなど)を送り返してあげること になります。
WWWサーバのプログラムには、CERN HTTPd、NCSA HTTPd などがありますが、 ここではその中でも最強の呼び声が高い Apache をインストールします。 Apache は NCSA HTTPd のように軽く、CERN HTTPd のように Proxy まで も備えている優れモノです。
Apacheの特徴
- Apache はフリーソフトです。Apache の開発の全ては多くのボラ ンティアの手によって行われています。Apache がフリーソフトであ り、そのソースコードを誰でもが自由に入手できるため、結果的には 多岐にわたる拡張が各方面で行われてきました。
- Apache は数有る WWWサーバの中で世界一のシェアを誇っています。 世界中で使用され、その信頼性は揺るぎ無いものとなっています。
- Apache の構成は、モジュールの追加によって行います。つまり、 モジュールを追加・削除する事により、効率良く、また高機能な Apache を構成できますし、モジュールによっていつも最新の機能が 利用でき、手軽に自分で機能追加することもできます。
- Apache は、事前にある程度の数の分身を作っておいて、適宣作業 を分担させるようにしているため、高速で高性能です。 また、メモリ管理などもしっかりしています。
- Apache はUNIXプラットフォームはもちろんのこと、他に Mac や Windows NT、OS/2 でも動作します。VAX と DOS 以外なら何でも OK です。
Apache の機能
- Proxyサーバ
- SSI(Server Side Include)
- CGI(Common Gateway Interface)
- 様々な認証(ホスト名、ユーザ名 等々)
- Keep-Alive
- バーチャルホスト
- Web上からの状態監視
- ファイルタイプ(MIME)ベースでのスクリプト機能
- ハンドラ機能
- CERN HTTPd のメタファイル機能
- 改良された Imagemap サポート
- エラーメッセージのカスタマイズ
- 持ち主権限での CGI 実行
- URL の高度なマッピング
- HTTP/1.1
- Cookie によるユーザ判断/追跡
- CGIのリソース限界設定
- PHP/FI
- SSL対応
ダウンロード
今回は、Apache を FreeBSD-2.2.8Release にインストールしました。 Apache の最新版は、以下の URL 及びそのミラーサイトから入手できます。
ftp://ftp.apache.org/
今回は、apache-1.3.9.tar.gz を入手しました。ソースファイルを入 手したら、展開します。% tar xvfz apache-1.3.9.tar.gz % cd apache-1.3.9モジュールの設定
Apache のプログラムは、「コア部分」と「モジュール部分」から構成さ れています。CGI や SSI などの機能はモジュールとして組み込みます。 標準では以下のモジュールが組み込まれることになっています。モジュール構成の組み替えを行うには、コンパイル定義ファイルを書き換 えます。モジュールの定義ファイル src/Configuration を編集します。 書式は
- modules/standard/mod_env.o
- modules/standard/mod_log_config.o
- modules/standard/mod_mime.o
- modules/standard/mod_negotiation.o
- modules/standard/mod_status.o
- modules/standard/mod_include.o
- modules/standard/mod_autoindex.o
- modules/standard/mod_dir.o
- modules/standard/mod_cgi.o
- modules/standard/mod_asis.o
- modules/standard/mod_imap.o
- modules/standard/mod_actions.o
- modules/standard/mod_userdir.o
- modules/standard/mod_alias.o
- modules/standard/mod_access.o
- modules/standard/mod_auth.o
- modules/standard/mod_setenvif.o
AddModule [モジュール名]で記述します。以下に各モジュールの概要について説明します。
modules/standard/mod_env.o
CGI/SSI プログラムに指定した環境変数を継承したり、CGI/SSI プロ グラムを起動する際に特定の環境変数を指定するためのモジュールmodules/standard/mod_log_config.o
アクセスログを記録するためのモジュールです。特に指定が無ければ 一般的な common log format でログを記録しますが、カスタマイズ することも可能です。また、ログ情報を指定したコマンドに渡すよう にすることもできます。modules/standard/mod_log_agent.o
アクセスしてきたプラウザが名乗ったプラウザの種類を記録するため のモジュールです。modules/standard/mod_log_referer.o
アクセスしてきたプラウザが示した、「どこの URL からたどってきた のか」という情報を記録するためのモジュールです。modules/standard/mod_mime.o
ファイル名の拡張子からファイルの種別を決定するためのモジュール です。WWWサーバでは、ファイルの拡張子によってそのサーバ上のファ イルを判別し、クライアントのブラウザへコンテンツの種別 (Content-type)を送出しています。このモジュールを組み込んだ場合、 ファイル名は base,type,language,enc という 4 つの部分からなっ ていると見なされ、後方 3 つの部分はそれぞれファイル種別、記述 言語、エンコーデングを意味することになります。ファイルの拡張子 とコンテンツの種別との関係は /usr/local/apache/conf/mime.types というファイルに記述されています。modules/standard/mod_negotiation.o
ブラウザの要請に合わせた形で情報を提供するためのモジュールです。 例えば、英語圏のブラウザから見ると言語が英語と設定され、日本語 圏のブラウザから見ると言語が日本語と設定されます。modules/standard/mod_status.o
Apache の活動状況をハイパーテキストまたはプレーンテキストで取 得できるようにするためのモジュールです。活動中のサーバ数やトー タルアクセス数などかなりの情報を得ることができるようになります。modules/standard/mod_info.o
活動中の Apache サーバの設定内容をハイパーテキストで取得できる ようにするためのモジュールです。指定された場所へプラウザでアク セスすることによって詳細な設定内容を閲覧することができます。modules/standard/mod_include.o
SSI 機能を実現するためのモジュールです。SSI というのは特定の書 式にしたがったハイパーテキストファイルをサーバ側で処理すること によって動的に変化させるための仕組みで、そのファイル自身の最終 更新日時やサイズ、アクセスがあった時点での時刻を表示させたり、 任意のコマンドの実行結果を組み入れたりすることに使えます。modules/standard/mod_autoindex.o
最後がスラッシュ('/')で終わって、且つインデックスファイルのな い URL が指定されたとき、該当ディレクトリのファイルをリスト表 示するためのモジュールです。modules/standard/mod_dir.o
最後がスラッシュ('/')で終わっている URL を指定すると、インデッ クスファイル(通常は index.html など)として設定されているファイ ルを検索して表示するためのモジュールです。modules/standard/mod_cgi.o
CGIプログラムを実行させるためのモジュールです。CGIハンドラが設 定されているファイルなどは、このモジュールによって CGI プログ ラムとして実行されます。modules/standard/mod_asis.o
HTTPでは、WWWサーバからクライアントのブラウザへデータを返すと きに HTTP ヘッダを付加します。HTTPヘッダには、コンテンツの作成 時期や種別など様々な情報が入ります。このモジュールを使うことに より、コンテンツの最初の部分が HTTP ヘッダとしてクライアントの ブラウザに返されるようになります。modules/standard/mod_imap.o
イメージマップを処理するためのモジュールです。例えば、サーバ側 でクリッカブルマップを利用したい場合は、このモジュールにより実 現可能です。modules/standard/mod_actions.o
指定されたファイルタイプを要求されたり、指定された手法でリクエ ストが発行された場合に、任意の CGI プログラムを実行させるため のモジュールです。どのような URL からのリクエストであったかと いう情報は環境変数として CGI プログラムに渡されます。modules/standard/mod_rewrite.o
要求された URL について正規表現を利用した書き換えを行うモジュールです。modules/standard/mod_speling.o
URL で大文字、小文字を区別しないようにするためのモジュールです。modules/standard/mod_userdir.o
~username という形でのアクセスに対応するためのモジュールです。 例えば、~username/bar というアクセスがあった場合に、 ~username/public_html/bar というようにユーザのホームディレクトリに マッピングし、ユーザのホームディレクトリを有効にします。modules/proxy/libproxy.a
Apache にキャッシュ機能付き proxy をさせるためのモジュールです。modules/standard/mod_alias.o
各種のエイリアス及びリダイレクトをさせるためのモジュールです。 要求された URL で指定されたパスがサーバのディスクのどのディレクトリに 対応するかを設定したり、特定のパス以下への要求を別のサーバへ リダイレクト(転送)させたりすることができます。modules/standard/mod_cern_meta.o
CERN 版 HTTP サーバで使用されていた meta ファイルによる HTTP レベルの ヘッダ調整をサポートするモジュールです。modules/standard/mod_expires.o
ファイルタイプに合わせて、各情報の有効期限を設定するモジュールです。modules/standard/mod_headers.o
任意のヘッダ情報を付加したり除去したりするためのモジュールです。modules/standard/mod_usertrack.o
クッキーのやり取りをサポートするためのモジュールです。modules/example/mod_example.o
API を示すためのサンプルモジュールです。組み込んではいけません。modules/standard/mod_access.o
ホスト名や IP アドレスによってアクセス制限を課するためのモジュールです。 IPアドレスでの制限では最初の 1〜3バイトだけを指定することができますが、 任意のマスクを指定することはできません。modules/standard/mod_auth.o
ユーザ名とパスワードによるアクセス制限を実現するためのモジュールです。modules/standard/mod_auth_db.o
mod_auth.o のユーザ名とパスワードの組み合わせは単なるテキストファイルに 記述されますが、このモジュールによればバークレイ db 形式で管理されるように なります。それ以外については本質的に mod_auth.o と同じことを実現します。modules/standard/mod_auth_dbm.o
こちらは dbm を利用したアクセス制御モジュールです。modules/experimental/mod_auth_digest.o
MD5 を利用したチャレンジ-レスポンス型の認証(RFC2069)を行うための モジュールです。この認証モジュールはセキュリティに強いのですが、 対応しているブラウザがまだまだ少ないという問題があります。modules/standard/mod_auth_anon.o
mod_auth.o ではユーザ名とパスワードを使用したアクセス制御を行いますが、 このモジュールによれば anonymous FTP スタイルでのアクセスを行わせることが 可能になります。パスワードの代わりのメールアドレスの正当性については簡単な チェックを行うこともでき、また適宣、ログに残すことも可能です。コンパイル、インストール
モジュールの選択が完了したら、選択内容及びその他の設定内容を反映させるために Configure というシェルスクリプトを実行します。ここではモジュールの選択は 行わず、標準で選択されているモジュールを組み込むことにします。% ./configure次に make を実行してコンパイルします。% makeエラーが出ずに、コンパイルが終了したら、次のようにしてインストールします。% su Password: # make install以上で Apache が /usr/local/apache 以下のディレクトリにインストールされます。 Apache のオンラインマニュアルは /usr/local/apache/man にインストールされる ため、FreeBSDの場合は、/etc/manpath.config、Linux では /etc/man.config を 編集して、オンラインマニュアルへのパスを追加しておきます。# vi /etc/manpath.config 以下の行を追加 MANDATORY_MANPATH /usr/local/apache/man MANPATH_MAP /usr/local/apache/bin /usr/local/apache/man以上で Apache のインストールは終了です。
Apache を起動させる前に、設定ファイルを編集します。Apache 1.3.4 からは設定 ファイルを今までの srm.conf , access.conf , httpd.conf から httpd.conf に 統一するようになっています。よって設定ファイルとして /usr/local/apache/conf/httpd.conf ファイルを編集します。 以下に主な設定項目を示します。
ServerType
Apache の起動タイプを設定します。設定できるのは standalone か inetd で、 前者はデーモンプロセスとして起動され、後者は inetd から起動されることを 前提とします。standalone の場合はホストの起動時に Apache も起動されるような 設定を、また inetd の場合には /etc/inetd.conf ファイルに Apache を起動する ような設定をしておきます。一般にはデーモンプロセスとして動作させるため、 ここでは standalone にします。ServerRoot
Apache サーバが動作する際に基本とするディレクトリを設定します。 Apache のインストールディレクトリを指定します。ここでは /usr/local/apache とします。PidFile /usr/local/apache/logs/httpd.pid
Apache のプロセスIDを記録しておくファイルを指定します。このファイルに 記述されているプロセスIDは Apache の終了や初期化の際に使用します。 ここでは /usr/local/apache/logs/httpd.pid とします。Timeout
クライアントからの要求がないときに接続を切るまでの時間を秒単位で指定 します。ここでは 600 としました。KeepAlive
KeepAlive を利用するかどうかを設定します。基本的に WWW のデータ転送は、 1回の接続につき、1つのオブジェクトが転送されますが、KeepAlive を利用する ことにより、1回の転送につき複数のオブジェクトを転送できるようになります。 KeepAlive を利用すると、オブジェクトを転送した後に一定時間接続を保持し、 次の取得要求を待ちます。最近のクライアント(ブラウザ)のほとんどは KeeAlive に対応しているし、オブジェクトサイズが小さい物を複数ちりばめたページも 多いので、通常は KeepAlive を有効にしておきます。MaxKeepAliveRequests
KeepAlive に対応したクライアントが 1 回のコネクションにつき何回オブジェクト が取得できるかを指定します。0を指定すると無制限になります。 ここではデフォルトの 100 としました。KeepAliveTimeout
KeepAlive のタイムアウトを秒単位で指定します。指定した秒数の間、 オブジェクトの取得要求が無ければ、コネクションを切断します。 ここではデフォルトの 15 としました。MinSpareServers
リクエスト待ち状態のサーバプロセスが最小でいくつなくてはならないかを設定 します。Apache はリクエスト待ち状態のサーバプロセスが、ここで設定した数 よりも少なくなると、適宣必要な数だけ分身サーバを生成します。ここでは デフォルトの 5 としました。MaxSpareServers
リクエスト待ち状態のサーバプロセスが最大でいくつまでいてもよいかを設定 します。Apache はリクエスト待ち状態のサーバプロセスが、ここで設定した数 よりも多くなると、余ったサーバを適宣終了させます。ここではデフォルトの 10 としました。StartServers
Apache の起動時にいくつの分身サーバ(httpd)を作成するかを設定します。 ここではデフォルトの 5 としました。MaxClients
サーバに接続できるクライアントの最大数を指定します。ここではデフォルトの 150 としました。MaxRequestsPerChild
1つの子プロセスで受けるリクエスト数を指定します。指定した回数のリクエスト を受けるとプロセスを終了します。0を指定すると無制限になります。ここでは デフォルトの 0 としました。Port
Apache を起動するポート番号を指定します。通常は 80 ですが、80 を含めて 1024 以下のポート番号でサーバを起動するためには、立ち上げ時に root 権限 が必要になるので注意が必要です。この場合、Apache は root 権限で動作する ことになりセキュリティ上、好ましくないので、次の User 及び Group で 適切な権限を与えておきます。ここではデフォルトの 80 としました。User
Apache が動作する際のユーザ権限を設定します。設定方法はユーザ名で設定 するか、ユーザIDで設定するかのどちらかです。ユーザIDで設定する場合は # を伴って #80 などと記述します。なお、この項目を作用させるためには root 権限で Apache を起動していなければなりません。ここでは新規ユーザ www を作成し、www としました。Group
Apache が動作する際のグループ権限を指定します。設定方法その他は User と 同じです。ここでは新規グループ http を作成し、http としました。ServerAdmin
WWWサーバの管理者のメールアドレスを設定します。一般には www-admin などのメールアドレスが使用され、そのメールアドレスに届いたメールを 本来の管理者にフォワードするのが一般的です。ここでは、 www@oak.eg.t.kanazawa-u.ac.jp としました。ServerName
DNS に登録してある WWW サーバ名を指定します。例えば、サーバ名は aaa.foo.abc.jp だが、www.foo.abc.jp でもアクセスできるようにする場合には、 DNS サーバに別名定義(CNAME)を行い、この項目で www.foo.abc.jp を指定します。 ここでは oak.eg.t.kanazawa-u.ac.jp としました。DocumentRoot
HTML ファイルの置き場所となるディレクトリを指定します。例えば、ホスト名 www.foo.or.jp のホストで DocumentRoot /home/www としていた場合、 < URL:http://www.foo.or.jp/bar.html > で参照される情報の実体は /home/www/bar.html になります。ここではデフォルトの /usr/local/apache/htdocs とします。ディレクトリの最後に余計な 「/」 をつけてはならないことに注意してください。- < Directory >
...
< /Directory >
記述するアクセス制御情報のターゲットとなるディレクトリ(その配下も含みます) の記述内容を < Directory > 〜 < /Directory > によって明らかに します。具体的には < Directory /home/www/pub > といった記述ではじめ、 続いて /home/www/pub 配下に対するアクセス制御情報を記述します。そして最後に < Directory > で締めくくります。ディレクトリの指定には、この例のように フルパスでの指定の他に、ワイルドカードや正規表現による指定が可能です。 アクセス制御情報について以下に記述します。
- allow/deny
- 指定したディレクトリへのアクセスを許可する/禁止するホストを完全な、または 部分的なホスト名や IP アドレスで列挙します。
- order
- 上の allow 及び deny に記述したリストのどちらから先に評価するかを指定 します(allow,deny または deny,allow)。また、両方の条件に合致するものだけ、 つまり allow のリストに含まれ、かつ deny のリストに含まれないホストだけに アクセスを許可するような設定(mutual-failure)も可能です。
- Options
- 指定したディレクトリ配下のファイルに与える属性を列挙します。設定できる 属性は以下の通りです。
- ExecCGI
- 配下のファイルに CGI ハンドラを適用することを許可します。
- Includes
- 配下のファイルに SSI ハンドラを適用することを許可します。
- IncludesNOEXEC
- SSI ハンドラの適用を許可しますが、#exec や #include でのプログラムの 起動は禁止します。
- Indexes
- ディレクトリに対するアクセスがあったとき、そのディレクトリに DirectoryIndexで指定したファイルがなければディレクトリのないよう 一覧を生成します。
- FollowSymLinks
- シンボリックリンクの先を参照することを許可します。
- SymLinksIfOwnerMatch
- シンボリックリンクファイルの持ち主とリンク先ファイル/ディレクトリの 持ち主が同じだった場合にだけ、リンク先を参照することを許可します。
- All
- 以上の全てを指定したのと同じです。
- AllowOverride
- AccessFileName で指定したアクセス制御ファイル(.htaccess)で設定できる 機能を限定します。
- Options
- 前述の Options で指定できる項目を設定できるようにします。
- FileInto
- AddType と AddEncoding の機能が有効になります。
- Limit
- IPアドレスやユーザ名のアクセス制御機能を使用できるようにします。
- AutoConfig
- 認証方法の変更を許可します。
- None
- 何も許可しません。
- All
- 全て許可します。
- SetHandler
- 指定されたディレクトリに存在するファイルに任意のハンドラを割り付けます。
ここで< Directory / > ... < /Directory >の部分はデフォルトのアクセス設定です。ここにはデフォルトでは、Options FollowSymLinks AllowOverride Noneとなっていますが、必要に応じて変更します。同様に、< Directory "/usr/local/apache/htdocs" > ... < /Directory >の部分は、/usr/local/apache/htdocs ディレクトリ以下のアクセス設定です。ここには デフォルトでは、Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from allとなっていますが、必要に応じて変更します。ここでは CGI や SSI を許可したり、 アクセス制御ファイルとして .htaccess を使用できるようにするため、Options All AllowOverride Allとしました。
UserDir
個人のホームディレクトリのルートを指定します。「~foo」に対する要求が来た 場合、このディレクトリ以下のファイルが対応します。典型的な設定は UserDir public_html で、この場合 ~foo/bar.html には、ユーザ foo の ホームディレクトリ配下にある public_html/bar.html が対応します。 UserDir にはローカルファイルシステムのパス名だけでなく、他のサーバへの URL(の一部)を指定することも可能です。ここではデフォルトの public_html としました。DirectoryIndex
ディレクトリに対する末尾が「/」で終わる URL へのアクセスがあった場合に、 実際のディレクトリの中身の一覧の代わりに転送するファイルのファイル名を 指定します。デフォルトでは index.html のみですが、ここでは index.htm , index.shtml , index.cgi を追加しました。AccessFileName
各ディレクトリに対するアクセス制御情報を記述するファイルのファイル名を 指定します。ここで指定したファイル名のファイルの内容は、そのファイルが あるディレクトリの配下にのみ影響が及ぶものです。ここではデフォルトの .htaccess としました。UseCanonicalName
TypesConfig
ファイルのタイプを記述した mime.types ファイルの場所を指定します。 ここではデフォルトの /usr/local/apache/conf/mime.types としました。DefaultType
mime.types ファイルで定義されていない未定義のファイルを読み込んだ時に 指定する形式を設定します。ここではデフォルトの text/plain としました。つ まり、未定義のファイルはプレーンテキストとして読み込まれます。HostnameLookups
クライアントがサーバにアクセスしてきた時の記録(ログ)に、クライアントの IPアドレスを書き込むか、DNS の逆引きを行い FQDN で書き込むかを指定します。 on で DNS の逆引きを行いますが、その場合、DNS 検索の処理が入るので アクセスの多いサーバは off にしておいた方が良いです。ここではデフォルトの off にしました。ErrorLog
サーバを起動した後のエラーを記録するファイルを指定します。ここでは デフォルトの /usr/local/apache/logs/error_log としました。CustomLog
クライアントからのアクセスログを記録するファイルを指定します。 デフォルトでは指定方法に以下の 4 種類があります。ここではデフォルトで /usr/local/apache/logs/access_log common のみ有効に しました。
- CustomLog /usr/local/apache/logs/access_log common
- 通常のアクセスログファイルを記録します。
- CustomLog /usr/local/apache/logs/referer_log referer
- どのWebページからどのページへ到達したのかという記録を残します。 refer_log_module を組み込んでいない場合には無効です。
- CustomLog /usr/local/apache/logs/agent_log agent
- アクセスしてきたブラウザが名乗ったブラウザの種類を記録します。 agent_log_modelu を組み込んでいない場合には無効です。
- CustomLog /usr/local/apache/logs/access_log combined
- access_log , referer_log , agent_log を同じファイルに記録します。
ServerSignature
Alias
指定された URL のパス(サーバ名の後ろに続く部分)を特定のディレクトリに対応 づけます。DocumentRoot で設定したディレクトリ配下になりディレクトリに ついても、そのサーバで扱えるようにしたい場合に設定します。デフォルトでは
Alias /icons/ "/usr/local/apache/icons/"
のような設定がなされています。ScriptAlias
Alias とほぼ同様の働きをしますが、ScriptAlias で指定したディレクトリの 中身については全て CGI プログラムであると解釈される (CGIハンドラが割り当てられる)という点で異なります。ここでは CGI の 格納ディレクトリを変更するため、デフォルトの
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
から、
ScriptAlias /cgi-bin/ "/usr/local/apache/htdocs/cgi-bin/"
に変更しました。また、< Directory "/usr/local/apache/cgi-bin" > AllowOverride None Options None ... < /Directory >から< Directory "/usr/local/apache/htdocs/cgi-bin" > AllowOverride All Options All ... < /Directory >に変更しました。
IndexOptions
Apache の設定ファイル /usr/local/apache/conf/httpd.conf を編集したら、 以下のようにして Apache を起動します。# /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.confApache を終了させるには、以下のようにします。# kill -TERM `cat /usr/local/apache/logs/httpd.pid`また、Apache を再起動させるには以下のようにします。# kill -HUP `cat /usr/local/apache/logs/httpd.pid`また、Apache を完全に再起動させるには以下のようにします。# kill -USR1 `cat /usr/local/apache/logs/httpd.pid`次回からシステムの起動時に自動的に Apache が起動するようにするため、 /etc/rc.local ファイルに以下を追加します。# # Starting HTTP Server # if [ -f /usr/local/apache/bin/httpd -a -f /usr/local/apache/conf/httpd.conf ]; then echo -n 'Starting HTTP Server:' /usr/local/apache/bin/httpd echo ' Apache.' fi
アクセス制限
- ディレクトリに対するアクセス制限
アクセス制限したいディレクトリに .htaccess ファイルを作成します。 このとき、/usr/local/apache/conf/httpd.conf ファイルで AllowOverride の項目を 適切に設定しておき、.htaccess ファイルを使用してアクセス制限ができるように しておきます。
ある特定のホストのみに、あるディレクトリのアクセスを許可するように場合、 アクセス制限したいディレクトリに以下のような .htaccess ファイルを作成します。Options All order deny,allow deny from all allow from アクセスを許可したホスト名またはIPアドレス allow form ... ...- パスワードによるアクセス制限
ユーザ名とパスワードによりアクセス制限したい場合は、アクセス制限したい ディレクトリに以下のような .htaccess ファイルを作成します。AuthType Basic AuthName "Members Only" AuthUserFile /usr/local/etc/htpasswd < limit GET POST > Require valid-user < /limit >次に、パスワードファイルを置く /usr/local/etc/htpasswd を作成します。 システムのパスワードファイル(/etc/master.passwd)より、アクセスを許可したい ユーザのパスワード情報を元に作成します。
このファイルの書式は以下のようになります。test:nx37RtAOHVS6M上記のような書式で、アクセスを許可したいユーザを 1 行ずつ記述します。
又は、新しいユーザ(test)でパスワードファイルを作成したい場合は、 以下のようにすれば、ユーザ test のパスワードファイルを作成できます。# /usr/local/apache/bin/htpasswd -c /usr/local/etc/htpasswd test New password: Re-type new password: Adding password for user testCGI & SSI
CGI(Common Gateway Interface) や SSI(Server Side Include) を使用したい場合は、 CGI や SSI のスクリプトを置くディレクトリに .htaccess ファイルを作成します。 具体例を以下に示します。Options FollowSymLinks ExecCGI Includes AddHandler cgi-script .cgi AddType text/x-server-parsed-html .html AddType text/x-server-parsed-html .htm AddType application/x-httpd-cgi .cgi AddType audio/x-pn-realaudio .raその他の注意点として、ファイルやディレクトリのパーミッションを適切に設定する 必要があります。具体的にはCGI や SSI のスクリプトを置くディレクトリ 777 CGI や SSI のスクリプトファイル 755 アクセスカウンタ等でカウントするファイル 666などが挙げられます。また、CGI や SSI のスクリプトファイルのオーナーは root にしないようにします。