webapp-config
webapp-config は Gentoo の Web ベースのアプリケーション用インストーラ です。仮想ホスティング環境でのウェブアプリケーションの自動セットアップに使用されます。元々はbashスクリプトとして書かれていましたが、webapp-configはPythonベースになり、Gentooのebuildリポジトリで利用可能になりました。
コンセプト
webapp-config は、ウェブサーバ管理者が同一の IP アドレスで複数のウェブサイトを実行する (仮想ホスティング) のに必要なパッケージ管理機能を提供することを目的としています。
2 段階インストール
RPMやPortageなどのパッケージマネージャーは、パッケージの1つのコピーをインストールし、それを固定の場所にインストールするように設計されています。 これは、管理者が1つのパッケージを複数の場所にインストールして、複数のWebサイトの一部にすることができる仮想ホスティング環境のニーズと競合します。 そうは言っても、パッケージマネージャーはオペレーティングシステムを長期にわたって維持するために不可欠です。どのようにして両方の長所を活かすことができるのでしょうか。
答えは 2 段階インストールです。伝統的なパッケージマネージャはマスタコピーを /usr/share/webapps/ にインストールします。このマスタコピーは実行するためのものではなく、webapp-config ユーティリティによって、単一のパッケージを複数の場所に複数回インストールするために使用されるものです。
同一パッケージの複数インストール
webapp-config を使うと、同一システム上に同時に同一パッケージの複数のコピーをインストールできます。それぞれのコピーをどのディレクトリにインストールするかは、管理者が決定します。
Web アプリケーションの世界では、これらの複数のインストールは、「仮想コピー ("virtual copies")」と呼ばれています。
同じパッケージの異なるバージョンを同じシステムに同時にインストールできます。 これにより、web 管理者はサイト間でパッケージの新しいバージョンを段階的に展開できます。 すべてのサイトを一度にアップグレードする必要はありません。
webapp-config は、複製されるファイルの数を最小限に抑えます。 これにより、ディスク領域の使用率が低く抑えられます。 ファイルの大部分はマスターコピーにハードリンクされています。 構成ファイルと、パッケージが書き込む必要のあるファイルのみが仮想コピーにコピーされます。
ファイルの所有権と権限
手作業でWebベースのアプリケーションをインストールすることに慣れている管理者は、適切なユーザーが適切な権限ですべてのファイルを所有するのが面倒な場合があることを知っています。 一部のファイルは、Webサーバーを実行しているユーザーが所有する必要があります。 他のユーザーは特定のシェルアカウントに所有されている必要があるため、これらのユーザーはログインして構成ファイルを編集できます。 LinuxディストリビューションがWebサーバーの選択肢を提供している場合(それぞれが異なるユーザーで実行されている場合)、インストーラーさえそれを正しく取得するのに苦労する可能性があります。
webapp-configを使用すると、管理者はインストーラに、使用するWebサーバーと、構成ファイルを編集するために必要なシェルアカウントを指示します。 次に、webapp-configは、正しい所有権と権限でファイルをインストールします。
保護された設定ファイル
webapp-config は自動的に、アップグレード中に設定ファイルが決して上書きされないようにします。オリジナルのインストールから編集されていなかったとしてもです。さらに webapp-config は、インストールしていないファイルや、webapp-config によってインストールされた後に変更されたファイルを、決して上書きしません。webapp-config はファイルが変更されているか判定するために MD5 チェックサムを利用します。シンボリックリンクの場合は、webapp-config は、別のファイルを指すようにシンボリックリンクを置き換えません。
アップグレードによって保護されたファイルが置き換えられそうになった場合は、webapp-config は新しいファイルの内容を含む ._cfg ファイルを作成します。通常の emerge と同じように、etc-update を使ってインストールを完了させることができます。
ファイルコピーオプション
多くの場合、仮想コピーは /usr/share/webapps 配下のファイルへのハードリンクを作成することで構築されます。ハードリンクを作成できない場合は、代わりに /usr/share/webapps からファイルがコピーされます。
ハードリンクは、同じファイルシステム上にあるファイルに対してしか作成できません。/usr/share/webapps と /var/www が別のファイルシステム上に置かれている場合、webapp-config はハードリンクを使用することができず、代わりにファイルをコピーするしかないでしょう。
このハードリンク問題を回避する方法が 3 通りあります。
最も簡単な方法は、/usr/share/webapps を /var/www 下のディレクトリへのシンボリックリンクにすることです。多くの管理者にとっては、これですべてが同じファイルシステム上にあることを保証できるでしょう。
しかしながら、ホストされている web サイトが個別のファイルシステム上に保管されている場合は、webapp-config はファイルをハードリンクすることができないでしょう。
代替策として、--soft
コマンドラインオプションを使うことができます。これは、webapp-config に対してハードリンクではなく、シンボリックリンクを作成するように指示します。シンボリックリンクはファイルシステムをまたいで機能します。
シンボリックリンクを使用することの問題点は、シンボリックリンクによって作成された仮想コピーだと機能しないパッケージがあるということです。また多くのユーザとシステム管理者も、悲しいかな、シンボリックリンクでいっぱいのディレクトリ構造はややこしいと思うと訴えて続けてきました。これらの理由から、シンボリックリンクは webapp-config でデフォルトとしては使用されなくなりました。
The --copy
command-line option can also be chosen. This particular switch tells webapp-config to directly copy the files from /usr/share/webapps/ instead of hard links. Copying directly works across file systems with the drawback of using more space. This may be desired instead of relying on symbolic links in order to separate the virtualhost files, which admins can then modify, and files in /usr/share/webapps/.
Virtual file voodoo
By default, the master copy contains the metadata that decides which files get linked into a virtual copy and which files do not. Files are either owned by the web server (server-owned), are configuration files (config-owned), or are linked in (virtual). Directories can be server-owned or config-owned, but most of the time they need to be just plain directories (default-owned) created inside the installation directory (set with the -d
option). webapp-config provides a number of switches which allows for overriding the master copy's metadata - in the case the overriding is ever needed.
The --default-dirs
and --virtual-files
switches allow the administrator to decide what webapp-config will do if (respectively) a directory or a file is marked as being default or virtual. webapp-config can be instructed to make the directory or file any of the other choices - server-owned or config-owned - instead.
${ROOT}
webapp-config は ${ROOT}
を完全にサポートすることを意図しています。それがどういうことか分からない管理者は、man ページ (man emerge) を参照してください。
機能
vhost
USE フラグを使用することで、webapp-config は以下のアプリケーションを管理することができます:
Application | Package | Homepage | Description |
---|---|---|---|
ampache | www-apps/ampache | http://www.ampache.org/ | Ampache is a PHP-based tool for managing, updating and playing audio files via a web interface. |
b2evolution | www-apps/b2evolution | http://www.b2evolution.net | Multilingual multiuser multi-blog engine. |
Bugzilla | www-apps/bugzilla | http://www.bugzilla.org | Bugzilla is the Bug-Tracking System from the Mozilla project. |
cgit | www-apps/cgit | http://git.zx2c4.com/cgit/about | A fast web-interface for git repositories. |
coppermine | www-apps/coppermine | http://coppermine.sourceforge.net/ | Web picture gallery written in PHP with a MySQL backend. |
cvsweb | www-apps/cvsweb | http://www.freebsd.org/projects/cvsweb.html | WWW interface to a CVS tree |
dokuwiki | www-apps/dokuwiki | http://wiki.splitbrain.org/wiki:dokuwiki | DokuWiki is a simple to use Wiki aimed at a small company's documentation needs. |
dragonflycms | www-apps/dragonflycms | http://dragonflycms.org | A feature-rich open source content management system based off of PHP-Nuke 6.5 |
Drupal | www-apps/drupal | http://drupal.org/ | PHP-based open-source platform and content management system. |
egroupware | www-apps/egroupware | http://www.egroupware.org/ | Web-based GroupWare suite. |
eyeos | www-apps/eyeos | http://www.eyeos.org | AJAX web-based desktop environment. |
groupoffice | www-apps/groupoffice | http://group-office.sourceforge.net/ | Group-Office is a powerful modular Intranet application framework. |
Joomla | www-apps/joomla | http://www.joomla.org/ | Joomla is a powerful Open Source Content Management System. |
mantisbt | www-apps/mantisbt | http://www.mantisbt.org/ | PHP/MySQL/Web based bugtracking system. |
MediaWiki | www-apps/mediawiki | http://www.mediawiki.org | The MediaWiki wiki web application (as used on wikipedia.org). |
mirmon | www-apps/mirmon | http://people.cs.uu.nl/henkp/mirmon/ | Simple webapp to monitor the status of mirrors. |
Moodle | www-apps/moodle | http://moodle.org | The Moodle Course Management System. |
mythweb | www-apps/mythweb | http://www.mythtv.org | PHP scripts intended to manage MythTV from a web browser. |
Nextcloud | www-apps/nextcloud | https://nextcloud.com/ | Web-based personal cloud that runs on your own server. |
otrs | www-apps/otrs | http://otrs.org/ | OTRS is an Open source Ticket Request System. |
Owncloud | www-apps/owncloud | http://owncloud.org | Web-based storage application where all your data is under your own control. |
phpBB | www-apps/phpBB | http://www.phpbb.com/ | phpBB is an open-source bulletin board package. |
phpmp | www-apps/phpmp | http://www.musicpd.org/ | phpMp is a client program for Music Player Daemon (mpd). |
phpsysinfo | www-apps/phpsysinfo | http://rk4an.github.com/phpsysinfo/ | phpSysInfo is a nice package that will display your system stats via PHP. |
postfixadmin | www-apps/postfixadmin | http://postfixadmin.sourceforge.net | Web Based Management tool for Postfix style virtual domains and users. |
rutorrent | www-apps/rutorrent | https://github.com/Novik/ruTorrent | ruTorrent is a front-end for the popular Bittorrent client rTorrent. |
trac | www-apps/trac | http://trac.edgewall.com/ | Trac is a minimalistic web-based project management, wiki and bug/issue tracking system. |
tt-rss | www-apps/tt-rss | http://tt-rss.org/ | Tiny Tiny RSS - A web-based news feed (RSS/Atom) aggregator using AJAX. |
venus | www-apps/venus | http://intertwingly.net/code/venus/ | A feed aggregator application. |
viewvc | www-apps/viewvc | http://viewvc.org/ | ViewVC, a web interface to CVS and Subversion. |
wiliki | www-apps/wiliki | http://practical-scheme.net/wiliki/ | WiLiKi is a lightweight Wiki engine written in and running on Gauche Scheme. |
WordPress | www-apps/wordpress | http://wordpress.org/ | Wordpress php and mysql based content management system (CMS). |
インストール
USE フラグ
USE flags for app-admin/webapp-config Gentoo's installer for web-based applications
+portage
|
Propagate python_targets dependencies to sys-apps/portage |
Emerge
webapp-config をインストールしてください:
root #
emerge --ask app-admin/webapp-config
設定
Web サーバのセットアップ
webapp-configは、インストールしたアプリケーションをどのウェブサーバでホストするかを知る必要があります。一般的な選択肢としては、以下のようなものがあります:
webapp-config プロセス中のこの段階までで web サーバがセットアップされていない場合、この記事を継続する前にそうしてください。web サーバをインストールして設定するために、上で参照されているリンクを訪問してください。web サーバをセットアップしたら、この記事に戻ってきてください。
/etc/vhosts/webapp-config ファイル内の次の行を編集して、web サーバを設定してください。lighttpd (www-servers/lighttpd) を web サーバとして選択した場合は、次の例が正しい修正となるでしょう:
vhost_server="lighttpd"
使い方
アクション
- -I, --install
- インストールモードを有効化します。
- -U, --upgrade
- アップグレードモードを有効化します。
- -C, --clean
- 削除モードを有効化します。
例
以下の例では web アプリケーションとして Owncloud を使用します。Owncloud の部分は、上の表に記載されたどのアプリケーションで置き換えてもかまいません。
<version>
プレースホルダの部分は、アクションを行いたい web アプリケーションのバージョンで置き換えてください。web アプリをインストールするには:
root #
webapp-config -I owncloud <version>
インストールされた web アプリを一覧表示するには:
root #
webapp-config --list-installs
インストールされた web アプリを表示するには:
root #
webapp-config --show-installed
以前インストールした web アプリを更新するには:
root #
webapp-config -U owncloud <version>
インストールされた web アプリを削除するには:
root #
webapp-config -C owncloud <version>
トラブルシューティング
削除した web アプリがまだインストールされていることになっている
/var/www/ ディレクトリ内のファイルが削除されているのに、webapp-config --list-installs を実行すると項目がまだ存在します。
この問題はおそらく、web アプリの不適切な削除によって発生します。/var/www/ 内のファイルを手動で削除してしまうと、webapp-config プログラムが混乱することがあります。アンインストールは、webapp-config -C <アプリケーション名> <アプリケーションバージョン> の実行によって管理されるべきです。
webapp-config をアンインストールしてください:
root #
emerge --depclean --verbose app-admin/webapp-config
削除されたら、/var/db/webapps/ ディレクトリで見つかるかもしれない、残ってしまったインストールファイルをすべて削除してください。
root #
rm -rf /var/db/webapps/
webapp-config を再インストールして、--list-installs
を付けてコマンドを実行してください。削除したはずの web アプリはすべて消えているはずです。