プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

Ubuntu18.04 [Apache]バーチャルホストで複数サイト運営

  • 2019年4月1日
  • 2019年4月4日
  • Linux
  • 2870view
  • 2件

初めに

やりたいことは、一つの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