さくらのVPS サーバで複数のドメイン(Virtualhost / マルチドメイン)を運用する方法

さくらのVPS サーバに WordPress を移転して一番感動したのは、サクサク動く管理画面です。表示スピードも上がり大変快適になりました。せっかくなので、他のドメイン・サーバーで運用しているサイトもこのサーバーに引っ越したいという欲が出てきました…。

さくらのVPS ではマルチドメイン(Virtualhost)で運用することも可能です。エラーを出しながらもなんとか、複数のドメイン設定ができたのでその手順のメモです。

1. さくらのネームサーバー設定をする

さくらのVPS 管理画面から「ネームサーバー登録」をクリック

さくらのVPS 管理画面から「ネームサーバー登録」をクリックして「ネームサーバの利用申請」画面へ移行します。

新しいネームサーバの登録

画面一番下に「新しいネームサーバの登録」という項目があるので、ここからドメインを追加します。次に「ゾーン編集」のボタンをクリックし、「さくらインターネットのネームサーバーに設定する」の項目の箇所へ、IPアドレスを入力し送信します。

ドメイン管理会社側でも、さくらのネームサーバー設定を行えば準備完了です。

2. ディレクトリを分ける

さくらのVPS では var/www/html/ がドキュメントルートとなっています。この中でまたディレクトリを分けます。例えば、このブログを「memocarilog」ディレクトリにいれ、もう一つ運用したいサイトを「example」ディレクトリに入れたりします。

ディレクトリを分ける

ターミナルからディレクトリを作成する場合は mkdir コマンドで作成できます。

3. 設定ファイルを作成する

/etc/httpd/conf.d の中に設定ファイルを新規で作成します。サーバーへ SSH で接続し以下のコマンドでファイルの作成をします。

vim /etc/httpd/conf.d/vhost.conf

(ここでは、ファイル名を vhost.conf としていますが、拡張子が .conf ならファイル名は任意のものでよいようです。)

新規ファイル入力画面が表示されると思います。i を押して挿入モードに切り替え、以下のようにファイルに記入します。

# ドメイン1の設定
<VirtualHost *:80>
DocumentRoot /var/www/html/<ディレクトリ名>
ServerName <ドメイン名>
CustomLog logs/<ディレクトリ名>-access.log common
ErrorLog  logs/<ディレクトリ名>-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/<ディレクトリ名>/">
    AllowOverride All
</Directory>
</VirtualHost>

# ドメイン2の設定
<VirtualHost *:80>
DocumentRoot /var/www/html/<ディレクトリ名>
ServerName <ドメイン名>
CustomLog logs/<ディレクトリ名>-access.log common
ErrorLog  logs/<ディレクトリ名>-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/<ディレクトリ名>/">
    AllowOverride All
</Directory>
</VirtualHost>

設定したいドメインが memocarilog.info と example.com なら以下のようになります。

<VirtualHost *:80>
DocumentRoot /var/www/html/memocarilog
ServerName memocarilog.info
CustomLog logs/memocarilog-access.log common
ErrorLog  logs/memocarilog-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/memocarilog/">
    AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/html/example
ServerName example.com
CustomLog logs/example-access.log common
ErrorLog  logs/example-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/example/">
    AllowOverride All
</Directory>
</VirtualHost>

記入したら、esc キーを押し挿入モードを終了してから、:wq を入力し保存して終了します。

4. マルチドメインを許可する設定にする

/etc/httpd/conf の 中にある httpd.conf ファイルを編集し、マルチドメインを許可する設定にします。以下のコマンドでファイルを開きます。

vim /etc/httpd/conf/httpd.conf

このファイルの中から「NameVirtualHost *:80」という行を探します。すべてを目視するのは大変なので、vim の検索機能を使うと簡単です。esc キーを押しノーマルモードにしてから / を押し、NameVirtualHost と記入・エンターキーを押すだけです。該当場所がハイライトされるかと思います。

該当場所がハイライト

「NameVirtualHost *:80」の前に # がついてコメントアウトされているので、i を押し挿入モードにしてから # を削除し、マルチドメインを許可する設定に変更します。# を削除したら、esc キーを押し :wq で保存して終了します。

設定ができたら、httpd を以下のコマンドで再起動します。

service httpd restart

ターミナルへ2つ [ OK ] がでればOKです。それぞれのドメインで、設定したディレクトリの内容が表示されると思います。

私がつまづいたところ

再起動すると、 [warn] NameVirtualHost *:80 has no VirtualHosts とエラーがでる

原因と対処方法

vhost.conf の1つのドメイン設定の中で VirtualHost *:80 の記述を2回していたことが原因でした。いろいろなサイトを参考に、最初は以下のように記述していたのですが、これがよくなかったようです。一番上の記述を削除すればエラーもでなくなりました。

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html/〜

こうやって書いてみると大した作業ではないのですが、また割と時間がかかってしまいました…。しかし、トライ&エラーを繰り返すことにより、少しずつターミナルへの苦手意識はうすれてきたような気がします…。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です