03-04 Apacheのバーチャルホスト設定

今回の講座は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化の設定をしていきます。

関連記事

コメント

この記事へのコメントはありません。

おすすめ記事

  1. 【多段SSH】公開鍵認証で中継サーバー経由のログインが簡単!

  2. インターネットに繋いだサーバーで最初にやらなければならない設定

  3. Swapアウトしているプロセスを特定する方法

  4. Linuxを極めるならコマンドよりも〇〇が先だ!!

  5. お名前ドットコムのDNS設定方法