WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Web アプリをバーチャルホスト環境にインストールする

本日は Web アプリケーションをバーチャルホスト環境に効率よくインストールする方法をご紹介します。 GentooLinux では、さまざまな Web アプリケーションが Portage のパッケージとして用意されています。これらは通常、"/var/www/localhost" 以下にインストールされて、Apache のデフォルト設定ですぐに利用可能となります。シングルホスト環境であればこれでなんの問題もありませんが、バーチャルホストで複数のホストを運営している場合はどうでしょう。

当然 DocumentRoot は上記の場所ではありませんから、手動でコピーする必要があります。複数のホストにインストールするなら、その分だけコピーしなければなりません。さらに、ホストごとにファイルの所有者を変えなければならない場合も多いですし、設定ファイルは上書きしてはいけません。あれあれ、これではパッケージ管理の意味がまったくありませんね。

しかしご安心ください。GentooLinux では、webapp-config というツールで上記作業の大半を自動化できるようになっています。

概要

webapp-config は、2 段階インストールを用いることで Portage によるパッケージ管理と複数バーチャルホストへの対応を両立させています。

まず vhosts USEフラグを有効にして、emerge で Web アプリケーションをインストールします。こうすると emerge"/usr/share/webapps/<パッケージ名>/<バージョン>" にファイルを展開します。これはマスターコピーとして使われるのみなので、DocumentRoot をここに設定してはいけません。

次に、webapp-config を利用して実際に Apache が参照するディレクトリにファイルをコピーします。このとき、webapp-config は設定ファイルや Web サーバーから変更されるファイルなどを認識して、適切なパーミッションを設定します。また、それら以外のファイルはハードリンクを利用してディスク容量を節約するなんていう、細かな気配りもあります(^^;

詳細は後述しますが、webapp-config はこのような方法で複数ホストへの Web アプリケーションのインストールと効率的な管理を実現します。

webapp-config のインストール

webapp-config は Web アプリケーションのパッケージをインストールする際に自動的にインストールされますが、もちろん単独でインストールすることもできます。

emerge app-admin/webapp-config

Web アプリケーションのインストール前に webapp-config の使い方を確認しておきたい場合は、先にインストールしてしまってもよいでしょう。

Web サーバーのセットアップ

デフォルトでは、webapp-config"/var/www/<FQDN>" 以下に Web アプリケーションのコピーを作成します。したがって、バーチャルホストのドキュメントルートは "/var/www/<FQDN>/htdocs" に設定しておかなくてはなりません。バーチャルホストの設定方法などは、Apache のページからリンクされている記事をご参照ください。

Web アプリケーションのインストール方法

それでは、具体的に webapp-config を使った Web アプリケーションのインストール方法を見ていきましょう。なお、こちらの記事では phpMyAdmin を題材にして実際のインストール作業をご紹介していますので、併せてご参照ください。

USEフラグの設定

複数のバーチャルホストへのインストールをサポートするには、前述のように vhosts USEフラグを有効にしておかなければなりません。"/etc/make.conf"USE の設定に、vhosts を追加しておきましょう。

vhosts フラグの変更による既存パッケージへの影響はほとんどないと思いますので、再ビルドなどの必要はないでしょう。

Portage パッケージのインストール

まずは普通に emerge で Web アプリケーションをインストールします。vhosts USEフラグ付きでインストールすると、以下の場所にファイルが展開されます。

/usr/share/webapps/<パッケージ名>/<バージョン>

バージョンごとにフォルダが分かれているのは、バーチャルホスト ごとに別々のバージョンをインストールすることを可能にするためです。

バーチャルホストへのコピー

パッケージをインストールしたら、webapp-config を使ってバーチャルホスト でアクセスできるディレクトリにファイルをコピーします。インストールをするための webapp-config の書式は以下のようになっています。

webapp-config -I [オプション] [-h <バーチャルホスト名>] \
    [-d <ディレクトリ>] <パッケージ名> <バージョン>
バーチャルホスト名
バーチャルホストFQDN を指定します。インストールディレクトリの指定のほか、Web アプリケーションが自身の URL を必要とする場合にも使用されるようです。-h オプションを省略すると、localhost が指定されたものとみなします。
ディレクトリ
"htdocs" 以下に指定されたディレクトリを作成し、そこにインストールします。-d オプションを省略すると、"htdocs" 直下にインストールされます。
パッケージ名, バージョン
Portage がインストールしたディレクトリと同じものを指定してください。

前述のとおり、Web アプリケーションのコンテンツは以下の場所にインストールされます。

/var/www/<バーチャルホスト名>/htdocs/<ディレクトリ>

また、Web アプリケーションが CGI スクリプトやアイコンなどを必要とする場合は、それぞれ以下の場所にインストールされます。

/var/www/<バーチャルホスト名>/cgi-bin
/var/www/<バーチャルホスト名>/icons

Apache の設定でこれらを参照するように設定しておく必要があるかもしれません。

主なオプションは以下のとおりです。

オプション機能
-u <user>設定ファイルの所有者を user にします。
-g <group>設定ファイルの所有グループを group にします。

Web アプリケーションのアップデート方法

Web アプリケーションがアップデートされた場合は、webapp-config を使用してそのコピーもアップデートする必要があります。その際の書式は以下のようになります。

webapp-config -U [オプション]  [-h <バーチャルホスト名>] \
    [-d <ディレクトリ>] <パッケージ名> <バージョン>

それぞれのパラメータはインストール時と同じです。webapp-config はインストールしたパッケージを記憶しているので、パッケージ名などを指定する必要はないようです。なお、アップデートでは設定ファイルなどは上書きされません。

Web アプリケーションを更新するための具体的な手順に関しては、やはり phpMyAdmin を題材にしてこちらの記事でご紹介しています。実際に作業される際は、参考にしてください。

Web アプリケーションの削除

もし webapp-config によってインストールした Web アプリケーションが必要なくなったら、以下のようにして削除できます。

webapp-config -C -h <バーチャルホスト名> -d <ディレクトリ>

こちらのパラメータもインストール時と同じです。

これで、複数のバーチャルホストを作成している環境でも Portage を利用して手軽に Web アプリケーションをインストール・管理することができます。この仕組みは他のディストリビューションではあまり見られないので、GentooLinux を利用する利点のひとつなのではないでしょうか。皆さんもこれを利用して、いろいろな Web アプリケーションを試してみてください!(^^)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles