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

この記事は約7分で読めます。

個人で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鍵認証でログインできるようにします。

これについては、

Debian LennyのVPSにPloneを導入
これは私のような素人にとって非常に大変な作業でしたが、 とりあえず動いたということで自分用にメモしたものです。 試行錯誤しながらなので、抜けモレがあるかもしれません。 先日、世の中には専用サーバのようにふるまうVPSというものがあり、しかも最近安くな...

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

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のマルチドメイン用の設定です。

参考にしたのは、

第10回 MODx Revolutionとコンテキスト
最近は公私共にやや忙しく,なかみつ園のサイト更新が滞っている日々が続いていますが,商品自体は自信を持って熊本から提供しております。
H-Quadrat IT Webentwicklung, Webdesign, Webanwendungsentwicklung und Hosting in Rüsselsheim, Frankfurt, Rhein-Main | H-Quadrat Information Technology

です。

まず事前に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サーバーにとして実用することになりそうです。