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証明書の設定を確認
– リダイレクト設定が正しいか確認