2023年10月19日

Ubuntu20.04 Apache2(2)仮想ホストの設定方法


宮島弥山の山頂遊歩道を行く
宮島弥山の山頂遊歩道を行く


さて,前回は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権限で構築します。

続いて,お気に入りのエディタ(今回はVim)を使用して、domain_nameフォルダの下に
index.htmlページを作成します。

コード

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

ここでは,Vimエディターを使って作成しています。
内容は,以下のように、新しいディレクトリとドメイン名が繋がるように作成します。デフォルトである000-default.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>

DocumentRootに新しいディレクトリを記入します。ServerAdminはサイト管理者へのメールアドレスです。無い場合は修正しません。また、ServerNameは、この仮想ホスト定義に適合するベースドメインを設定します。ServerAliasは、別名がある場合に記入します。
完了したら、ファイルを保存して閉じます。

同様に,SSL用の定義をします。
SSLにも対応した「/etc/apache2/sites-available/domain_name-ssl.conf」という新しい定義ファイルも作成します。

コード

sudo vim /etc/apache2/sites-available/domain_name-ssl.conf

ここでは,Vimエディターを使って作成しています。
内容は,以下のように、新しいDocumentRootディレクトリとドメイン名が繋がるように作成します。デフォルトであるdefault-ssl.conf」をコピーして作成するのが簡単です。

【追加項目】
ServerName domain_name
ServerAlias www.domain_name
【修正項目】
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain_name

「domain_name.conf」と同様に,ServerName,ServerAliasを追加し,ServerAdminと
DocumentRootを修正します。

【注意点】
この定義ファイルは「mod_ssl.c」というSSL機能を提供するモジュールが使われており,これを有効にする必要があります。これを有効にする場合には,次のコマンドを入力します。(無効にする時は「a2dismod」を使います。)

コード

sudo a2enmod rewrite

これにより,Apache起動時に,modモジュールが取り込まれます。

次に,a2ensiteツールを使用して、「domain_name.conf」と「domain_name-ssl.conf」で定義したファイルを有効化します。

コード

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されます。

Output
Syntax OK

設定終了であれば,Apache2をリスタートします。

コード

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 件のコメント: