Apacheを応用しよう! 

と言う訳でいよいよapacheの応用編です。今回行う内容は、バーチャルホストの作りかた及びScriptAliasについて、アクセスファイルを利用しディレクトリーごとに機能を変更する方法、パスワードで他人がアクセスできないようにする。以上の項目についてLessonを行うことします。多分あなたは既に、自分のホームページを実現しているは筈ですよね!。この応用技術を生かしてさらにパワーアップしてください。

 バーチャルホストとは?

 ここでいうバーチャルホストとは、1台のwebサーバーに複数のサイトを構築することです。実現させる方法としてIPベースのバーチャルホストネームベースのバーチャルホストと2種類あります。IPベースのバーチャルホストとは、1台のサーバー機にネットワークカードを2枚以上挿しそれぞれのカードに対してIPアドレスを振り、IPアドレスを元にそれそれのサイトに振り分ける仕組みである。今回のLessonでは、この方法ではなく、ネームベースのバーチャルホストの設定方法を行います。

 ネームベースのバーチャルホストとは?

 ネームベースのバーチャルホストとは、1つのIPアドレスに対して複数のサイトを構築することです。たとえば、www.sample.conとvirt.sample.conの2つのサイトがあった場合、1台のウェブサーバーでそれぞれのサイトを別々に動かしそれぞれのアクセスに対してそれぞれのサイトに振り分けて利用することです。

 上記の例に習いwww.sample.conとvirt.sample.conを稼動させて見ましょう!

 DNSサーバーを設定する

 ネームベースのバーチャルホストを実現するには、まず、DNSサーバーを設定する必要があります。(ローカルネットワークで利用する場合)Lesson4で行った例を元に、www.sample.conのゾーンファイルを編集して再起動させます。

 設定例

「 sample.con.zone 」 下記のように設定して下さい。
$ORIGIN sample.con.
$TTL 86400
@           1D  IN   SOA    sv1.sample.con  taro.namae.jp. (
                          2003060101
                          3H
                          15M
                          1W
                          1D )
sample.con.     1D  IN  NS     sv1.sample.con.
sv1          1D  IN  A      192.168.0.100
www          1D  IN  A      192.168.0.100
virt          1D  IN  A      192.168.0.100
「 httpd.conf 」 下記のように設定して下さい。(下のほうです)
### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost 192.168.0.100

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost 192.168.0.100:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/turbo
ServerName www.sample.con

ScriptAlias /cgi-bin/ "/home/turbo/cgi-bin/"
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

<VirtualHost 192.168.0.100:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/virt
ServerName virt.sample.con

ScriptAlias /cgi-bin/ "/home/virt/cgi-bin/"
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

注1:設定し終わったら、virtというアカウントを作ってください。アパッチを再起動するとエラーになりますので。

注2:各ホームディレクトリーに/cgi-binのデレクトリーも作成してください。尚、作成する時はrootでは無く、各ユーザーで作成してください。

 設定が終わったらnamed及びhttpdを再起動しましょう。

 ScriptAliasについて

 CGIのファイルを置く場所はデフォルトで ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" に設定されています。
たとえば、CGIをhiml上に書く場合、<IMG src="/cgi-bin/cout.cgi">と記入し、cunt.cgiは/var/www/cgi-bin/に置かなくてはなりません。バーチャルホストを利用しない場合はこれでも良いのですが、サイトごとcgiファイルの置く場所を変える必要があります。そこでScriptAliasを利用しそれぞれのバーチャルホストの設定の所に記述します。(緑色で表示)そうすれば各サイトごとに独立して利用できるようになります。ただしcgiを一般のディレクトリーに置く場合アクセス制御や他の設定をしなくては動きませんので/cgi-bin/というディレクトリーにcgiファイルを入れて利用してください。

cgiファイルの実行は、サーバーに負担が掛かります、またセキュリティーを厳しくしないとファイルの中を見られてしまいます。そこで/cgi-bin/と言うCGI専用ディレクトリーを使って利用します。このディレクトリーは、ファイルの拡張子などにとらわれず、全てCGIファイルとして認識しますので、CGIファイル以外は全てエラー処理されます。このディレクトリーは、一般のディレクトリーとは違って、特別な働きをしています。このあとでアクセス制御の説明を行いますが、このディレクトリーは該当しませんので違いをしっかり理解してください。

 アクセス制御 .htaccess 
アクセス制御とは、任意のディレクトリーへのアクセスを制御することで、AccessFileNameディレクテブで設定したり、<Directory >ディレクティブを利用し行います。制御できる内容は、特定のIPアドレスやドメインからのアクセスを禁止したり、逆に特定のIPアドレスのみ許可したり、CGIプログラムの実行を許可・禁止を行ったり、と様々に設定することが出来ます。細かい設定は、他の技術書を利用してください。ここでは主に利用する設定についてLessonを行うことに致します。

 グローバルエリアでの設定

 全てのサービスをグローバルエリアで禁止し、特定のディレクトリーのみで特定のサービスのみを許可する設定をアクセスファイルを用いて設定する方法。

「 httpd.conf 」 の設定です。 意味
### Section 2: 'Main' server configuration において
<Directory />
Options None
AllowOverride None
</Directory>

<Directory "/home/*">
AllowOverride All
</Directory>

ルートディレクトリーにおいて全てのオプションを無効にし、アクセス制御ファイルも無効にします。

ホームディレクトリー以降において、アクセス制御ファイルをて有効にします。
この部分が重要
AccessFileName .htaccess アクセスファイルを .htaccessのファイル名で利用する。(デフォルト)
AddHandler cgi-script .cgi .pl CGIを一般のディレクトリーで有効にする場合設定ファイルがCGIであることをapacheに通知する。

アクセスファイル .htaccessの記述

アクセスファイル .htaccessを編集します。このファイルは、ディレクトリー単位でサーバーの機能の利用可否をhttp.confファイルを編集しなくても利用することが出来る便利なファイルで、ファイル名の先頭が"."ドットで始まっている為表示されません。windowsのテキストエディターで作成する場合は、あとでリネームしてください。

記述例

「 .htaccess 」 の設定です。 意味
Options Indexes ディレクトリーを表示させる場合
Options ExecCGI CGIの実行を許可する
Options All MultiViewsを除き、全てのオプションが使用可能

 AllowディレクティブとDenyディレクティブによるアクセス制限をホストやドメインで指定をします。以下設定例は、sample.conのドメインのホスト及び192.168.0.10以外はアクセスできない設定です。

「 .htaccess 」 の設定です。
Order Deny,Allow
Deny from all
Allow from sample.con 192.168.0.10

まとめ

ディレクトリーを表示させたい場合は、Options Indexesと記述するか、Options Allと記述する。
  このディレクトリーを表示させたいという意味は、こういうことです。ただしindex.htmlがあると表示されません。

CGIを利用したい場合
 1.ScriptAliasを利用する場合は特に関係無いので指定したディレクトリを利用する。
 2.他の一般のディレクトリーを利用する場合は、Options ExecCGIと記述するかOptions Allと記述する。

それらを記述した 「 .htaccess 」ファイルを利用したいディレクトリーに保存する。

最後に、.htaccessファイルを入れたディレクトリーにアクセスして確かめてください。

 個 人 認 証 
ここで言う個人認証とは、ユーザーidとパスワードで認証されたユーザーのみがアクセスできるようにする仕組みのことです。正確にはBasic認証を利用します。どうゆうことかと言うとここをクリックしてください。ユーザーIDとパスワードの要求があります。ユーザーIDには watashiwa を入力しパスワードには daredesuka を入力して見て下さい。すると中のファイルが表示されます。この時、indexesオプションを有効にしておくとディレクトリーの内部が表示されます。

  .htaccess の作成

 まず、隠したいディレクトリーを作成します。今回は、turboの下にsecretと言うディレクトリーを作ります。(ここから先は全てturboユーザーで作成してください。)属性は755

パスワードを保存するディレクトリーを作成します。今回は、turboの下にpassと言うディレクトリーを作ります。実際にパスワードが格納されるファイル名を .htpasswd とします。

.htaccessファイルを作ります。

.htaccess
# パスワード認証
#パスワードのある場所
AuthUserFile /home/turbo/pass/.htpasswd
#ダイアログボックスに表示メッセージ
AuthName "ユーザー名とパスワードを入力しください"
#認証タイプ
AuthType Basic
#グループ認証 なし
AuthGroupFile /dev/nill
#アクセス権の許可 認証成功ユーザーに許可
require valid-user

#はコメントを意味します。

それを /turbo/secret に保存してください。

パスワードファイルを新しく作ります。以下要領です。
  ユーザーIDを user1 パスワードを user1 として作成する場合の例

2行目でパスワードを入力、3行目で同じパスワードを入力、4行目は、user1が出来たメッセージ

次に二人目を作成する場合。ユーザーIDをuser2 パスワードを user2 とした場合の例

二人めからは、-c オプションを付けないことに注意してください。

以上の方法で3人4人と作成してください。

 最後にindex.htmlファイルを作成し、/turbo/secret に保存してください。

 それでは、http://sample.con/secret/index.html にアクセスにて見ましょう。

 SSIによる動的コンテンツの利用方 

 SSIによる動的コンテンツの利用方

 httpd.confの設定方法

#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)

#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml .html
上記のように#を外し、.htmlを追加する

 .htaccessファイルを作る

Options Includes
を記入し、動作させたいディレクトリーに置くただしLessn7で学習した内容が必要です。

後は、HTML文にSSIを記述すればOK
ただし、サーバーに負荷がかかるので注意!

以上でこのレッスンは終了です。色々試して見て下さい。さらにグループ認証やunixアカウントでの認証方法等ありますので別途技術書等参考に学習してください。今後さらに応用編としてログファイルやWebalizerのインストール方法など紹介したいと思います。Lesson13で公開中
本サイト利用者数は名です。本日は名、 昨日は名の受講ありがとうございます.
TOPページへ  Lesson6  メールサーバーを立ち上げよう  Lesson8  バージョンアップをしよう 
Since 2003/2/8
Copyright(C) 2003 Parterre.homelinux.net All Rights Reserved.