🙆‍♀️

Apacheで名前ベースのバーチャルホストを設定する方法

2024/07/29に公開

はじめに

今回は、1つのサーバーで複数のウェブサイトを効率的に運用できるApacheの名前ベースのバーチャルホスト設定について学びます。AWSのEC2インスタンスを使用して、実際に構築しながら設定手順を解説します。このチュートリアルを通じて、linuc202の試験対策と、設定できるようになることを目指します。

前提知識

Apacheとは?

Apacheは、安定性と拡張性が高く、インターネット上でウェブページを配信するために広く使用されているウェブサーバーソフトウェアです。モジュールを追加することで機能を柔軟に拡張できる点が特徴です。例えば、セキュリティ強化のためのモジュールや、パフォーマンスを向上させるためのキャッシュモジュールなどが追加できます。

バーチャルホストとは?

バーチャルホストを使うと、1台のサーバーで複数のウェブサイトをホスティングできます。バーチャルホストには2つの種類があります:

  1. 名前ベースのバーチャルホスト

    • 1つのIPアドレスで複数のドメイン名を扱います。例えば、「example.com」と「test.com」を1つのサーバーで運用できます。
  2. IPベースのバーチャルホスト

    • 複数のIPアドレスを使用して、それぞれ異なるドメイン名を扱います。

このブログでは、名前ベースのバーチャルホストの設定について説明します。

前提:EC2は起動済みでsshできること

1. Apacheのインストール

EC2インスタンスにSSHで接続した後、Apacheをインストールします。以下のコマンドを実行します。

sudo yum update -y
sudo yum install httpd -y

2. Apacheの起動と自動起動設定

sudo systemctl start httpd
sudo systemctl enable httpd

Apacheを起動し、自動起動を設定します。システムコマンドを使用して設定を行います。

名前ベースのバーチャルホストの設定

1. ドメイン名の準備

ここでは仮のドメイン名として「example.com」と「test.com」を使用します。実際にドメインを購入する必要はなく、ローカル環境でテストします。

2. ドキュメントルートの作成

各ドメイン名に対応するドキュメントルート(ウェブページのファイルが置かれるディレクトリ)を作成します。適切なディレクトリを作成し、必要なコマンドを実行してください。

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

3. 仮のウェブページの作成

各ドメインのドキュメントルートに仮のウェブページを作成します。HTMLファイルを作成し、適切な場所に保存してください。

echo '<html><body><h1>Welcome to example.com!</h1></body></html>' > /var/www/example.com/public_html/index.html
echo '<html><body><h1>Welcome to test.com!</h1></body></html>' > /var/www/test.com/public_html/index.html

4. バーチャルホストの設定ファイルの作成

Apacheの設定ディレクトリにバーチャルホストの設定ファイルを作成します。今回は、conf.dディレクトリを使用します。

sudo vi /etc/httpd/conf.d/vhost.conf

以下の内容を入力し、保存します。

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/error.log
    CustomLog /var/www/example.com/requests.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog /var/www/test.com/error.log
    CustomLog /var/www/test.com/requests.log combined
</VirtualHost>

5. Apacheの設定テストと再起動

設定を反映させる前に、Apacheの設定ファイルが正しく構成されているかをテストします。設定ファイルに問題がないことを確認した後にApacheを再起動します。

設定テスト

以下のコマンドを実行して、設定ファイルが正しく構成されているかを確認します。

sudo apachectl configtest

Apacheの再起動

設定ファイルに問題がないことを確認したら、Apacheを再起動します。

sudo systemctl restart httpd

動作確認

1. ローカルホストでの確認

ローカルホストとは、あなたのPCを指します。WindowsやMacなど、日常的に使用しているコンピュータです。このPCのホストファイルを編集して、構築したWebサーバーの動作を確認します。

/etc/hostsファイルの編集

ホストファイルを編集することで、特定のドメイン名を指定したIPアドレスにマッピングします。これにより、ドメイン名を購入せずにローカル環境で動作確認が可能です。

Windowsの場合
  1. メモ帳を管理者権限で開く

    • 理由hostsファイルはシステムファイルのため、通常の権限では編集できません。管理者権限でメモ帳を開く必要があります。
    • 手順
      1. スタートメニューを開き、「メモ帳」と検索します。
      2. メモ帳のアイコンを右クリックし、「管理者として実行」を選択します。
  2. C:\Windows\System32\drivers\etc\hostsファイルを開く

    • 手順
      1. メモ帳が管理者権限で開いた状態で、「ファイル」メニューから「開く」を選択します。
      2. アドレスバーに C:\Windows\System32\drivers\etc\hosts と入力し、ファイルを開きます。
  3. エントリの追加

    • 手順:ファイルの末尾に、EC2インスタンスのパブリックIPアドレスを使用して、example.comtest.comをマッピングする行を追加します。

まとめ

これで、名前ベースのバーチャルホストの設定方法が理解できました。1つのIPアドレスで複数のドメイン名を運用することで、サーバーリソースを効率的に活用できます。この設定をマスターすることで、より柔軟で拡張性の高いウェブホスティング環境を構築できるようになります。

参考

[共通] hostsファイルの編集(WindowsOSのPCの場合)

【Apache】VirtualHostを使ってみよう

Discussion