今回の講座はApacheのバーチャルホスト(VirtualHost)について学んでいきます。
一般的にはバーチャルドメインやマルチドメインと言われることもありますが、ここでWebサーバーの役割について復習してみましょう。
サーバー内の特定のディレクトリをブラウザなどで閲覧できるようにするがWebサーバーの役割。
一台のサーバーに複数のドメインを割り当てることもできます。
今あなたがログインしているサーバーはIPアドレスが1つ割り当てられています。
IPアドレスを現実世界に置き換えると住所、サーバーは建物。
バーチャルホストは複数の人が住むシェアハウスみたいなものと思ってもらえれば理解しやすいかもしれません。
それではバーチャルホストの設定をしていきましょう!
目次
動画講座 Apacheのバーチャルホスト設定
動画ではバーチャルホストの設定ファイルを準備してからユーザーの追加をしました。ここでは最初にユーザー追加等を行っていきます。
サーバーのホスト名の設定
本来はサーバーを構築する最初の段階で設定しておくべきなのですが、ホスト名を意識するようになった今だからこそサーバーのホスト名を設定してみましょう。
vi /etc/hostname
このファイルを su-campXXX.superusers.jp(XXXはあなたの番号)に書き換えます。
書き換えた内容が恒久的にホスト名として使われます。
以下のようにhostnameコマンドでもホスト名を変更することはできます。
hostname su-campXXX.superusers.jp
ただしシステムを再起動すれば、/etc/hostnameの内容にリセットされます。
現在のホスト名はhostnameコマンドで確認することもできます。
hostname
サーバーにログインしなおすとプロンプトが「root@133-130-90-146」から「root@su-camp032」のように変わります。
バーチャルホスト用のユーザー追加
ユーザーディレクトリの骨組み(skeleton)を設定するために、カレントディレクトリを/etc/skelに移します。
cd /etc/skel
Webページのコンテンツを格納するための雛形となるディレクトリを/etc/skelの中に作成します。
やっていることの意味が分からなくても今は大丈夫です。
mkdir -p httpd/html
mkdirにpオプションを付けることによって、指定した階層分のディレクトリを一気に作成することができます。
次にバーチャルホスト用のユーザーをuseraddコマンドで追加します。
useradd -s /sbin/nologin あなたの名字(ローマ字)
パスワード設定
ユーザーを追加した後にパスワードを設定します。
パスワードはmkpasswdで生成すると推測されにくいパスワードができましたね。
記憶にない方は下のリンクを参考にしてください。
passwdコマンドでパスワードを設定します。
passwd あなたの名字(ローマ字)
ドキュメントルートのパーミッション変更
ユーザーのホームディレクトリのパーミッションは700で設定されます。
しかし今回追加したユーザーのディレクトリはWebで公開するディレクトリを含むので、パーミッションが700だとApacheの権限ではアクセスすることができません。
追加したユーザーのホームディレクトリのパーミッションを755に変更します。
chmod 755 /home/あなたの名字(ローマ字)
ユーザーディレクトリの中を見ると、/etc/skelの中に作ったhttpdというディレクトリ、そしてその中にもhtmlというディレクトリが作成されていることが確認できます。
今回は、/home/あなたの名字/httpd/html をドキュメントルートとして設定します。
Webの公開用ディレクトリをドキュメントルートと言います。
index.htmlの作成
Webアクセスがあった時に表示させるindex.htmlファイルをviで新規作成(動画10分35秒)。
cd /home/あなたの名字/httpd/html
vi index.html
内容は何でもいいのですが、識別するために今回は「virtual host」と入力して保存。
chown あなたの名字:あなたの名字 index.html
ログディレクトリの作成
Webのアクセスログを書き出すためのディレクトリが存在していない場合、Apacheは起動することができません。
mkdir /var/log/httpd/su-campXXX.superusers.jp
バーチャルドメインを追加してApacheを再起動する際は、必ずログディレクトリが存在していることを確認しましょう。
一般的なバーチャルホストの設定ファイル
ソースからインストールしたApacheは、一般的にhttpd-vhosts.confがバーチャルホストの設定ファイルとして使われます。
httpd-vhosts.confの中身を見てください。
cat /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
と</VirtualHost>
の間に、応答させるサーバー名(ServerName)や公開するディレクトリ(DocumentRoot)の記述があるのが分かると思います。
視認性と可読性を意識した設定ファイル
Apacheはhttpd.confからIncludeで外部のファイルを読み込むことができる、また以下のように、
Include /etc/httpd/conf/vhosts/*.conf
どこどこのディレクトリの拡張子が.confのもの全てを読み込むという記述もできることから、これを利用しない手はありません。
バーチャルホストの設定例
最初にお送りしました登録書に、あなたのサーバーのホスト名が書かれていると思います。
sudo suでrootになって、以下のコマンドの「su-campXXX」の部分をあなたのホスト名に置き換えてタイプしてください。
以下の内容をコピーしてviで編集中のファイルに貼り付けてください。
<VirtualHost *:80>
DocumentRoot "/home/__USER_NAME__/httpd/html"
ServerName su-campXXX.__DOMAIN_NAME__:80
#ServerAlias __DOMAIN_NAME__
ServerAdmin webmaster@__DOMAIN_NAME__
ErrorLog "/var/log/httpd/su-campXXX.__DOMAIN_NAME__/error.log"
<IfModule mod_setenvif.c>
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(swf)|(css)|(js)|(ico)$" uniq-log
CustomLog /var/log/httpd/su-campXXX.__DOMAIN_NAME__/access.log combined env=!uniq-log
</IfModule>
# RewriteEngine On
# RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
<Directory /home/__USER_NAME__/httpd/html>
Options ExecCGI Includes FollowSymLinks
AllowOverride all
Require all granted
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>
su-campXXX
貼り付けた後に、su-campXXX をあなたのサーバーのホスト名に書き換えます(動画4分25秒)。
__USER_NAME__
__USER_NAME__は、あなたの名字(ローマ字)に置換してください。viのコマンドモードで、
:%s/__USER_NAME__/your_lastname/g
でエンターキーを押せば一括変換できます。
__DOMAIN_NAME__
同様に、__DOMAIN_NAME__もviで一括変換。
:%s/__DOMAIN_NAME__/superusers.jp/g
設定ファイルのパーミッション変更
動画でパーミッションを700にするように説明しておりましたが、設定ファイルに実行権限は必要ありませんので600に設定してください。
chmod 600 su-campXXX.superusers.jp.conf
この設定ファイルを置いただけではApacheはバーチャルドメインを認識してくれません。次に何をしなければならないか想像してみてください。
httpd.confにIncludeを追加
何をしなければならないのか、もうお分かりですよね(8分57秒)。
/etc/httpd/conf/vhosts の中の拡張子がconfのファイルを読み込むように設定しなければなりません。
実際には、/etc/httpd/conf/httpd.conf に
Include /etc/httpd/conf/vhosts/*.conf
を追記する必要があります。
設定の追記箇所
vi /etc/httpd/conf/httpd.conf
viのコマンドモードでhttpd.conf内の「httpd-vhosts.conf」を検索し、
その下の行に /etc/httpd/conf/vhosts の中のconf拡張子を読み込むように追記します。
Apacheの構文チェック
/etc/httpd/conf/vhosts/su-campXXX.superusers.jp.conf が
Includeされるようになった状態でSyntaxチェックを行います。
httpd -t
Syntax OK と表示されましたか?
httpd -S
とすると、設定したバーチャルドメインのポート番号とリストが表示されます。
Apacheの再起動
service httpd restart
Apacheの再起動をした後、プロセスの確認をしてブラウザで表示チェックを行ってください。
- ブラウザでアクセスした時に「virtual host 」と表示されましたか?
- 指定したaccess.logにログが書き込まれましたか?
上記2つのポイントは必ずクリアしてくださいね!
次の講座では、Webの常時SSL化の設定をしていきます。
コメント