宮島弥山の山頂遊歩道を行く |
さて,前回はApache2のインストールから起動方法について学習しました。今回は,ドメインに対応する仮想ホストの設定方法について学習します。
それでは,早速,始めます。
仮想(Virtual)ホストの設定
Webサーバを構築すると,1つのサーバに対して複数のドメインを利用したくなる時があります。このような時,ドメインごとに仮想ホストをApache2に設定することが出来ます。
通常は,「/etc/apache2/sites-available」のフォルダの下にある「000-default.conf」と「default-ssl.conf」の定義ファイルを利用して必要なドメインを定義すればいいのです。
しかし,それでは複数のドメインに対応するのは難しいため,ドメイン毎に「/var/www」フォルダの下にドキュメントルートを作って,それぞれのドメインに対応する仮想ホストを,「/etc/apache2/sites-available」のフォルダの下に定義していきます。
まず,「/var/www」フォルダの下にドメイン名を使ってドキュメントルートを作ります。なお,デフォルトである「/var/www/html」は,クライアントの要求が一致しないときの表示するディレクトリとして残しておきます。
例えば,domain_nameというドメインのディレクトリを次のように作成します。
コード
sudo mkdir /var/www/domain_name
次に、root権限でディレクトリの所有権を割り当てます。
コード
sudo chown -R root:root /var/www/domain_name
また,読み書きの権限を与えます。
コード
sudo chmod 0655 /var/www/domain_name
Apache2は,基本的なソフトであるため,root権限で構築します。
コード
sudo vim /var/www/domain_name/index.html
内部には次のようなHTML文を追加します。
コード
<html>
<head>
<title>Welcome to domain_name!</title>
</head>
<body>
<h1 style="text-align:center"> domain_name virtual host is working!</h1>
</body>
</html>
これで,domain_nameというドメインが呼ばれたときに,ブラウザに表示するHTMLが出来ました。Apache2がこのコンテンツを提供するには、これに対応する仮想ホストを定義する必要があります。そのために「/etc/apache2/sites-available/domain_name.conf」という新しい定義ファイルを作成します。
コード
sudo vim /etc/apache2/sites-available/domain_name.conf
コード
<VirtualHost *:80>
ServerName domain_name
ServerAlias www.domain_name
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain_name
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
完了したら、ファイルを保存して閉じます。
SSLにも対応した「/etc/apache2/sites-available/domain_name-ssl.conf」という新しい定義ファイルも作成します。
コード
sudo vim /etc/apache2/sites-available/domain_name-ssl.conf
コード
sudo a2enmod rewrite
コード
sudo a2ensite
/etc/apache2/sites-available/domain_name.conf
コード
sudo a2ensite /etc/apache2/sites-available/domain_name-ssl.conf
続いて「000-default.conf」と「default-ssl.conf」で定義されているデフォルトファイルを無効化します。
コード
sudo a2dissite
/etc/apache2/sites-available/000-default.conf
コード
sudo a2dissite
/etc/apache2/sites-available/default-ssl.conf
最後に設定エラーがないか確認します。
コード
sudo apache2ctl -t
エラーが無い場合は,次のようにOutPutされます。
Syntax OK
コード
sudo systemctl restart apache2
Apache2がドメインに対して正常に動いているかは,URL「http://domain_name」をブラウザからアクセスして下さい。
先ほど指定した「/var/www/domain_name/index.html」の内容が,ブラウザに表示されればOKです。
domain_name virtual host is working! |
まとめ
Apache2の仮想ホストの設定について説明してきましたが,Apache2には,これ以外にもいろいろな定義ファイルがあり,使い方に独特なところがあります。参考に各ファイルの内容を説明しておきます。
ドキュメント
プロファイル | 内 容 | |
/var/www/html | Apacheのデフォルトでは,コンテンツは/var/www/htmlディレクトリから提供される。これは、Apache設定ファイルを変更することで変更できる。 |
サーバ設定
プロファイル | 内 容 | |
/etc/apache2 | Apacheの設定ディレクトリ。すべての設定ファイルがこの下にある。 | |
/etc/apache2/apache2.conf | Apacheの設定ファイル。これを変更して、Apacheのグローバル設定を変更する。このファイルは、他のファイルを設定ディレクトリにロードする。 | |
/etc/apache2/ports.conf | Apacheがリッスンするポートを指定するファイル。デフォルトはポート80をリッスンし、SSL機能を提供するモジュールが有効であれば、ポート443もリッスンする. | |
/etc/apache2/sites-available/ | サイト内の仮想ホストを保存するディレクトリ。Apacheは、sites-enabledディレクトリにリンクされない限り、このディレクトリにある設定ファイルを使用しない。通常、すべてのサーバーブロック設定はこのディレクトリで行われ、他のディレクトリにa2ensiteコマンドでリンクすることで有効になる。 | |
/etc/apache2/sites-enabled/ | 有効化されたサイト内の仮想ホストが保存されているディレクトリ。通常、これらはsites-availableディレクトリにある設定ファイルにa2ensiteをリンクすることで作成される。Apacheは、このディレクトリの設定ファイルとリンクを読み込み、完全な設定をコンパイルするために起動またはリロードする。 | |
/etc/apache2/conf-abvailable/ /etc/apache2/conf-enabled/ |
これらのディレクトリは、sites-availableディレクトリ、sites-enabledディレクトリと同様のリレーションシップを持っているが、仮想ホストに属さない設定ファイル類の保存に使用する。conf-availableディレクトリ内のファイルは、a2enconfコマンドで有効に、a2disconfコマンドで無効にできる。 | |
/etc/apache2/mods-available/ /etc/apache2/mods-enabled/ |
これらのディレクトリにはそれぞれ、使用可能なモジュール、有効になったモジュールが含まれる。拡張子が.loadのファイルには特定のモジュールをロードするフラグメントが、拡張子が.confのファイルにはそれらのモジュールの設定が含まれる。モジュールは、a2enmod/a2dismodコマンドを使用して、有効/無効にできる。 |
プロファイル | 内 容 | |
/var/log/apache2/access.log | デフォルトでは、Webサーバへのリクエストはすべて、Apacheで特に設定されていない限り、このログファイルに記録される。 | |
/var/log/apache2/error.log | デフォルトでは、すべてのエラーはこのファイルに記録される。Apache設定のLogLevelディレクティブは、エラーログに記録されるレベルを指定する。 |
これで,Apache2の基本的な設定は終わりです。
しかし,最近は暗号化通信が主流になっていますので,次回はフリー版のSSL設定方法について記述して行きます。
(注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。
0 件のコメント:
コメントを投稿