Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,583)  
CrystalDiskInfo  (1,811)  
Tera Term  (1,787)  
HandBrake Japanese Language Version  (1,743)  
CrystalDiskMark  (980)  
FFFTP  (765)  
ffdshow  (719)  
mixfont-mplus-ipa  (615)  
MergeDoc  (571)  
10  TortoiseSVN  (555)  
11  Amateras  (437)  
12  BathyScaphe  (396)  
13  FreeMind  (372)  
14  Cabos  (327)  
15  ギコナビ  (316)  
More >>

Gollem:バックエンドデータを扱うWebベースのファイルマネージャ

2008年11月11日 10:53 Ben Martin 1 2 3

 Gollemを使えば、通常のファイルシステムのvfsrootではなく、PostgreSQLデータベースにファイルを保存することもできる。リレーショナルデータベースを利用したファイルの保存に意味があるのは、別のリレーショナルデータベースに保存されている情報を、ユーザがアップロードしたり編集したりするドキュメントにリンクさせる場合だろう。これを試すには、データベースのセットアップを以下のように行う。Hordeは多くのデータベースをサポートしているので、ほかにもMySQLなどのデータベースが利用できるが、その方法については、以下の例に示したのと同じscripts/sqlディレクトリにあるREADMEファイルを参照してほしい。また、下記のコマンドの最後の行にあるパスワードも変更する必要があるだろう。

# su - postgres
$ cd /usr/share/horde/scripts/sql
$ psql -d template1 -f create.pgsql.sql
$ psql -qc "ALTER USER horde WITH PASSWORD 'horde';" template1 postgres

 データベースのセットアップが済んだら、管理者としてHordeにログインし、「Administration」→「Setup」→「Horde」の該当するデータベースのタブを開いて、適切なデータベースエンジンと証明書がHordeに設定されていることを確認する。Hordeからデータベースに接続できるようになると、いつでもファイルの保存にデータベースが利用できる。「File Manager」の下にある「SQL Server」リンクをクリックすると、「Virtual Home」(vfsrootを利用)ストレージのときとよく似たインタフェースが現れる。ファイルをSQL Serverストレージにアップロードしたあと、postgresとしてコンソールにログインすると、新しいファイルとその内容をhorde_vfsテーブルから取得することができた(以下を参照)。

$ psql horde
horde=# select *,decode(vfs_data, 'hex') from horde_vfs;
 vfs_id | vfs_type | vfs_path | vfs_name | vfs_modified | vfs_owner |                          vfs_data                          |              decode
--------+----------+----------+----------+--------------+-----------+------------------------------------------------------------+----------------------------------
      1 |        1 |          | zzz.txt  |   1225149849 |           | 547565204f63742032382030393a32343a30342045535420323030380a | Tue Oct 28 09:24:04 EST 2008\012
(1 row)

 先ほどのスクリーンショットで「File Manager」の下に2つのSQL Serverリンクがあることに気付いたかもしれない。最初のリンク「SQL Server」は、リレーショナルデータベース内にある複数ユーザ向けの共有ディレクトリである。一方、2番目のリンクは、スクリーンショットでは途中から表示が消えているが、「SQL Server with home」であり、リレーショナルデータベース内の個人用ストレージとなる。私の環境では、「SQL Server with home」のほうを使おうとすると、テスト用ファイルのアップロード時に「ErrorFolder "home/ben" does not exist」というエラーが発生した。

 「SQL Server」のほうを選択した場合は、新しいフォルダhomeを作成し、そこにそのユーザのhomeディレクトリを作成することができる。また、「home/Administrator」と「home/ben」を作成すれば、管理者でログインしてもbenでログインしても「SQL Server with home」の機能を利用できることがわかった。問題は、SQLデータベースを調べたところ、データベース内のすべてのファイルでvfs_ownerが設定されていなかったことだ。これは、私がbenでログインして「SQL Server」を選択した場合でも、「home/Administrator」を参照したり、管理者が自らの「SQL Server with home」ディレクトリにアップロードしたファイルを表示したりできることを意味する。

 「gollem/config/backends.php」ファイルの「SQL Server with home」というエントリには、設定を変更してもよさそうな項目が2つある。まず、「createhome」を「false」ではなく「true」にすると、ログイン時にGollemがリレーショナルデータベース内にホームディレクトリを自動的に作成してくれる。また、VFSファイルの保存に使用するテーブルを変更することも考えられる。SQL with homeのファイル用とは別のテーブルを使用すれば、ユーザはもはやほかのユーザのホームディレクトリを参照できなくなる。

# vi /usr/share/horde/gollem/config/backends.php
...
$backends['sqlhome'] = array(
    'name' => 'SQL Server with home',
    'driver' => 'sql',
...
    // The default connection details are pulled from the Horde-wide SQL
    // connection configuration.
    'params' => array_merge($GLOBALS['conf']['sql'], array('table' => 'horde_vfs_home')),
...
//    'root' => '/home',
//    'home' => '/home/' . Auth::getAuth(),

    'home' => Auth::getAuth(),

 もちろん、データベースに新しいhorde_vfs_homeテーブルを作成する必要もある。以下のコマンドでは、「/usr/share/horde/scripts/sql/create.pgsql.sql」にあるこのテーブルのスキーマを、テーブル名だけ変えて使っている。このテーブルの設定が済めば、自らのHordeユーザしかアクセスできない個人用のファイルをSQLデータベースに保存できるようになる。

#  su - postgres
$ psql horde
\c horde horde;
You are now connected to database "horde" as user "horde".

horde=> CREATE TABLE horde_vfs_home (
    vfs_id        BIGINT NOT NULL,
    vfs_type      SMALLINT NOT NULL,
    vfs_path      VARCHAR(255) NOT NULL,
    vfs_name      VARCHAR(255) NOT NULL,
    vfs_modified  BIGINT NOT NULL,
    vfs_owner     VARCHAR(255) NOT NULL,
    vfs_data      TEXT,

    PRIMARY KEY   (vfs_id)
);

horde=> CREATE INDEX vfs_home_path_idx ON horde_vfs_home (vfs_path);
horde=> CREATE INDEX vfs_home_name_idx ON horde_vfs_home (vfs_name);

 Hordeを利用しているせいで、Gollemの設定が困難になる場合もある。ただし、Gollemが起動して動作するようになれば、ユーザはHordeとGollemを利用して、リレーショナルデータベースに対してファイルの読み書きが行えるようになる。また、ほかにもHordeを利用したアプリケーションについて調べて、Hordeサーバの設定にじっくり取り組むべきかどうかを判断するとよいだろう。

 Gollemには、期待されているようなファイル管理機能の一部が見当たらない。たとえば、ファイルシステムまたはSQLを利用した場合のどちらでも、ディレクトリの再帰的な削除はできなかった。同じように再帰的コピーも試したがやはりだめだった。ディレクトリを選択したうえで、コピーと別の場所への貼り付けをしようとしてもできなかった。こうした再帰的な操作を日常的に行うことはないかもしれないが、Webインタフェースでそうした機能が使えないことに上級ユーザは不満を感じるだろう。

 以上のように、Gollemを利用すれば、Webインタフェースを設定して、FTPサーバ、リレーショナルデータベース、またはサーバ自体のファイルシステム上でチーム内のユーザどうしがファイルを共有することができる。

Ben Martinは10年以上前からファイルシステムに携わっている。博士号を持ち、現在はlibferris、各種ファイルシステム、検索ソリューションを中心としたコンサルティング業務に従事。

Linux.com 原文(2008年11月07日)

最終更新:2009年01月11日 17:07
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.