ブログ VPSでサブドメインを設定する方法 【CentOS7 + Apache】のサムネイル

VPSでサブドメインを設定する方法 【CentOS7 + Apache】

Created at Modified at

はじめに

レンタルサーバーやマネージドサーバーでは、サブドメインの設定はコントロールパネルから簡単に行うことができます。

しかし、VPSを利用している場合は自分で設定する必要があります。

今回はdevil-code.comのサブドメインであるapp.devil-code.comの設定に時間がかかってしまいましたので、ハマったポイントをメモしておきます。

前提知識

  • CentOS7やLinuxの環境
  • DNSの設定

サブドメインの設定手順

サブドメインの設定には、大まかに以下の2つの手順があります

  • DNSレコードの設定
  • Apache(WEBサーバ)の設定

DNSレコードの設定

利用しているサーバー会社のコントロールパネルのDNS設定から設定することができます。もし、Cloudflareを使用している場合は、CloudflareのコントロールパネルのDNS設定で行います。

Cloudflareコントロールパネル DNSの設定

Apacheの設定

Apacheの設定ファイルに以下の記述を追加します。


<VirtualHost *:80>
    ServerName app.devil-code.com
    DocumentRoot /var/www/html/app.devil-code.com 
    AllowEncodedSlashes on
    <Directory /var/www/html/app.devil-code.com>
        SetEnv HTTP_X_FORWARDED_PROTO http
        SetEnv REAL_HOST_NAME app.devil-code.com
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

この設定を直接httpd.confに追記するか、IncludeOptionalディレクティブを使用して別ファイルで管理し、読み込むようにします。。

sudo vi /etc/httpd/conf/httpd.conf

httpd.confを確認すると、最後の方に以下のような記述があるはずです

IncludeOptional conf.d/*.conf

これを利用して設定を行います。以下のコマンドを実行します

sudo vi /etc/httpd/conf.d/httpd-vhosts.conf

httpd-vhosts.confに先ほどのVirtualHostの記述を追加します。設定を完了したら、サーバーを再起動します。

sudo systemctl restart httpd

これでサブドメインの設定は完了です

http://app.devil-code.comにアクセスし、設定したドキュメントルートの内容が表示されれば成功です。

なお、注意点として、この設定ではHTTP経由でアクセスする必要があります。HTTPSではありません。

ここまでで動作しない場合の対処方法

以下の対処方法を試してみてください

指定のドメインがAレコードに正しく設定されているか確認するために、次のコマンドを実行してください

nslookup app.devil-code.com

サーバーを再起動してみてください

sudo systemctl restart httpd

SSLの設定

app.devil-code.comをHTTPSで利用するためには、別途SSLの設定が必要です。以下の手順を参考にしてください

SSL証明書の取得

sudo certbot certonly --webroot -w /var/www/html/app.devil-code.com -d app.devil-code.com

ssl.confの編集

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

以下のように設定を追記します


<VirtualHost *:443>
    ServerName app.devil-code.com
    DocumentRoot /var/www/html/app.devil-code.com 

    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private_key.key
</VirtualHost>

設定を完了したら、サーバーを再起動します

sudo systemctl restart httpd

これでOK

ハマったこと

  • DNSレコード:事前に調査していたときに、誤った情報でCNAMEレコードを使用するという情報に出会いました。DNSレコードについての理解が浅く、その情報を信じてCNAMEレコードで設定を試してしまいました。実際は、www.devil-code.comがCNAMEレコードであるからといって、app.devil-code.comもCNAMEレコードで設定する必要はありませんでした。DNSレコードについて、種類と役割を正しく理解しましょう。
  • SSLの設定:サブドメインの設定が成功しても、別途SSLの設定を行わないと、サブドメイン用の指定ドキュメントルートがHTTPSでは正しく表示されないことがあります(代わりにdevil-code.comのドキュメントルートが表示されます)。私はこの点に気づかず、.htaccessのリダイレクト設定を変更したり、関係のない作業に時間を費やしてしまいました。

これらの問題を回避するためには、DNSレコードの理解と適切な設定、SSL化の必要性を把握しておく必要があります。

一般的なDNSレコードの種類とそれぞれの役割、用途を表にまとめました✅

レコードの種類 役割 用途
Aレコード ドメイン名をIPアドレスにマッピングする ウェブサイトやアプリケーションのホスティング
AAAAレコード ドメイン名をIPv6アドレスにマッピングする IPv6環境でのホスティング
CNAMEレコード ドメイン名の別名を指定する ドメインの別名やリダイレクト
MXレコード メールサーバの優先順位とドメイン名を指定する メールの受信サーバの設定
TXTレコード ドメインに関連するテキスト情報を格納する SPFやDKIMの設定、メール認証、ドメイン所有権の確認など
NSレコード ゾーンの権威を持つネームサーバを指定する ドメインのネームサーバ設定
SOAレコード ゾーンの権威情報を提供する ゾーンの設定や管理情報の提供
PTRレコード IPアドレスをドメイン名に逆引きする 逆引きDNS、IPアドレスからドメイン名を取得
SRVレコード ドメイン名に関連するサービスの場所を指定する ボイスチャット、メッセージング、その他サービスの指定
SPFレコード ドメインが送信元として信頼できるメールサーバのリストを指定する スパムメール対策、メール認証
DKIMレコード ドメインのメールに署名を追加するための公開鍵を指定する メールの認証、セキュリティ向上
CAAレコード ドメインに証明書を発行できる認証局を制限する SSL/TLS証明書の制限、セキュリティ強化
NAPTRレコード E.164番号をSIP URIにマッピングする VoIPやENUMに使用される

さいごに

今回のサブドメインの設定について、手順とハマりポイントを共有しました。

VPSを利用している場合は、自分で設定を行う必要がありますが、DNSレコードの設定とApacheの設定を正しく行うことで、サブドメインを適切に設定することができます。

また、ハマったポイントとして、DNSレコードに関する誤った情報やSSL設定の重要性に気づかなかったことが挙げられます。

これらのポイントには注意が必要です。適切なDNSレコードの設定とSSLの設定を行うことで、サブドメインが正しく機能するようになります。

サーバーの再起動やドメインの確認など、トラブルシューティングも重要です。問題が発生した場合は、これらの手順を試してみてください。

以上が、CentOS 7とApacheを使用したサブドメインの設定に関する手順と所感です。

この情報が役立つことを願っています。何か訂正や質問があればTwitter等でお知らせください。