序章

Apache Webサーバーは、インターネット上でWebサイトを提供するための一般的な方法です。 2019年の時点で、29 % o fのすべてのアクティブなWebサイトにサービスを提供すると推定されており、開発者に堅牢性と柔軟性を提供します。 管理者は、Apacheを使用して、マッチングシステムを使用して、単一のインターフェイスまたはIPから複数のドメインまたはサイトをホストするように1つのサーバーを設定できます。

Apacheを使用して構成された各ドメインまたは個々のサイト(「仮想ホスト」と呼ばれる)は、訪問者をそのサイトの情報を保持する特定のディレクトリに誘導します。 これは、同じサーバーが他のサイトにも責任があることを示すことなく行われます。 このスキームは、サーバーが負荷を処理できる限り、ソフトウェアの制限なしに拡張できます。 個々のサイトまたはドメインを記述する基本単位は、virtual hostと呼ばれます。

このガイドでは、Ubuntu18.04サーバーでApache仮想ホストを設定する方法について説明します。 このプロセスでは、要求しているドメインに応じて、さまざまな訪問者にさまざまなコンテンツを提供する方法を学習します。

前提条件

このチュートリアルを開始する前に、非rootユーザーを作成する必要があります。

これらの手順を実行するには、Apacheもインストールする必要があります。 まだ行っていない場合は、aptパッケージの方法でApacheをサーバーにインストールできます。

  1. sudo apt update
  2. sudo apt install apache2

より詳細な手順とファイアウォールのセットアップが必要な場合は、ガイド Ubuntu18.04にApacheWebサーバーをインストールする方法を参照してください。

このガイドの目的のために、この構成では、example.com用の仮想ホストとtest.com用の仮想ホストを作成します。 これらはガイド全体で参照されますが、フォローしながら独自のドメインまたは値に置き換える必要があります。

DigitalOceanを使用している場合は、製品ドキュメントドメインの追加方法に従って、ドメインの設定方法を学ぶことができます。 他のプロバイダーについては、関連する製品ドキュメントを参照してください。現時点でドメインが利用できない場合は、テスト値を使用できます。

テスト値を使用している場合は、後でローカルホストファイルを編集して構成をテストする方法を示します。 これにより、ドメイン名を介して他の訪問者がコンテンツを利用できない場合でも、自宅のコンピューターから構成を検証できます。

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

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

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

これらのディレクトリのそれぞれの中に、実際のファイルを保持するpublic_htmlフォルダを作成します。 これにより、ホスティングにある程度の柔軟性がもたらされます。

たとえば、私たちのサイトでは、次のようにディレクトリを作成します。 実際のドメインまたは代替値を使用している場合は、強調表示されたテキストをこれらと交換してください。

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

赤い部分は、VPSから提供するドメイン名を表しています。

ステップ2—権限を付与する

これでファイルのディレクトリ構造ができましたが、それらは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ディレクトリとそれに含まれるすべてのファイルとフォルダーへの読み取りアクセスが許可されるようにする必要があります。

  1. sudo chmod -R 755 /var/www

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

ステップ3—仮想ホストごとにデモページを作成する

これで、ディレクトリ構造が整いました。 提供するコンテンツを作成しましょう。

デモンストレーション用に、サイトごとにindex.htmlページを作成します。

example.comから始めましょう。 テキストエディタでindex.htmlファイルを開くことができます。この場合、nanoを使用します。

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

このファイル内に、次のように、接続先のサイトを示す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>

終了したら、ファイルを保存して閉じます(nanoでは、CTRL + XYENTERの順に押します)。

このファイルをコピーして、次のように入力することにより、2番目のサイトのベースとして使用できます。

  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
/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>

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

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

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

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

1つのドメインから始めて構成し、2番目のドメイン用にコピーしてから、さらにいくつかの調整が必要になります。 デフォルトのUbuntu構成では、各仮想ホストファイルが.confで終わる必要があります。

最初の仮想ホストファイルを作成する

最初のドメインのファイルをコピーすることから始めます。

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

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

  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ディレクティブを、サイト管理者が電子メールを受信できる電子メールに変更する必要があります。

ServerAdmin [email protected]

この後、2つのディレクティブを追加する必要があります。 1つ目は、ServerNameと呼ばれ、この仮想ホスト定義に一致する必要があるベースドメインを確立します。 これはおそらくあなたのドメインになります。 2番目はServerAliasと呼ばれ、ベース名であるかのように一致する必要がある追加の名前を定義します。 これは、wwwのように定義したホストを照合する場合に便利です。

ServerName example.com
ServerAlias www.example.com

仮想ホストファイル用に変更する必要がある他の唯一のことは、このドメインのドキュメントルートの場所です。 必要なディレクトリはすでに作成されているので、作成したディレクトリを反映するように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番目のドメイン用にカスタマイズする

最初の仮想ホストファイルが確立されたので、そのファイルをコピーして必要に応じて調整することで、2番目の仮想ホストファイルを作成できます。

それをコピーすることから始めます:

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

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

  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>

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

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

仮想ホストファイルを作成したので、それらを有効にする必要があります。 Apacheには、これを可能にするツールがいくつか含まれています。

a2ensiteツールを使用して、各サイトを有効にします。 このスクリプトの詳細については、a2ensiteのドキュメントを参照してください。

  1. sudo a2ensite example.com.conf
  2. sudo a2ensite test.com.conf

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

  1. sudo a2dissite 000-default.conf

終了したら、Apacheを再起動してこれらの変更を有効にし、systemctl statusを使用して再起動が成功したことを確認する必要があります。

  1. sudo systemctl restart apache2
  2. sudo systemctl status apache2

これで、サーバーが2つのWebサイトにサービスを提供するように設定されているはずです。

ステップ6—ローカルホストファイルを設定する(オプション)

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

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

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

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

  1. sudo nano /etc/hosts

Windowsマシンを使用している場合は、ここでhostsファイルを変更する手順を見つけることができます

追加する必要のある詳細は、サーバーのパブリックIPアドレスと、そのサーバーに到達するために使用するドメインです。

このガイドで使用されているドメインを使用し、サーバーIPをyour_server_IPテキストに置き換えると、ファイルは次のようになります。

/ etc / hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

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

これにより、コンピューター上のexample.comおよびtest.comの要求がすべて送信され、サーバーに送信されます。 これは、仮想ホストをテストするために実際にこれらのドメインの所有者でない場合に必要なものです。

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

仮想ホストを構成したので、Webブラウザーで構成したドメインに移動してセットアップをテストできます。

http://example.com

次のようなページが表示されます。

Apache virtual host example

2番目のページにアクセスして、2番目のサイト用に作成したファイルを確認することもできます。

http://test.com

Apache virtual host test

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

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

この長期的なアクセスが必要な場合は、必要なサイトごとにドメイン名を追加し、サーバーを指すように設定することを検討してください

結論

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

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