ApacheでVirtualHostを設定して複数サイトに対応する
【はじめに】ApacheでVirtualHostを設定する
複数サイトを管理する際、お手軽にサブドメインを使用する方法があります。 今回はとApache(VirtualHost)の設定方法をまとめておきます。
サーバー、Apacheの環境、バージョンなど
- サーバー:ConohaVPS
- OS:Debian11.4
- Apache:Apache2.4.54
VPSとApacheの設定はこちらの記事 でやっています。
サブドメインの設定(VPS側)
Apacheの設定のほか、契約しているサーバー側にドメイン登録が必要です。私が使用しているConoHaVPSの設定を紹介します。
ConohaVPSの設定
- Conohaコントロールパネルにログイン
- メニューの「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
やることの手順は
- 「sites-available」フォルダにVirtualhostの設定ファイルを準備する。
- 「a2ensite」コマンドを使用して「sites-enabled」にリンクを張る。
- 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>
テストページが表示されれば成功です。お疲れ様でした!