ウェブサイト検索

Ubuntu 22.04でApacheのバーチャルホストを構成する方法


Ubuntu 22.04でApacheのバーチャルホストを構成する方法

このページで

  1. 何をカバーしますか?
  2. 今すぐ始めましょう...
  3. Apacheのvhost設定をテストする
  4. 結論

仮想ホスティングの概念は、企業が単一の機械を使用して複数のウェブサイトをホストするために使用されます。これは、「IPベース」方式または「名前ベース」アプローチのいずれかによって達成できます。「IPベース」のホスティングでは、各ウェブサイトに対して異なるIPアドレスがあります。「名前ベース」のホスティングの場合、各IPアドレスで複数の名前が運用されています。

何をカバーしますか?

このチュートリアルでは、名前ベースの仮想ホスティングを使用して、Ubuntu 22.04システム上で2つの仮想ホストをホストする方法を見ていきます。Apacheウェブサーバーを使用します。

今すぐ始めましょう...

ステップ1. リポジトリとオペレーティングシステムを更新します:

sudo apt update
sudo apt upgrade -y

ステップ2。コマンドを使用してUbuntuにApacheウェブサーバーをインストールします。

sudo apt install apache2 -y

sudo systemctl restart apache2
sudo systemctl status apache2

サンプル出力:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Mon 2022-06-27 09:32:14 UTC; 18s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 13093 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/S>
   Main PID: 13098 (apache2)
      Tasks: 55 (limit: 1146)
     Memory: 4.7M
        CPU: 25ms
     CGroup: /system.slice/apache2.service
             ??13098 /usr/sbin/apache2 -k start
             ??13099 /usr/sbin/apache2 -k start
             ??13100 /usr/sbin/apache2 -k start

ステップ4. ‘www’フォルダの中に2つの新しいディレクトリを作成します。それらのディレクトリはhost1とhost2としましょう。

再び、これらのディレクトリの中に、ウェブファイルを保管するためのもう一つのフォルダーを作成してください。これらのディレクトリを public_html と public_html とします。これらのディレクトリには、これらの2つのホスト用の対応する index.html ファイルが含まれます。

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

ディレクトリ「/var/www/host1/public_html」と「/var/www/host2/public_html」は、二つのバーチャルホストのドキュメントルートを表しています。

ステップ5. 上記で作成されたディレクトリはrootユーザーが所有しています。通常のユーザーにこれらのディレクトリ内のファイルを変更させるために、所有権を次のコマンドを使用して変更する必要があります:

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

‘$USER’変数は、現在ログインしているユーザーの値を使用します。‘public_html’は今後、このユーザーの所有物となります。

ステップ6. 次に、Apacheの一般ウェブディレクトリに対して「読み取りアクセス」権限を設定します。

sudo chmod -R 755 /var/www

ステップ7。次に、各仮想ホストのデフォルトページ、つまりindex.htmlを設定します。これは、‘echo’コマンドを使用して直接ターミナルから行うことができます。仮想ホスト1の場合:

sudo echo “Welcome to Virtual Host 1.” > /var/www/host1/public_html/index.html

仮想ホスト2の場合:

sudo echo “Welcome to Virtual Host 2.” > /var/www/host2/public_html/index.html

ステップ8. 更に進む前に、中間ステップを使用しています。ここでは、ローカルホストアドレスを2つの仮想ホストのドメイン名である www.host1.com と www.host2.com にマップするために hosts ファイルを変更します。これは、私たちのドメイン名を公開登録するのを避けるために行います。

sudo sh -c "echo 127.0.0.1 www.host1.com >> /etc/hosts"
sudo sh -c "echo 127.0.0.1 www.host2.com >> /etc/hosts"

上記の手順は下の画像に示されています。

「000-default.conf」は各仮想ホストのベースファイルとして使用できます。このファイルを同じ場所に2つの異なる名前でコピーするだけです:host1.conf と host2.conf:

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

ステップ10。今、ファイルを開いて各仮想ホストのために修正します。例えば、仮想ホスト1の場合、次のパラメータを修正すべきです。

<VirtualHost *:80>
    ServerAdmin [email 
    ServerName host1
    ServerAlias www.host1.com
    DocumentRoot /var/www/host1/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

2番目のファイル(host2.conf)では、host1のエントリをhost2に置き換えてください。あるいは、新しい2つのファイルを作成し、各仮想ホストに対応する上記の内容を入力することもできます。ファイルhost2.confは次のようになります:

<VirtualHost *:80>
    ServerAdmin [email 
    ServerName host2
    ServerAlias www.host2.com
    DocumentRoot /var/www/host2/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

ステップ10。仮想ホストファイルを作成したので、これらのファイルを実際に有効にする時が来ました。この目的のために、Apacheは「a2ensite」というツールを提供しています。以下のコマンドを使用して、これらを有効にしてください。

sudo a2ensite host1.conf
sudo a2ensite host2.conf

ステップ11。ターミナルに新しい設定を有効にするためにApacheを再読み込みするようにとのメッセージが表示されますが、その前に「000-default.conf」で表されるデフォルトサイトを無効にするために次のコマンドを使用します:

sudo a2dissite 000-default.conf

ステップ12。構成ファイルに構文エラーがないか確認します:

sudo apache2ctl configtest

ステップ13。最後に、上記の変更を適用するためにapache2サービスを再読み込みします:

sudo systemctl reload apache2

Apacheのvhost設定をテストする

これからすべてが正しく設定されているか確認します。あなたのマシンでターミナルを開いて、以下のコマンドを実行してください:

curl www.host1.com

上記のコマンドは、仮想ホスト1のインデックスページからのメッセージを返すべきであり、同様に、下記のコマンドは仮想ホスト2からのメッセージを表示するべきです:

curl www.host2.com

結論

ついに出ることができました。私たちの仮想ホスティングは期待通りに動作しています。このチュートリアルをTerraformを使っても実行できますので、試してみてください。

関連記事: