序章

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

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

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

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

前提条件

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

  • sudo権限を持つroot以外のユーザーを持つDebian8サーバー。 これらの権限を持つユーザーは、Debian8ガイドの初期サーバーセットアップでセットアップできます。
  • Debian 8 にLinux、Apache、MySQL、PHP(LAMP)スタックをインストールする方法に示されているように、Apacheがインストールおよび構成されています。

このガイドでは、example.comおよびtest.comの仮想ホストを作成しますが、フォローしながら独自のドメインまたは値に置き換えることができます。 ドメイン名をサーバーに向けるには、チュートリアルDigitalOceanを使用してホスト名を設定する方法に従ってください。

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

ステップ1—ディレクトリ構造を作成する

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

Apacheが提供するコンテンツを見つけるために調べる最上位ディレクトリであるドキュメントルートは、/var/wwwディレクトリの下の個々のディレクトリに設定されます。 構成する仮想ホストごとにディレクトリを作成します。

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

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

  1. sudo mkdir -p /var/www/example.com/public_html
  2. sudo mkdir -p /var/www/test.com/public_html

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

  1. sudo chown -R $USER:$USER /var/www/example.com/public_html
  2. sudo chown -R $USER:$USER /var/www/test.com/public_html

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

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

  1. sudo chmod -R 755 /var/www

Linuxで権限を管理するのが初めての場合は、このチュートリアルを参照してください。

これで、Webサーバーにコンテンツを提供するために必要なアクセス許可が付与され、ユーザーは必要なフォルダー内にコンテンツを作成できるようになります。 サイトごとにHTMLファイルを作成してみましょう。

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

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

サイトごとに簡単なindex.htmlページを作成しましょう。 これは、仮想ホストが後で適切に構成されていることを確認するのに役立ちます。

example.comのページから始めましょう。 次のコマンドを使用して、新しいindex.htmlファイルを編集します。

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

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

/var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

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

次に、このファイルをtest.comサイトにコピーします。

  1. cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

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

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

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

/var/www/test.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

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

ステップ3—新しい仮想ホストファイルを作成する

仮想ホストファイルは、仮想ホストの実際の構成を指定し、ApacheWebサーバーがさまざまなドメイン要求にどのように応答するかを指示します。

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

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

:Debian 8のデフォルトのApache構成では、各仮想ホストファイルが.confで終わる必要があります。

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

  1. sudo nano /etc/apache2/sites-available/example.com.conf

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

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>

        ServerAdmin [email protected]
        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 [email protected]

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

ServerAdmin行の直後に、次の2つのディレクティブを構成ファイルに追加します。

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>

        ServerAdmin [email protected]
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html
...

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

DocumentRoot /var/www/example.com/public_html

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

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

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

  1. sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

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

  1. sudo nano /etc/apache2/sites-available/test.com.conf

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

/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

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

ステップ4—新しい仮想ホストファイルを有効にする

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

最初のサイトをアクティブ化します。

  1. sudo a2ensite example.com.conf

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

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

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

  1. sudo a2ensite test.com.conf

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

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

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

  1. sudo a2dissite 000-default.conf

ここで、Apacheを再起動します。

  1. sudo systemctl restart apache2

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

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

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

これにより、登録済みドメインを使用している場合にDNSシステムが行うのと同じように、構成したドメインに対するすべての要求がインターセプトされ、それらがVPSサーバーを指すようになります。 ただし、これはコンピュータからのみ機能し、テスト目的でのみ役立ちます。

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

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

  1. sudo nano /etc/hosts

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

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

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

/ etc / hosts
127.0.0.1   localhost
...

111.111.111.111 example.com
111.111.111.111 test.com

これにより、コンピューター上のexample.comおよびtest.comの要求がすべて送信され、サーバーの111.111.111.111に送信されます。

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

ステップ6—結果をテストする

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

Apache example.com result

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

Apache test.com result

これらのサイトの両方が正常に機能する場合は、同じサーバー上に2つの仮想ホストを正常に構成しています。

:手順5に示すように、ホームコンピューターのhostsファイルを調整した場合は、構成が機能することを確認したので、追加した行を削除することをお勧めします。 これにより、hostsファイルが実際には必要のないエントリでいっぱいになるのを防ぐことができます。

結論

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

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

Apacheを使用して安全なコンテンツを提供するには、チュートリアル Debian8でLet’sEncryptを使用してApacheを保護する方法に従ってください。 Webアプリケーションの前でApacheを使用するには、 Debian8でmod_proxyを使用してApacheをリバースプロキシとして使用する方法に従ってください。