はじめての!さくらVPSでマルチドメイン
#やりたいこと
- サーバ代節約のためにマルチドメインの設定
- ひとつのIPアドレスでマルチドメインにする【名前ベース】の設定方法
- うち、1ドメインはJavaをTomcatで利用している
- ドメイン1.com(java使ってるサイト)
- ドメイン2.com(普通のhtmlだけのサイト)
#環境
- CentOS7
- Apache2.4.6
さくらVPSにJava実行環境を構築する
データベースを使ったJavaプロジェクトを前回までにVPSに作ったサーバへ配置
で、作った環境を引き続き使っていきます。
#ドメインの取得、設定
ドメインはどこか適当なサイトで事前に取得しておきます。趣味や勉強で作ったサイト程度なら無料の独自ドメインサービスを使うのもありだと思います。設定が反映されるまで数時間かかります。毎回だいたい3時間くらいです。長いと数日かかることもあるらしいです。
- 無料のドメインサービスfreenom
###ドメインとったサイトでの作業
ドメインとったサイトでさくらのネームサーバの設定をしておく。
下図はfreenomの画面。
- ネームサーバー1 ns1.dns.ne.jp
- ネームサーバー2 ns2.dns.ne.jp
###さくら側の作業
さくらのコンパネでネームサーバの設定をしておく。
新しいネームサーバの登録>追加したい独自ドメインを記述>IPアドレスを記述
https://secure.sakura.ad.jp/menu/domain/zoneadd.php
#Virtual Hostの設定
安全を考慮すると設定ファイルを分けたほうがいいのですが、ファイル増やしたのすぐ忘れる性格なのでここではhttpd.confの下部に記述する方法でやっています。
###httpd.confのバックアップを保存
設定をミスして何かあったときに(だいたい急に表示されなくなる。とても焦る)戻せるようにバックアップをとっておきます。
date "+%Y%m%d_%H%M%S"
でバックアップの日付をファイル名に追加しています。
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.`date "+%Y%m%d_%H%M%S"`
###httpd.confを開く
# vi /etc/httpd/conf/httpd.conf
###コマンドメモ
検索 /
一番下に行く G
#ServerName www.example.com:80 // 編集前
NameVirtualHost *:80 // 編集後
下記の記述。どこでもいいけどわかりやすいように私はNameVirtualHost *:80の下に記述しました。
Listen 80
###各ドメインの設定
フォルダは先に作成しておきます。
- DocumentRoot ドメインのルートフォルダ
- ServerName ドメイン名
最下部へ追記
domain1.comのdomainにはJavaを使ったアプリが配備してあるのでTomcat側へアクセスを飛ばす設定ProxyPass / ajp://【VPSのIPアドレス】:8009/
をしています。両方ともJava使わないサイトの場合は記述は必要ないです。
<VirtualHost *:80>
ServerName domain1.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/domain1com/
<Directory "/var/www/html/domain1com/">
AllowOverride All
Require all granted
</Directory>
ProxyPass / ajp://【VPSのIPアドレス】:8009/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/domain2com/
<Directory "/var/www/html/domain2com/">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
保存して再起動で完了です。
#【宿題】まだよく分かっていないこと
今後2つ以上のドメインでJava使いたいたい場合はどうするんだろうと調べていたらTomcat側でバーチャルホストの設定が必要らしいと設定終わってから知った。ProxyPass / ajp://【VPSのIPアドレス】:8009/
追記じゃなくてはじめっからTomcat側だけの設定でよかったのかな。
ドメイン増えたらためしてみます。
#参考
バーチャルホストの例
https://httpd.apache.org/docs/trunk/ja/vhosts/examples.html
名前ベースのバーチャルホスト
https://httpd.apache.org/docs/2.4/ja/vhosts/name-based.html
Apache httpd と Tomcat を連携させる方法
https://weblabo.oscasierra.net/tomcat-mod-proxy-ajp/
Tomcat9 バーチャルホストを設定する
https://www.javalife.jp/2018/04/11/tomcat9-%e3%83%90%e3%83%bc%e3%83%81%e3%83%a3%e3%83%ab%e3%83%9b%e3%82%b9%e3%83%88%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/