ApacheでVirtualHostを設定して複数サイトに対応する

ApacheでVirtualHostを設定して複数サイトに対応する
目次


【はじめに】ApacheでVirtualHostを設定する

複数サイトを管理する際、お手軽にサブドメインを使用する方法があります。 今回はとApache(VirtualHost)の設定方法をまとめておきます。

サーバー、Apacheの環境、バージョンなど

  • サーバー:ConohaVPS
  • OS:Debian11.4
  • Apache:Apache2.4.54

VPSとApacheの設定はこちらの記事 でやっています。

サブドメインの設定(VPS側)

Apacheの設定のほか、契約しているサーバー側にドメイン登録が必要です。私が使用しているConoHaVPSの設定を紹介します。

ConohaVPSの設定

  1. Conohaコントロールパネルにログイン
  2. メニューの「DNS」→ドメインリストが表示されるので、使用するサブドメインを登録するドメインをクリック
  3. 右上の鉛筆マークをクリックして編集モードへ、サブドメインを登録する。
    ConoHaVPS-DNS設定画面
タイプ 名称 TTL
A(通常) @ 3600 xxx.xxx.xxx.xxx(IPアドレス)
A(通常) sub 3600 xxx.xxx.xxx.xxx(IPアドレス)
  • 「A(通常):@」はメインドメインです。すでに登録されていると思います。
  • IPアドレスはメインドメインと同じ値を記入します。
  • 上記の例だと、メインドメインが「domain.com」の場合、サブドメインは「sub.domain.com」になります。
  • 私はドメインを「お名前.com」で取得しています。こちらにもAレコード登録の項目がありますが、今回の設定の際「お名前.com」での設定は不要でした。

Apacheの設定

VPSにログインしてApacheの設定をします。

設定ファイルの作成

「Apache Virtualhost」で検索するとたくさんの記事が出てきます。 「/etc/httpd/conf/httpd.conf」を編集するようなのですが、自分の環境にはそんなフォルダはありません。。。

どうやら「httpd.conf」はCentOS(RedHat系)らしくDebian(Ubuntu)系は「/etc/apache2/」以下のファイルを編集するようです。ディレクトリ構成はこのようになっています。

# ls /etc/apache2 -l
total 80
-rw-r--r-- 1 root root  7224 Feb  7 15:07 apache2.conf
drwxr-xr-x 2 root root  4096 Feb  7 15:10 conf-available
drwxr-xr-x 2 root root  4096 Aug 16 21:11 conf-enabled
-rw-r--r-- 1 root root  1782 Jun  9  2022 envvars
-rw-r--r-- 1 root root 31063 Jun  9  2022 magic
drwxr-xr-x 2 root root 12288 Aug 16 21:11 mods-available
drwxr-xr-x 2 root root  4096 Aug 16 21:46 mods-enabled
-rw-r--r-- 1 root root   320 Jun  9  2022 ports.conf
drwxr-xr-x 2 root root  4096 Feb  7 20:45 sites-available
drwxr-xr-x 2 root root  4096 Feb  7 20:45 sites-enabled

やることの手順は

  1. 「sites-available」フォルダにVirtualhostの設定ファイルを準備する。
  2. 「a2ensite」コマンドを使用して「sites-enabled」にリンクを張る。
  3. apache2の再起動 です。こちらのサイトバーチャルホストで複数サイトを管理する を参考にさせていただきました。

「sites-available」フォルダにVirtualhostの設定ファイルを準備する。

「/etc/apache2/sites-availableに」

  • 000-default.conf
  • 000-default-le-ssl.conf のファイルがあるので、適当な名前をつけてコピーします。
# cp 000-default.conf subdomain.conf
# cp 000-default-le-ssl.conf subdomain-le-ssl.conf

「.conf」は「http://」用、「ssl-conf」は「https://」用の設定ファイルです。

変更点は「DocumentRoot」「ServerName」の2ヶ所です。

 DocumentRoot /var/www/sub
 ServerName sub.domain.com

「DocumentRoot」はhtmlファイルを置くフォルダ(Apache標準は/var/www/html/でメインドメインが使っている)、「ServerName」はサブドメインをつけたドメイン名です。DocumentRootのフォルダは新規なら作成しておきます。 httpsを使用する場合には-le-ssl.confファイルも同様に変更しておきます。

「a2ensite」コマンドでリンクを張る。

設定ファイルが準備できたらリンクを張ります。

# pwd
/etc/apache2/sites-available
# a2ensite sub.domain.com
Enabling site sub.domain.com.
To activate the new configuration, you need to run:
  systemctl reload apache2
# a2ensite sub.domain.com-le-ssl
Enabling site sub.domain.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

Apacheを再起動します。

# systemctl reload apache2

動作確認

DoccumentoRootに「index.html」を作成して「http://sub.domain.com」 にアクセスしますindex.htmlは単なるテキストファイルでもOKです)。

<html>
<body>
Hello!
</body>
</html>

テストページが表示されれば成功です。お疲れ様でした!