仮想化生活への軌跡

Feed Rss


WordPressをサブドメインで運用する方法

11.27.2013, Apache, Pound, Ubuntu Server, Webアプリ, ドメイン関係, by .

はじめに

当ブログで構築方法を紹介したWordPressサーバーをサブドメインで運用する方法をまとめておきます。

サブディレクトリで運用する場合(例:http://example.net/blog)に比べ、サブドメインでの運用(例:http://blog.example.net)はWordPressサイトのURLに独立性を持たせ、管理性を高めることができます。

WordPress-logo



前提となる環境

● Ubuntu Server 12.04 x64
● DDNSを利用する場合はサービスがAレコードの追加登録に対応していること

現在のところ、Aレコードの登録が可能なDDNSは一部を除いてほとんどが有償であるため、無料サービスを利用している方は注意してください。
(当サイトでも利用しているMyDNS.jpは無料ながらAレコードの登録が利用可能です。)

なお、当然ながら利用可能なグローバルIPアドレスは1つでかまいません。

UbuntuでWordPressを構築する方法については、手順(1)及び手順(2)を参照してください。


2つの方法

本稿ではサブドメインを利用する方法として2つの方法を取り上げます。

1つ目はリバースプロキシを利用する方法です。
フロントエンドサーバーにリバースプロキシを構築し、リクエストを受けたURLに従って対応するバックエンドサーバーにリクエストを転送する方法です。
サイトごとに独立のWEBサーバーを用意するなど、(物理サーバー/仮想サーバーの別を問わず)複数のサーバーを運用する場合に適した方法です。

2つ目はWEBサーバーに備わるバーチャルホスト機能を利用する方法です。
バーチャルホストとは、リクエストを受けたURLに応じてWEBサーバー(Apache等)が対応するサイト定義ファイルを参照することで、リクエストごとに別個のドキュメントルートへのアクセスを可能にする機能です。
Apacheの場合、デフォルトのサイト定義ファイル(/etc/apache2/sites-available/default)ではドキュメントルートが/var/wwwと定義されていますが、これとは別にサブドメインに対応するサイト定義ファイル(例:/etc/apache2/sites-available/blog)を新たに作成し、その中で個別のドキュメントルートを指定することで、リクエストされたURLごとに異なるコンテンツを表示することが可能となります。
VPSをはじめ、1台のWEBサーバーで複数のサイトを運用したい場合にはこの方法が適しています。


リバースプロキシ

本稿ではリバースプロキシサーバーとしてPoundを取り上げます。
Poundの導入方法については当サイトでも既に紹介しているので、こちらの記事を参照してください。

Poundサーバーが構築できたら、WordPressサイト用の設定を加えます。
エディタで /etc/pound/pound.cfg を開き、以下のように編集します。
...
ListenHTTP
    Address 192.168.xxx.xxx
    Port    80
...
# WordPress
Service
    HeadRequire "Host:.*blog.example.net.*"
    BackEnd
        Address 192.168.yyy.yyy  ←WordPressが稼動するバックエンドサーバーを指定
        Port    80
    End
End
...


編集を終えたら、Poundを再起動します。
sudo service pound restart


正しく設定できていれば、Poundが”http://blog.example.net/”で受けたリクエストをバックエンドサーバー(上記の例では192.168.yyy.yyy)に転送し、クライアントはバックエンドのコンテンツを受け取ることができます。


バーチャルホスト

ここではApache2に備わるバーチャルホスト機能を利用します。

はじめにWordPressサイト用のサイト定義ファイルを作成します。
ここではデフォルトの定義ファイル(default)をコピーして新たなサイト定義ファイルとして利用します。
cd /etc/apache2/sites-available
sudo cp default blog


続いてコピーした定義ファイル(blog)をエディタで開きます。
sudo vi blog


編集のポイントは主に3点です。

まずはサイトに対応するドメイン名を追記します。
<VirtualHost *:80>
        ServerName blog.example.net  ←WordPress用のドメイン名を追記(2行目)
...


次にWordPress用のドキュメントルートを指定します。
...
        DocumentRoot /WordPressのドキュメントルート  ←編集(5行目)
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /WordPressのドキュメントルート>  ←編集
              Options Includes ExecCGI FollowSymLinks
                AllowOverride All
...


最後にログファイルの指定を行います。
        #ErrorLog ${APACHE_LOG_DIR}/error.log
        ErrorLog /var/log/blog/error.log  ←編集

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        #CustomLog ${APACHE_LOG_DIR}/access.log combined
        CustomLog /var/log/blog/access.log combined  ←編集


ログの作成場所(上記の例では/var/log/blog)は適宜変更してください。

以上の設定を終えたらサイトを有効化し、Apacheを再起動します。
sudo a2ensite blog
sudo service apache2 restart


Apacheの再起動でエラーが出る場合はサイト定義ファイルの設定を見直してみてください。


Aレコードの追加設定

以上の設定はあくまでサーバー内部のものであり、これだけは新しく作成したサイトに向けたリクエストが自分のサーバーに届きません。
WordPress専用のドメイン名によるリクエストをサーバーで受け取るためには、DNSサーバー上でAレコードの設定を行う必要があります。

設定方法は使用するDNSサービスごとに異なりますが、ドメイン情報の設定画面で”blog”というホストネームをAレコードとして追加すれば完了です。

下の図はMyDNS.jpにおける設定例です。
Aレコードの追加

設定の反映までしばらく時間を空けると、”http://blog.example.net/”にアクセスできるはずです。


Advertisement


RelatingPosts

コメントを残す

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


*