マソム自宅サーバ構築の記録
- ■
-
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