Apacheのバーチャルホスト設定~1台のサーバで複数のブログを公開!

シェアする

今回は、1台のサーバで複数のブログを公開する方法ということで、Apacheのバーチャルホスト設定について説明します。

※以下の環境を例に説明します。

  • サーバOS:CentOS6
  • WEBサーバ:Apache2.2

スポンサーリンク
レクタングル大

1.バーチャルホストとは

「バーチャルホスト」とは、1台のサーバで複数のドメインを処理するための技術です。

バーチャルホストには、「IPベースのバーチャルホスト」と「名前ベースのバーチャルホスト」があります。

通常、VPSを契約するとサーバ1台、IPアドレス1つを利用できるようになりますが、そのサーバのIPアドレス1つに複数のブログのURLを紐づけたい場合、「名前ベースのバーチャルホスト」を使います。

バーチャルホストの設定を行うことで、1台のサーバでURLが異なる複数のブログを公開できるようになります。

本記事では、以下のURLのブログ①②を1台のサーバで公開するための設定について説明していきます。

  • ブログ①: http://blog1.com
  • ブログ②: http://blog2.net

※ブログ①②の独自ドメインの取得・設定については、以下の記事を参考にして下さい。

お名前.comで初めての独自ドメイン取得!申込方法と設定方法
お名前.comで初めての独自ドメイン取得!申込方法と設定方法
今回は、独自ドメインを初めて取得する際の申込方法や設定方法について説明します。 独自ドメインはお名前.com、サーバはさくらのVPS、という環境を例として...

2.ドキュメントルート構成

「ドキュメントルート」とは、WEBサーバが外部に公開する第一階層のフォルダのことです。

1台のサーバで複数のブログを公開する場合、このドキュメントルートを公開するブログごとに準備します。

本記事では、ブログ①②について、以下のディレクトリをドキュメントルートとすることを例に説明します。

  • ブログ①: /var/www/blog1/public
  • ブログ②: /var/www/blog2/public

ドキュメントルート配下にブログの記事や画像のファイルを配置することで、ブログを外部に公開することができます。

上記のドキュメントルート構成とするメリットは、ブログ①②について、以下のディレクトリを個別の非公開領域とすることができる点です。

  • ブログ①: /var/www/blog1
  • ブログ②: /var/www/blog2

別の記事で説明しますが、この後、ブログ①②についてWordPressをインストールします。

ブログは外部に公開したいので、以下のドキュメントルート配下にインストールします。

  • ブログ①: /var/www/blog1/public
  • ブログ②: /var/www/blog2/public

しかし、WordPressのデータベース接続情報などを設定する「wp-config.php」ファイルについては、外部に公開したくないため非公開領域となる以下のディレクトリに配置します。

  • ブログ①: /var/www/blog1
  • ブログ②: /var/www/blog2

3.ドキュメントルートのディレクトリ作成

それでは、ブログ①②を公開するためのドキュメントルートのディレクトリを作成していきましょう。

① まず、サーバにrootユーザでログインします。

[root@ ~]#

② ブログ①のドキュメントルートのディレクトリを作成します。

「mkdir -p /var/www/blog1/public」と入力してEnterを押します。

  • 「mkdir」はディレクトリを作成するコマンドです。
  • 「-p」は指定したディレクトリをサブディレクトリごと作成するオプションです。ツリー上のディレクトリを一気に作成することができます。
[root@ ~]# mkdir -p /var/www/blog1/public

③ 同様に、ブログ②のドキュメントルートのディレクトリを作成します。

[root@ ~]# mkdir -p /var/www/blog2/public

これで、ブログ①②のドキュメントルートとなるディレクトリが作成できました。

4.Apacheのバーチャルホスト設定

ドキュメントルートとなるディレクトリが作成できたら、バーチャルホストの設定を行っていきます。

4-1.バーチャルホスト設定の概要

本記事では、以下のような振る舞いをするように、バーチャルホストの設定を行います。

なお、意図しないアクセスについては、エラーとするようにしましょう。

  • ブログ①:http://blog1.com にアクセス → /var/www/blog1/public 配下のコンテンツを表示
  • ブログ②:http://blog2.net にアクセス → /var/www/blog2/public 配下のコンテンツを表示
  • その他:上記以外にアクセス → エラーとする

4-2.httpd.confのバックアップ

バーチャルホストの設定は、「/etc/httpd/conf」フォルダ配下にある「httpd.conf」ファイル(Apacheの設定ファイル)で設定します。

「httpd.conf」ファイルを編集する前に、「httpd.conf」ファイルのバックアップを行いましょう。

① まず、サーバにrootユーザでログインします。

[root@ ~]#

② 次に、「httpd.conf」ファイルがある「/etc/httpd/conf」フォルダへ移動します。

「cd /etc/httpd/conf」と入力してEnterを押します。

[root@ ~]# cd /etc/httpd/conf

「/etc/httpd/conf」フォルダへ移動できました。

[root@ conf]#

③ 編集前の「httpd.conf」ファイルをバックアップするため、「httpd.conf」ファイルをコピーして、「httpd.conf.yyyymmdd」というファイル名で保存します。

「cp httpd.conf httpd.conf.yyyymmdd」と入力してEnterを押します。

なお、「yyyymmdd」は設定変更を行う日など任意の年月日とします。

(以下は、20170223とした例)

[root@ conf]# cp httpd.conf httpd.conf.20170223

これで、「httpd.conf」ファイルをバックアップできました。

4-3.httpd.confの編集

「httpd.conf」ファイルをバックアップできたら、「httpd.conf」ファイルを編集していきます。

① 「vim httpd.conf」と入力してEnterを押します。

[root@ conf]# vim httpd.conf

「httpd.conf」ファイルの内容が表示されます。

② 「httpd.conf」ファイル内で、「NameVirtualHost」と記載されている箇所を探します。

「/NameVirtualHost」と入力してEnterを押します。

#NameVirtualHost *:80

③ 上記②の設定から「#」(コメントアウト)を削除します。

「#」にカーソルを合わせ、「x」を入力して「#」を削除します。

NameVirtualHost *:80

④ 次に、以下の設定をコピーし、上記③の設定の下あたりに貼り付けます。

「i」を入力して編集モードに切り替え、以下の設定をコピー&ペーストして下さい。

<VirtualHost *:80>
  ServerName any
  <Location />
    Order Deny,Allow
    Deny from all
  </Location>
</VirtualHost>

<VirtualHost *:80>
  ServerName blog1.com
  DocumentRoot "/var/www/blog1/public"
  DirectoryIndex index.html index.php
  ErrorLog /var/log/httpd/blog1_error.log
  CustomLog /var/log/httpd/blog1_access.log combined
  AddDefaultCharset UTF-8
  <Directory "/var/www/blog1/public">
    AllowOverride All
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  ServerName blog2.net
  DocumentRoot "/var/www/blog2/public"
  DirectoryIndex index.html index.php
  ErrorLog /var/log/httpd/blog2_error.log
  CustomLog /var/log/httpd/blog2_access.log combined
  AddDefaultCharset UTF-8
  <Directory "/var/www/blog2/public">
    AllowOverride All
  </Directory>
</VirtualHost>

上記の設定内容について

まず、冒頭にある「ServerName any」の設定ですべてのアクセスを拒否しています。

次に、「ServerName blog1.com」「ServerName blog2.net」の設定で、ブログ①②に対するアクセスのみ許可しています。

なお、各項目では以下の内容の設定を行っています。

  • ServerName: アクセス時に指定されるドメインを設定します。
  • DocumentRoot: ServerNameで指定されたドメインにアクセスがあった際に公開するドキュメントルートを設定します。
  • DirectoryIndex: アクセス時にファイル名まで指定されなかった場合に、暗黙的に読み込むファイル名を指定します。
  • ErrorLog: ServerNameで指定されたドメインのアクセスに関するエラーログのファイルパスを設定します。
  • CustomLog: ServerNameで指定されたドメインのアクセスに関するアクセスログのファイルパスを設定します。
  • AddDefaultCharset: ServerNameで指定されたドメインにアクセスがあった際に公開するコンテンツのデフォルトの文字コードを設定します。
  • AllowOverride: 「.htaccess」ファイルで設定可能な範囲についてディレクトリごとに設定します。設定値を「All」とすることにより、「.htaccess」ファイルで設定可能な項目はすべて有効となります。WordPressをインストールすると「.htaccess」ファイルが自動で作成されるので、AllowOverrideの設定値は「All」としておきましょう。

⑤ vimで開いた「httpd.conf」ファイルの設定を保存し、ファイルを閉じます。

Escを押し、ノーマルモードに切り替え、「:wq」と入力してEnterを押します。

:wq

4-4.httpd.confの有効化

httpd.confの編集が完了したら、設定した内容を有効化するために、Apacheを再起動します。

「service httpd restart」と入力してEnterを押します。

[root@ conf]# service httpd restart

Apacheの再起動が完了しました。

httpd を停止中:      [ OK ]
httpd を起動中:      [ OK ]

これで、バーチャルホスト設定が有効化されました。

4-5.バーチャルホストの動作確認

バーチャルホスト設定の有効化が完了したら、バーチャルホストの動作確認を行いましょう。

① まず、ブログ①についてバーチャルホストの動作確認を行います。

以下の内容のHTMLファイルを「index.html」というファイル名で作成し、ブログ①のドキュメントルート直下に配置して下さい。

<!DOCTYPE html>
<html lang="ja">
 <head>
 <meta charset="utf8">
 <meta name="description" content="blog1">
 <title>blog1</title>
 </head>
 <body>
 <p id="message">blog1</p>
 </body>
</html>

上記のHTMLファイルの配置が完了したら、作業しているPCのブラウザでブログ①のURLにアクセスして下さい。

ブラウザに「blog1」と表示されればOKです。

② 次に、ブログ②についてバーチャルホストの動作確認を行います。

ブログ①と同様の手順で動作確認を行って下さい。

③ 最後に、ブログ①②のURL以外のURLでサーバにアクセスした際の動作確認を行います。

作業しているPCのブラウザで「http://サーバのIPアドレス」にアクセスして下さい。

ブラウザに「Forbidden」のエラーが表示されればOKです。

これで、バーチャルホストの動作確認が完了しました。

スポンサーリンク
レクタングル大
レクタングル大

シェアする

フォローする