マソム自宅サーバ構築の記録

  • Apache2.2でのバーチャルホスティング
  • 作成日:08/02/26    更新日:09/08/07

前置き

Fedora 7 にApache2.2をインストールしました。 そこにバーチャルホストを設定します。

準備

DNSサーバのゾーンファイルにAレコードを追加します。 バーチャルホストのホスト名となります。
なお、私はWAN側とLAN側それぞれのゾーンファイルを使っているので、両方に追加しました。
# vi /var/named/chroot/var/named/mathomfactory.com.db
    ・・・省略・・・
            2008022601    ; serial
    ・・・省略・・・
ホスト名        IN    A    xxx.xxx.xxx.xxx
BINDの設定ファイルとゾーンファイルを再読込みします。
# /usr/sbin/rndc reload

ユーザの作成

バーチャルホストのユーザを作成しておきます。ログインシェルは無しにします。
# /usr/sbin/useradd -s /sbin/nologin ユーザ名
# /usr/bin/passwd ユーザ名
Changing password for user ユーザ名.
新しいUNIX パスワード:パスワード
新しいUNIX パスワードを再入力してください:パスワード
passwd: all authentication tokens updated successfully.
ホームディレクトリのパーミッションを 711 にしておきます。
# chmod 711 /home/ユーザ名
バーチャルホストのドキュメントルートになるディレクトリも作成しておきます。
# mkdir /home/ユーザ名/htdocs

設定ファイルの変更

次に 設定ファイルhttpd.confを編集します。
# vi /usr/local/apache2/conf/httpd.conf
バーチャルホストの設定ファイルを読み込むようにコメントを外します。
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-vhosts.conf
httpd.confを保存します。

httpd-vhosts.conf設定ファイルを編集します。
まず、httpd-vhosts.confに載っている記述例はコメント化します。
次に、<Directory>ディレクティブを追加して、バーチャルホストのドキュメントルートルートとなるディレクトリの設定をします。
   AllowOverride:.htaccess での設定を許可するディレクティブ群のキーワードを指定します。
   FileInfo:ドキュメントタイプを制御
   AuthConfig:認証
   Limit :アクセス制御
   ディレクトリインデックス(Indexes)は許可しませんので設定しません。
   Options:ディレクトリに対して使用可能な機能を設定します。
   SymLinksIfOwnerMatch: 所有ユーザ IDが同じ時のみ、シンボリックリンクをたどれるようにします。
   httpd.confの<Directory / >でデフォルトをdenyにしていますので、allowの設定もします。
最後に、記述例を参考に<VirtualHost>でバーチャルホストの設定をします。ログを分けたければ、ErrorLogとCustomLogも指定します。
なお、バーチャルホストを使う時は、全てがバーチャルホストになります。httpd.confで指定したドキュメントルートにもバーチャルホストの設定が必要になります。
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
    ・・・省略・・・
##<VirtualHost *:80>
##    ServerAdmin webmaster@dummy-host.example.com
##    DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
##    ServerName dummy-host.example.com
##    ServerAlias www.dummy-host.example.com
##    ErrorLog "logs/dummy-host.example.com-error_log"
##    CustomLog "logs/dummy-host.example.com-access_log" common
##</VirtualHost>

##<VirtualHost *:80>
##    ServerAdmin webmaster@dummy-host2.example.com

##    DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
##
    ServerName dummy-host2.example.com
##    ErrorLog "logs/dummy-host2.example.com-error_log"
##    CustomLog "logs/dummy-host2.example.com-access_log" common
##</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "ドキュメントルートのディレクトリパス"
    ServerName www.mathomfactory.com
</VirtualHost>

<Directory "バーチャルホストのドキュメントルートのディレクトリパス">
    AllowOverride FileInfo AuthConfig Limit
    Options SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerAdmin webmaster@ホスト名.mathomfactory.com
    DocumentRoot "バーチャルホストのドキュメントルートのディレクトリパス"
    ServerName ホスト名.mathomfactory.com
    ErrorLog logs/エラーログファイル名
    CustomLog logs/アクセスログファイル名
</VirtualHost>

Apacheの再起動

Apacheを再起動します。
# /usr/local/apache2/bin/apachectl restart
無事LAN内のWindowsマシンのブラウザからバーチャルホストのホームページを見ることが出来ました。

紆余曲折Tips