初めに
やりたいことは、一つのVPS(この記事ではConohaのVPS)にWebサーバー(Apache)を入れて、ドメインによって表示するドキュメントルートを振り分け、複数のサイトを表示できるようにすること。
やり方はシンプルで、Apacheに用意されているバーチャルホストの設定をすることで実現できる。
方法は調べるとたくさんヒットするが多くがcentOSでの手順だったりするので、Ubuntuでの手順をメモしておきます。
この記事ではsite1.comとsite2 .com を切り分けて表示させるという例で書いていきます。
大まかな手順
- ドメインを取得する
- DNSの設定をする
- apacheの設定をする
ドメインを取得
ドメイン管理会社から欲しいドメインを取得します。
DNSの設定をする
DNSの設定には少し時間がかかるので、先にやっておいたおうがいいです。
参考になるのは以下の記事
・ムームードメインの場合
https://hombre-nuevo.com/vps/vps0009/
・お名前.comの場合
https://qiita.com/sugra511/items/3b05423d4adeeec5cdd4
この記事とは違うVPS、違うドメイン会社を利用している場合でも、「VPS名」+「ドメイン会社名」などで検索するとDNSの設定方法についての記事はたくさんでてきます。
apacheの設定をする
バーチャルホストの設定をするためには、デフォルトのバーチャルホストの設定ファイルをコピーし、書き換えるのと、書き換えたファイルを有効化させる。最後にapacheを再起動するという流れになります。
設定ファイルの準備
※サーバーにApacheのインストールが済んでいる状態からスタートします。
まずはデフォルトの設定ファイルをコピーし、バーチャルホストの設定をします。
sudo cp /etc/apache2/sites-available/000-default.conf "vhost-site1.conf"
sudo cp /etc/apache2/sites-available/000-default.conf "vhost-site2.conf"
作成した設定ファイルを編集
vhost-site1.conf
<VirtualHost *:80>
~省略~
ServerName site1.com
ServerAlias www.site1.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1
~省略~
ErrorLog ${APACHE_LOG_DIR}/site1.error.log
CustomLog ${APACHE_LOG_DIR}/site1.access.log combined
~省略~
</VirtualHost>
vhost-site2.conf
<VirtualHost *:80>
~省略~
ServerName site2.com
ServerAlias www.site2.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site2
~省略~
ErrorLog ${APACHE_LOG_DIR}/site2.error.log
CustomLog ${APACHE_LOG_DIR}/site2.access.log combined
~省略~
</VirtualHost>
設定ファイルにシンボリックリンクを貼り、デフォルトの設定ファイルを無効化する
cd /etc/apache2/sites-available/
a2ensite vhost-site1.conf
a2ensite vhost-site2.conf
a2dissite 000-default.conf
この辺りの仕組みについては以下がわかりやすかったです
https://qiita.com/diconran/items/1eca0e0792f4ce1930c5
hostsファイルの編集
sudo vim /etc/hosts
127.0.0.1 site1.com
127.0.0.1 site2.com
Apacheの再起動
sudo systemctl restart apache2
参考にさせていただいた記事
http://cultusreport.hatenablog.com/entry/2015/08/27/233732