ウェブサイト検索

Linux での Apache 名前ベースおよび IP ベースの仮想ホストの作成


仮想ホスティングは、複数の Web サイトまたはドメインを 1 台のサーバーでホストする概念であり、ビジネスまたは組織のリソース オーバーヘッドとランニング コストを削減するために行われます。

Apache Web サーバーを使用すると、システム管理者が Web サイトごとに仮想ホストを簡単に構成できるため、複数のサイトのホスティングが簡素化されます。仮想ホスティングは、IP ベースまたは名前ベースのいずれかにすることができます。

このチュートリアルでは、FedoraCentOS StreamRocky Linux、< などの RHEL ベースのディストリビューションで仮想ホスティングを設定する方法を説明します。 Linux で IP ベースと名前ベースの両方の仮想ホストを使用するstrong>Alma Linux。

共有ウェブ ホスティング再販業者ウェブ ホスティングの概念は、主に Apache のこの機能に基づいています。

Linux における Apache 仮想ホスティングの種類

Apache では 2 種類の仮想ホスティングが利用できます。

名前ベースの仮想ホスティング

このタイプのホスティングでは、単一の IP アドレスだけを使用して、複数のドメインまたは Web サイトを単一のサーバー上でホストできます。簡単に言うと、すべてのドメインが単一の IP アドレスを共有します。これは、ドメイン名を IP アドレスにマップし、各ドメイン名に対して Apache 仮想ホストを構成するだけなので、構成が最も簡単な仮想ホスティング タイプです。

IPベースの仮想ホスティング

IP ベースの仮想ホスティングでは、各ドメインに一意の IP アドレスが割り当てられます。これらの IP アドレスは、複数の NIC カードまたは 1 つの NIC カードを使用してサーバーに接続できます。

テスト環境

  • OSFedora 34
  • アプリケーションApache Web サーバー
  • IP アドレス192.168.2.105
  • IP アドレス192.168.2.106
  • ドメインwww.mydomain1.com
  • ドメインwww.mydomain2.com

IP ベースおよび名前ベースの Apache 仮想ホストをセットアップする方法

始める前に、次のように dnf コマンドを使用してApache Web サーバーがシステムにインストールされていることを確認してください。

sudo dnf install httpd -y

名前ベースの仮想ホスティングのセットアップ

名前ベースの仮想ホスティングを設定する最初のステップは、/etc/hosts ファイルでドメイン名解決を設定することです。したがって、root ユーザーとして次のコマンドを実行して、ホストの IP アドレスを指すドメイン名エントリを追加します。

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

次のステップでは、Web サイトのファイルを含むディレクトリを作成します。したがって、Apache 構成の /var/www/html フォルダであるドキュメント ルートに仮想ホスト用の 2 つのディレクトリを作成します。

sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

次のステップは、すべてのドメイン名に対する受信 Apache Web サーバー要求をリッスンするように Apache の IP に指示する仮想ホスト ファイルを変更することです。したがって、任意のテキスト エディタを使用して Apache 構成ファイルを開きます。

sudo vim /etc/httpd/conf/httpd.conf

2 つの仮想ホストに次のコード ブロックを追加します。

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

変更を保存して終了します。次に、構文に問題がないこと、およびエラーがないことを確認します。

httpd -t

次に、各ドメインの HTML テスト ページを作成し、ブラウザからすべてが適切に動作しているかどうかを確認する方法として、いくつかのコンテンツを追加します。

mydomain1.com の場合

mydomain1.com ディレクトリに index.html ファイルを作成します。

sudo vim /var/www/html/mydomain1.com/index.html 

次の行を貼り付けます。

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

変更を保存してファイルを終了します。

mydomain2.com の場合

mydomain2.com ディレクトリに index.html ファイルを作成します。

sudo vim /var/www/html/mydomain2.com/index.html 

次の行を貼り付けます。

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

変更を保存してファイルを終了します。

次に、Apache Web サーバーを起動し、実行されていることを確認します。

sudo systemctl start httpd
sudo systemctl status httpd

ファイアウォールを有効にしている場合は、HTTP および HTTPS トラフィック (必要な場合) を許可します。

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

次に、ブラウザからドメインをテストします。

IP ベースの仮想ホスティング Linux のセットアップ

IP ベースの仮想ホスティングには、その名前が示すように、Linux サーバーに割り当てられた複数の IP アドレスが含まれます。ほとんどの場合、複数の IP アドレスを提供するために、2 つ以上の NIC カードがシステムに接続されています。

IP ベースの仮想ホスティングの目標は、各ドメインに、他のドメインでは使用されない一意の IP アドレスを割り当てることです。

これは、Web サイトが SSL 証明書 (mod_ssl) で暗号化されている場合、または別のポートで実行されている場合に最適です。このセットアップでは 2 つの NIC アダプターがあります。

システムの IP 構成を表示するには、ifconfig または ip a コマンドを実行します。

ifconfig
OR
ip addr

私たちのサーバーには 2 つの IP アドレスがあり、それぞれが 1 つの NIC に割り当てられています。 IP 192.168.2.106ens160 に割り当てられ、 192.168.2.105ens224 に割り当てられます。

もう一度、httpd.conf ファイルを設定しましょう。

sudo vim /etc/httpd/conf/httpd.conf

図に示すように、両方のドメインの仮想ホストを作成します。各 IP アドレスがそれぞれの仮想ホスト構成に割り当てられていることを確認してください。

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

設定ファイルを保存して終了します。次に、/etc/hosts ファイルを次のように変更します。

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

エントリを確認します。

cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

次に、変更を有効にするために Apache Web サーバーを再起動します。

sudo systemctl restart httpd

最後に、示されている URL にアクセスして、IP ベースの仮想ホスティング設定をテストします。

http://192.168.2.105
http://192.168.2.106

このテストでは、IP ベースの仮想ホスティングが期待どおりに動作していることを確認します。

結論

この講義はここまでです。両方のタイプの仮想ホスティングを大きな問題なくシームレスに構成できることを願っています。このガイドに関するフィードバックをお待ちしております。