1つのサーバーで複数のwebサイトを作成する(バーチャルホスト)

How to set up a virtual host

はじめに

友達にウェブアプリを作ってほしいと頼まれました。このドメインをそのまま使ってもよかったのですが、なんか自分の心情的に嫌だなと感じたので、今回バーチャルホストとして追加でもう一つmydnsからドメインを借りて行うことにしました。
ということでこの記事は、1つのサーバーで複数のドメインを使ったwebサイトを作成する方法を説明します。

用意するもの

  • Apacheやhttpdが動作しているWebサーバー
  • 複数のドメイン(この記事ではMyDNSの無料ドメインを使用)

1.ドメイン準備

私の場合はMyDNSを普段使っているので、そちらから新しくドメインを取得しました。
MyDNSでの取得方法については前回の記事を参考にしてみてください。

2.バーチャルホストの設定

まず、デフォルトのバーチャルホスト設定を作成します。
Apacheは設定ファイルを名前順に読み込むので、デフォルトファイルやそういった重要な設定ファイルは順番付けをしたほうが良いです。

sudo nano /etc/apache2/vhosts.d/000-default.conf
<VirtualHost _default_:80>
    DocumentRoot /srv/www/default
    
    <Directory /srv/www/default>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/error_default.log
    CustomLog /var/log/apache2/access_default.log combined
</VirtualHost>

次に取得したドメイン用の設定ファイルを/etc/apache2/vhost.d以下に作成します。
基本的に設定ファイルの作りは同じです

sudo nano /etc/apache2/vhost.d/ドメイン名.conf
<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /srv/www/domain.com

    <Directory /srv/www/domain.com>
        Require all granted
        AllowOverride All
	Options FollowSymLinks
        DirectoryIndex index.php index.html
    </Directory>

    # HTTPSへのリダイレクト
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =domain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    ErrorLog /var/log/apache2/domain_error.log
    CustomLog /var/log/apache2/domain_access.log combined
</VirtualHost>

3.動作確認

3-1.各URLでの確認

設定が終わりましたら、以下の3パターンでアクセスして適切なサイトが表示されることを確認してください
1. デフォルトドメイン
2. 追加したドメイン
3. サーバーのIPアドレス(デフォルトサイトが表示されるはず)

3-2.ログの確認

Apacheでエラーが出ていないことを確認してください

# エラーログの確認 
sudo tail -f /var/log/apache2/error_default.log 
sudo tail -f /var/log/apache2/domain_error.log 

# アクセスログの確認 
sudo tail -f /var/log/apache2/access_default.log 
sudo tail -f /var/log/apache2/domain_access.log

4.トラブルシューティング~よくある問題と解決方法 ~

4-1. 特定のドメインにアクセスできない

– バーチャルホスト設定のServerName指定を確認
– DNSの設定が正しいか確認
– ファイアウォールの設定を確認


4-2. デフォルトサイトが表示されない

– 000-default.confの設定を確認
– ドキュメントルートの権限設定を確認


4-3. HTTPS関連のエラー(SSL証明書あれば)

– SSL証明書の設定を確認
– リダイレクト設定が正しいか確認


Categories:

,