Debian 8でApache仮想ホストをセットアップする方法

前書き

Apache Webサーバーは、インターネット上でWebコンテンツを提供する最も一般的な方法です。 インターネット上のすべてのアクティブなWebサイトの半分以上を占め、非常に強力で柔軟です。

Apacheは、その機能とコンポーネントを個別にカスタマイズできる個別のユニットに分割します。 個々のサイトまたはドメインを記述する基本単位は、仮想ホストと呼ばれます。

仮想ホストを使用すると、一致メカニズムを使用して、1つのサーバーを使用して、単一のインターフェースまたはIPから離れた複数のドメインまたはサイトをホストできます。 ドメインのリクエストを設定して、そのサイトの情報を保持している特定のディレクトリに訪問者を誘導します。 つまり、単一のサーバーで複数のWebサイトをホストできます。 このスキームは、サーバーが負荷を処理できる限り、ソフトウェアの制限なしに拡張できます。

このチュートリアルでは、Debian 8サーバー上に2つのApache仮想ホストを設定し、訪問者が訪問するドメインに基づいて異なるコンテンツを提供します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • sudo特権を持つ非rootユーザーを持つDebian 8サーバー。 Debian 8での初期サーバー設定ガイドでこれらの権限を持つユーザーを設定できます。

  • Linuxのインストール方法に示すように、Apacheがインストールおよび設定されています、Apache、MySQL、PHP(LAMP)Debian on Debian 8]。

このガイドでは、「+ example.com 」と「 test.com +」の仮想ホストを作成しますが、独自のドメインまたは値を使用して、それに沿って置き換えることができます。 サーバーでドメイン名を指定するには、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [ホストのセットアップ方法]に従ってください。 DigitalOceanの名前]。

使用できるドメインがない場合は、 `+ example.com `および ` test.com +`を使用し、このチュートリアルのステップ5に従ってローカルホストファイルを設定して、それらのドメインをサーバーのIPアドレスにマッピングできます。 これにより、ローカルコンピューターから構成をテストできます。

手順1-ディレクトリ構造の作成

最初に行うステップは、訪問者に提供するサイトデータを保持するディレクトリ構造を作成することです。

document root(Apacheが提供するコンテンツを見つけるために調べる最上位ディレクトリ)は、 `+ / var / www +`ディレクトリの下の個々のディレクトリに設定されます。 設定する仮想ホストごとにディレクトリを作成します。

これらの各ディレクトリ内に、提供するWebページを保持する「+ public_html 」というフォルダーを作成します。 これにより、将来、より複雑なWebアプリケーションを展開する方法に柔軟性が少し追加されます。 ` public_html +`フォルダーは提供したいWebコンテンツを保持し、親フォルダーはWebコンテンツをサポートするスクリプトまたはアプリケーションコードを保持できます。

次のコマンドを使用してディレクトリを作成します。

sudo mkdir -p /var/www//public_html
sudo mkdir -p /var/www//public_html

`+ sudo +`でディレクトリを作成したため、それらはルートユーザーが所有しています。 通常のユーザーがWebディレクトリ内のファイルを変更できるようにするには、次のように所有権を変更します。

sudo chown -R $USER:$USER /var/www//public_html
sudo chown -R $USER:$USER /var/www//public_html

`+ $ USER `変数は、 ` ENTER `を押したときに現在ログインしているユーザーの値を使用します。 これを行うことで、通常のユーザーはコンテンツを保存する ` public_html +`サブディレクトリを所有するようになりました。

また、ページを正しく提供できるように、一般的なWebディレクトリとそれに含まれるすべてのファイルとフォルダへの読み取りアクセスが許可されるように、アクセス許可を少し変更する必要があります。 次のコマンドを実行して、 `+ / var / www +`フォルダーとその子のパーミッションを変更します:

sudo chmod -R 755 /var/www

Linuxで権限を管理するのが初めての場合は、https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions [このチュートリアル]をご覧ください。

これで、Webサーバーにはコンテンツを提供するために必要な権限が与えられ、ユーザーは必要なフォルダー内にコンテンツを作成できるようになります。 各サイトのHTMLファイルを作成しましょう。

ディレクトリ構造が整っています。 配信するコンテンツを作成しましょう。

ステップ2-各仮想ホストのデフォルトページの作成

各サイトにシンプルな「+ index.html」ページを作成しましょう。 これにより、後で仮想ホストが適切に設定されるようになります。

「+ example.com 」のページから始めましょう。 次のコマンドで新しい ` index.html +`ファイルを編集します:

nano /var/www//public_html/index.html

このファイルで、訪問者が `+ example.com +`のホームページを見ていることを示す簡単なHTMLドキュメントを作成します。

/var/www/example.com/public_html/index.html

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

完了したら、ファイルを保存して閉じます。

このファイルを `+ test.com +`サイトにコピーしてください:

cp /var/www//public_html/index.html /var/www//public_html/index.html

次に、エディターでファイルを開きます。

nano /var/www//public_html/index.html

`+ example.com `の代わりに ` test.com +`を参照するようにファイルを変更します:

/var/www/test.com/public_html/index.html

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body> <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

このファイルを保存して閉じます。 これで、仮想ホスト構成のテストに必要なページが用意されました。 次に、仮想ホストを構成しましょう。

手順3-新しい仮想ホストファイルの作成

仮想ホストファイルは、仮想ホストの実際の構成を指定し、Apache Webサーバーがさまざまなドメインリクエストに応答する方法を指定します。

Apacheには、ジャンプポイントとして使用できる「+ 000-default.conf +」というデフォルトの仮想ホストファイルが付属しています。 最初のドメインのこのファイルをコピーします。

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/.conf

エディターで新しいファイルを開きます。

sudo nano /etc/apache2/sites-available/.conf

ファイルは次の例のようになりますが、いくつかコメントが追加されています。

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>

       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

この仮想ホストは、デフォルトのHTTPポートであるポート「80」で行われた_any_リクエストと一致します。 この構成にいくつかの変更を加え、いくつかの新しいディレクティブを追加しましょう。

まず、 `+ ServerAdmin +`ディレクティブを、サイト管理者がメールを受信できるメールに変更します。

/etc/apache2/sites-available/example.com.conf

ServerAdmin

次に、2つの新しいディレクティブを追加する必要があります。 最初の `+ ServerName `は、この仮想ホスト定義のベースドメインを確立します。 2番目は「 ServerAlias 」と呼ばれ、ベース名であるかのように一致する追加の名前を定義します。 これは、定義した追加のホストを照合するのに便利です。したがって、両方のホストがこのサーバーのIPアドレスを指している場合、 ` example.com `と ` www.example.com +`の両方が機能します。

これらの2つのディレクティブを設定ファイルの `+ ServerAdmin +`行の直後に追加します。

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>

       ServerAdmin webmaster@localhost


       DocumentRoot /var/www/html
...

次に、このホスト用に作成したディレクトリを指すように `+ DocumentRoot +`ディレクティブを変更して、このドメインのドキュメントルートの場所を変更します。

DocumentRoot /var/www//public_html

これらの変更を行うと、ファイルは次のようになります。

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
       ServerAdmin


       DocumentRoot /var/www//public_html
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ファイルを保存して閉じます。

次に、このファイルのコピーを作成して、2番目の構成ファイルを作成します。

sudo cp /etc/apache2/sites-available/.conf /etc/apache2/sites-available/.conf

エディターで新しいファイルを開きます。

sudo nano /etc/apache2/sites-available/.conf

次に、関連する設定を変更して、2番目のドメインを参照します。 終了すると、ファイルは次のようになります。

/etc/apache2/sites-available/test.com.conf

<VirtualHost *:80>
   ServerAdmin
   ServerName
   ServerAlias
   DocumentRoot /var/www//public_html
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

ファイルを保存して閉じます。

仮想ホストファイルを作成したので、それらを有効にすることができます。

手順4-新しい仮想ホストファイルの有効化

フォルダーと仮想ホスト構成ファイルを作成しましたが、Apacheはそれらをアクティブにするまでそれらを使用しません。 `+ a2ensite +`ツールを使用して、各サイトを有効にできます。

最初のサイトをアクティブにします:

sudo a2ensite .conf

ファイルに構文エラーやタイプミスがない場合、次の出力が表示されます。

OutputEnabling site example.com.
To activate the new configuration, you need to run:
 service apache2 reload

変更を有効にするには、Apacheをリロードする必要があります。 ただし、実行する前に、他のサイトを有効にしてください。

sudo a2ensite .conf

サイトが有効になったことを示す同様のメッセージが表示されます。

OutputEnabling site test.com.
To activate the new configuration, you need to run:
 service apache2 reload

次に、 `+ a2dissite `コマンドを使用して、 ` 000-default.conf +`で定義されているデフォルトサイトを無効にします。

sudo a2dissite 000-default.conf

次に、Apacheを再起動します。

sudo systemctl restart apache2

これで、サイトが構成されました。 テストしてみましょう。 サーバーのIPアドレスを指すように設定された実際のドメインを使用している場合は、次の手順をスキップできます。 ただし、ドメインがまだ普及していない場合、またはテストしている場合は、ローカルコンピューターを使用してこの設定をテストする方法をお読みください。

手順5-ローカルホストファイルの設定(オプション)

この手順をテストするために所有する実際のドメイン名を使用しておらず、代わりにいくつかのサンプルドメインを使用している場合、少なくともローカルコンピューターの `+ hosts +`ファイルを一時的に変更することで、このプロセスの機能をテストできます。

これは、登録済みドメインを使用している場合にDNSシステムが行うように、設定したドメインへの要求をインターセプトし、VPSサーバーにポイントします。 ただし、これはコンピューターからのみ機能し、テスト目的でのみ役立ちます。

VPSサーバーではなく、ローカルコンピューターで次の手順を実行してください。 また、ローカルコンピューターの管理パスワードを知っているか、管理グループのメンバーである必要があります。

MacまたはLinuxコンピューターを使用している場合は、次を入力して管理者権限でローカルファイルを編集します。

sudo nano /etc/hosts

Windowsを使用している場合は、管理者権限でコマンドプロンプトを開き、次を入力します。

notepad %windir%\system32\drivers\etc\hosts

ファイルを開いたら、次の例に示すように、サーバーのパブリックIPアドレスを各ドメイン名にマップする行を追加します。

/ etc / hosts

127.0.0.1   localhost
...

これにより、コンピューター上の「+ example.com 」および「 test.com 」に対するすべてのリクエストが送信され、「 111.111.111.111+」のサーバーに送信されます。

ファイルを保存して閉じます。 これで、セットアップをテストできます。 動作していると確信したら、ファイルから2行を削除します。

ステップ6-結果のテスト

仮想ホストが構成されたので、Webブラウザーで構成したドメインに移動して、セットアップを簡単にテストできます。 `+ http:// example.com +`の最初のサイトにアクセスすると、次のようなページが表示されます。

image:https://assets.digitalocean.com/articles/apache_vhosts_debian8/hPVmDq1.png [Apache example.com result]

同様に、 `+ http:// test.com +`で2番目のホストにアクセスできる場合、2番目のサイト用に作成したファイルが表示されます。

image:https://assets.digitalocean.com/articles/apache_vhosts_debian8/Mh9EbW3.png [Apache test.com result]

これらのサイトが両方ともうまく機能していれば、同じサーバー上で2つの仮想ホストを正常に構成できています。

結論

これで、2つの別個のドメイン名を処理する単一のサーバーができました。 次の手順に従って仮想ホストを追加すると、このプロセスを拡張できます。

Apacheが処理できるドメイン名の数にソフトウェアの制限はないので、サーバーが処理できる数だけ自由に作成してください。

Apacheを使用して安全なコンテンツを提供するには、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8[How To Secure DebianでLet’s Encryptを使用したApache 8]。 Webアプリケーションの前でApacheを使用するには、https://www.digitalocean.com/community/tutorials/how-to-use-apache-as-a-reverse-proxy-with-mod_proxy-on-debian-8に従ってください[Debian 8でmod_proxyを使用してApacheをリバースプロキシとして使用する方法]。