SaaSesVPSにMODx Revolution(Advanced)を導入し、マルチドメイン環境構築のフロントエンドにする

シェアする

個人でVPSを借り始めて半年になりますが、その間VPSでは、

  1. PloneというCMSを入れてみたり、
  2. mod_uploaderという軽いアップローダーを入れてみたり、
  3. virtualminを入れてマルチドメイン対応にしたり、

と、いろいろ遊ばせてもらいました。

特に3番目にやったことは、今借りてるいくつかのレンタルサーバの代わりとしてVPSを実用出来るよう、自分がどこまでやれるのか知りたい、という目的もありました。

virtualminを設定した時は、一応WordPressが動くまでに仕立てることは出来たんですが、そこにたどり着くまで何をどうしたか、今となっては思い出せないぐらいわからないことだらけで大変な作業でした。
CMSを複数動かすということは他のレンタルサーバでも出来ることを考えると、正直VPSは次の契約を更新しないことも考えていました。

そんな中先週、会社のサイトをMODxからWordPressへと乗り換えました。
今後しばらくはMODxを弄ることはないだろうなと思いながらも、Modxの新しいバージョンRevolutionについてふと調べてみると、なんとRevolutionはマルチドメイン対応らしきことが書かれていました。
これは設定が大変なVPSを活かすのにうってつけかと思い、早速MODxをVPSに入れる実験をしてみました。

1.まずはVPSをまっさらにします。

これが何度も出来るのも、SaaSesのVPS、OsukiniLTはOSインストールがユーザーコンパネから無料で出来るからです。
今回はUbuntu11.04を入れることにしました。
もちろん、オプションのApache、Webmin、MySQLもつけました。

2.OSが初期化されたら、SSH鍵認証でログインできるようにします。

これについては、過去のこの記事に書いてあるとおりです。

3.続いて、PhpMyAdminを導入します。

データベースを作成するだけならWebminでも簡単に出来ますが、前のバージョンのMODxではサイトのレストアにPhpMyAdminが重宝したので、今のうちに入れとくことにします。
これはSSHログインでapt-getするとインストールできました。
ただ通常のhttp://xxx.xxx.xxx.xxx/phpmyadmin/をブラウザで開いても、Not Foundになります。
ぐぐった結果を参考に、/etc/apache2/apache2.confの最終行に
Include /etc/phpmyadmin/apache.conf
を追記して、Apacheを再起動したところ、無事に通常のアドレスでも開くことが出来ました。
Modx用のデータベースを1個作っておきます。

4.続いてMODxのインストールです。

これまで私が通常行ってきたCMSのインストールは、圧縮ファイルをダウンロードしてきて解凍し、出来たファイル一式をFTPでレンタルサーバにアップするという手順がほとんどだったのですが、VPSにはまだFTPを設定していません(というかFTPサーバは後で削除予定)ので、wgetで直接VPSに入れることにしました。
SSHでVPSにログインして/var/wwwに移動し、MODx本家サイトのダウンロードページにある2つのバージョンのうち、Advancedをクリックすると、現われたページにIf you’d like to access it directly for wget, you can do so here.とあります。このhereにあるリンクを使ってwgetしました。
するとすごい速さで圧縮ファイルがVPSに落ちてきました。
unzipで解凍すると、出来たフォルダの中には2つのフォルダが入っていました。2つを出来たフォルダから外にだして、Apacheのルートディレクトリに移します。
そしてブラウザから、通常のインストールURLであるhttp://xxx.xxx.xxx.xxx/setup/を開いたところ、
FATAL ERROR:(php.iniにタイムゾーンが設定されてないよ)
みたいな表示が出て、インストールに進みませんでした。
そこでVPS内の/etc/php5/apache2/php.iniを開いて、
;date.timezone =
となっていたのを、
date.timezone = Asia/Tokyo
に編集し、今度はVPSを再起動して、http://xxx.xxx.xxx.xxx/setup/を開いたところ、インストールを開始することが出来ました。
なぜAdvancedがVPS・専用サーバー用なのか、インストール途中にわかりました。Advancedは、細かいファイルは同梱せずに、インストール中にダウンロードするように出来ていました。

5.最後にMODxのマルチドメイン用の設定です。

参考にしたのは、
CMSのポテンシャルを引き出す─MODxで作る商用サイト
MODx Revolution multi-Domain Context Installation english
です。
まず事前にMODxでサイトを作りたい2つのドメインhogehoge.comとhoge.netを、管理しているドメイン登録会社のサイトで設定し、ネームサーバーをVPSのIPアドレスに振り向けておいてます。
MODxのインストールが完了すると、最初からwebというコンテキストがすでにあり、配下にページID1のリソースがあります。
この他に、hogehogeとhogeの2つのコンテキストを参考ページのように新規作成し、ルートディレクトリにあるindex.phpをMODx管理画面から編集します。
//$modx->initialize('web');
という行の代わりに、
//
/* setup for multiple domains */
switch(strtolower(MODX_HTTP_HOST)) {
case 'www.hogehoge.com:80':
case 'www.hogehoge.com':
// if the http_host is hogehoge.com, switch the context to hogehoge
$modx->initialize('hogehoge');
break;
case 'www.hoge.net:80':
case 'www.hoge.net':
// if the http_host is hoge.net, switch the context to hoge
$modx->initialize('hoge');
break;
default:
// by default / if no other rule can be applied, load 'web' context
$modx->initialize('web');
break;
}

とindex.phpを編集後保存して、hogehoge.comとhoge.netをブラウザで見ると、それぞれに指定したコンテキスト配下のページが表示され、マルチドメインが実現できました。
ちなみにこの設定だと、VPSのIPアドレスhttp://xxx.xxx.xxx.xxxにアクセスすると、元からあるコンテキスト”web”のトップページが表示されます。

私のような日曜大工WEB製作者レベルがWEBサーバを考えた場合、VPSは敷居の高いものです。
もしVPSをマルチドメイン対応のWEBサーバにすることが出来れば、低価格・大容量のVPSのメリットが魅力的です。
しかし前述のように過去virtualminを導入したときは、二度とやりたくない位大変な作業でした(勉強のためいつかもう一回チャレンジしたいと思いますが)。
そのときと比べると今回の作業は大変楽ですし、管理も楽です。
今回行った作業で仕立てたWebサーバだと、使
えるCMSはMODxだけですが、マルチドメインに対応させることが出来るし、MODxの管理画面はvirtualminと比べて非常に判りやすいです。
とくに新しいドメインを追加する手間はぜんぜん楽なものです。
私にとってはVPSの存在意義が復活したとともに、これまで掘り下げて使っていたMODxの資産が活用できるので、今後このVPSはMODxマルチサイト用Webサーバーにとして実用することになりそうです。