以下はDSpaceサーバを稼働させるために必要なコンポーネンツやツールをリストアップしたものです。これらはMITにおける私たちの構築経験に基づいた単なる推奨リストです。DSpaceはオープンソースの標準的なツールを使って作成されていますので、これ以外にも多くの選択肢や構築法が存在します。
また、以下に示した特定のツールに関する設定やインストールのガイドラインは便宜上ここにあげたにすぎないことに注意してください。 完全で最新の内容については、個々のコンポーネンツのドキュメントを参照してください。多くのツールは頻繁にバージョンアップされているので、以下に示したガイドラインは最新版では正しくないかもしれません。
DSpaceはHP/UX, Linux, Mac OS Xでの稼働を確認しています。 (Solarisのような)その他のUNIXライクなOS上でもDSpaceは問題なく動くはずです。
DSpaceはJava 1.3と1.4での稼働を確認しています。必要なものは標準的なSDKだけで、J2EEは必要としません。
次のJavaライブラリをダウンロードする必要があります。
activation.jar
を取り出して、(ソースコードツリーにある)dspace-1.1/lib
ディレクトリに置く。servlet.jar
を dspace-1.1/lib
に置く。mail.jar
をdspace-1.1/lib
に置く。残念ながら、これらのライブラリはライセンスの関係でDSpaceソースコードに含めることができませんでした。
現在のところ、私たちはTomcat 4.0+を使用しています。 なぜなら、Tomcatは、サーブレット 2.3とJSP 1.2のオープンソースの参照実装であるからです。 Jetty や Caucho Resinのようなその他のアプリケーションサーバでもDSpaceは稼働するはずです。
Apacheと連携して使用する場合は、Tomcat 4.0.6が最良のバージョンです。 Tomcatをスタンドアロンで使用する場合は、最新のバージョンを使用してください。Tomcat 4.1.12は バグのために新しいセキュリティ機能(シンポリックリンクをたどらない)を無効にすることができないので使用できません。
TomcatはDSpaceユーザでインストールし、実行する必要があります。アップロードファイルを書き込み可能にするためです。 既に他のアプリケーションのためにTomcatを使用しているサーバにDSpaceをインストールする場合は、DSpaceをTomcatのユーザでインストールしてください。 以下では、あなたがTomcatについてある程度知っており、どのように動くかを知っていると仮定します。
Unicodeを正しく扱えるように、次の環境変数をセットした上で、Tomcatを実行する必要があります。また、デフォルトのJVMメモリヒープサイズは比較的小さいので大きくします。
変数-Xmx512M
(最大ヒープサイズを512MBにする)と -Xms64M
(Java スレッドスタックサイズを64MBにする)は、使用するハードウェアに合わせて調整してください。
JAVA_OPTS="-Xmx512M -Xms64M -Dfile.encoding=UTF-8"
Apacheを使用せずTomcatをスタンドアロンのHTTPサーバとして使用する場合は、シンポリックリンクを許可しないセキュリティ機能を切る必要があります。
そのためには、以下のオプションをTOMCAT/conf/server.xml
ファイルにあるデフォルトバーチャルホスト要素(<Host name="localhost"...
)に追加します。
<Context path="" docBase="ROOT" debug="0" reloadable="true" crossContext="true"> <Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" /> </Context> <Context path="/dspace-oai" docBase="dspace-oai" debug="0" reloadable="true" crossContext="true"> <Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" /> </Context>
Tomcat 4.1.24以降を使用する場合は、'admin'という名前のウェブアプリケーションがすでに存在します。 これは、DSpaceの管理用ユーザインターフェースと衝突するので、以下のいずれかの方法で回避する必要があります。
TOMCAT/webapps/admin.xml
を削除するか、.xml
で終わらない別の名前にrenameする。ただし、この方法を取ると、Tomcatの管理アプリケーションが使用できなくなる。TOMCAT/webapps/admin.xml
にあるコンテキストパス/admin
を、何か別のパス、たとえば、/tomcat-admin
に変更する。こうすれば、別のURLでTomcatの管理アプリケーションにアクセスできるようになる。Apacheと連携させてDSpaceを使用する場合は、Tomcatの設定ファイルであるserver.xml
からスタンドアロンサービス、すなわち、<Service name="Tomcat-Standalone">
セクションを削除します。
そして、Tomcat-Apacheセクション(<Service name="Tomcat-Apache">
)のコメントをはずします。
Tomcat 4.1.18をApacheと連携して使用する場合は、シンポリックリンクを無効にするセキュリティオプションを切る必要がありますが、 上の設定では動かないようです。mod_webappを使ってリンクオプションを許可する方法をご存知の方は、お知らせください。
セキュリティ機能を高めるためにTomcatをApacheに接続することができます。
私たちはApache 1.3を使用していますが、2.0でテストしたところ、apache13.confを少し変更(ServerName
デレクティブにポート番号を追加)すれば稼働しました。
しかしながら、(本番サービスとして立ちあげるのではなく)とりあえずDSpaceを評価するだけなら、おそらく、ApacheとTomcatの連携に伴う問題に苦労する必要はないでしょう。
私たちはApacheを主として、SSLとX509証明書機能(mod_ssl
)のために使用しています。
私たちは、DSpaceに対するすべてのアクセスはSSLを通すべきであると決めました。なぜなら、オーバーヘッドはそれほど大きくないし、SSLと非SSLの間の切り換えが問題となりそうだからです。
ある種のリソース(コレクション、アイテム、個々のビットストリームなど)へのアクセスは制限し、その他は制限しないということが可能であるので、URL単位でSSLか非SSLかを判断することは大変です。
DSpaceをmod_sslなどが設定されていないHTTP上で稼働することはあまり安全ではないことに注意してください。パスワードが暗号化されずに転送されるからです。
DSpaceのソースコードには、Apache設定ファイルの断片であるapache13.conf
が含まれています。このファイルにはDSpaceの稼働に必要な設定のほとんどが書かれています。
ただし、このファイルの使用も必須ではありません。1つの例として参考にするだけでもかまいません。
Apacheの設定ファイルhttpd.conf
を直接変更する場合は、以下の点に注意してください。
mod_ssl
と mod_webapp
を有効にし、ロードするInclude /dspace/config/httpd.conf
。
DSpace用設定ファイルの配置場所は自由に決められる。設定の章を参照のこと。AntはJavaで書かれたクロスプラットフォームに対応したオープンソースの「make」相当のプログラムです。 Antは「Java向き」にできていますので、CLASSPATHやJavaプロパティファイル(たとえば、DSpaceのメイン設定ファイル)などの処理が得意です。
トランザクション・コミット/ロールバック機能を持つオープンソースの優れたデータベースです。DSpaceにはPostgreSQL特有の機能を使用している箇所がたくさんあります。うまくいけばこのうちのいくつかを取り除いて、任意のANSI SQLデータベースをバンクエンドとして使用できるようになるでしょう。
以前のバージョンにあったユニコードの扱いの問題が修正されていますので、PostgreSQL 7.3以降をインストールします。
configure
を実行する際には必ずオプション、--enable-multibyte
(最新版ではこれはデフォルトで設定されています)と--enable-unicode
を指定します。
しかるべきJDBCドライバをコンパイルする必要がありますので、--with-java
オプションも指定します。
次にPostgreSQLをコンパイルし、作成された postgresql.jar を dspace-1.1/lib
にコピーします。
インストール後、JDBCがTCP/IP接続で作動するように設定する必要があります。このためのオプションは/usr/local/pgsql/data/postgresql.conf
の先頭に置きます(tcpip_socket = true
を追加します)。
パフォーマンスを高めるために、定期的にデータベースを「vacuum」する処理を「cron」で起動すると良いでしょう。次のような行をcrontab
に追加します。
# clean up the database nightly at 2.40am 40 2 * * * vacuumdb --analyze dspace > /dev/null 2>&1
必要なソフトウェアがインストールできたら、次の手順でDSpaceをインストールします。
DSpaceを実行するユーザとグループを決めます。私たちは、dspace
ユーザとグループを作成しました。デフォルトの設定では、このユーザとグループが作成されたと仮定しています。
TomcatとDSpaceは同じユーザでインストールし、かつ、実行する必要があることに注意してください。そうしないとアップロードされたファイルを保存できません。 これは、Tomcat(あるいはその他のサーブレットコンテナ)がDSpace以外のウェブアプリケーションを実行しているサーバ上でDSpaceを動かす場合は、DSpaceをTomcatのユーザで実行する必要があることを意味しています。
DSpaceのインストール先を決めます。デフォルトは/dspace
です。
ルートになってこのディレクトリを作成し、chown
コマンドでその所有者をDSpaceのユーザとグループにします。
"dspace"ユーザ所有のdspace
データベースを作成します。たとえば次のようにします。
createuser -U postgres -d -A -P dspace ; createdb -U dspace -E UNICODE dspace
これとは異なるデータベース名を使用することもできますが、その場合は、設定ファイルの該当箇所を修正する必要があります。
必要に応じてdspace-1.1/config
にあるファイルを修正します。
特に、dspace.cfg
ファイルには注意してください。また、Apacheを使用する場合は、templates/apache13.conf
にも注意してください。詳細については、設定の章 を参照してください。
インストール先をデフォルトの/dspace
から変更する場合は、dspace.cfg
にある複数のプロパティを修正しなければならないことに注意してください。
また、dspace-1.1/config/registries
にあるファイルを修正して、ダブリンコア・レジストリとビットストリームフォーマット・レジストリの初期内容を変更することもできます。
詳細についてはここを参照してください。
次のコマンドでDSpaceをビルドします。
ant
DSpaceを実行するユーザに、必要なら作成して、なってください。
次のコマンドでDSpaceをインストールし、データベースを構築します。
ant fresh_install
DSpaceウェブアプリケーションをTomcatに設定します。多くのウェブアプリケーションでは、アプリケーションに関連するすべてのファイルをTomcat配下のディレクトリに置くのが一般的です。しかし、DSpaceでは非常に多くの付加的コンポーネンツを持っていますので、Tomcat配下のディレクトリに置く代わりにシンポリックリンクを使用します。
Tomcatのwebapps
ディレクトリに移動して、シンポリンックリンクを張ります。
ln -s /dspace/jsp dspace ln -s /dspace/oai dspace-oai
TomcatをスタンドアロンのHTTPサーバとして使用する場合、DSpaceのウェブユーザインターフェースを/dspace
ではなく、ルートにインストールしたいと思うかもしれません。その場合は、次のようにします。
mv ROOT ROOT.bak ln -s /dspace/jsp ROOT
/dspace/bin/install-configs
を実行して、様々な設定テンプレートファイルを稼働に必要な場所にインストールします。このコマンドは、ソースディレクトリではなく、インストール先で実行することに注意してください。
コミュニティやコレクションを作成する前に、管理者アカウントを作成する必要があります。そうでないと管理者画面にログインできません。次のコマンドを実行します。
/dspace/bin/create-administrator
質問に答えて入力します。このコマンドを実行するにはあらかじめPostgreSQLを立ち上げておく必要があります。ApacheとTomcatの立ち上げは必要ありません。 このコマンドでエラーが発生しなかったら、DSpaceとPostgreSQLは正常に通信できていることを示しています。
次に、Lucene検索インデックスを初期化する必要があります。次のコマンドを実行します。
/dspace/bin/index-all
電子メールによる日刊購読機能を果たすためには、そのためのスクリプトを1日1回実行する必要があります。
一般にこれを実行するのは夜間がいいでしょう。スクリプトの実行は必ず1日1回だけとします。そうでないと同じメールを2度受けとることになってしまいます。
次のような行をDSpaceユーザの(root
のではありません)「crontab」に追加します。
# Send out subscription e-mail at 01:00 every day 0 1 * * * /dspace/bin/sub-daily
さあ、運命の分かれ道です。ApacheとTomcatを立ち上げて、サーバのベースURL、たとえば、http://dspace.myu.edu/ に接続してください。 きっとDSpaceのホームページが見られるしょう。おめでとう。
コミュニティとコレクションを設定するには、管理用画面にアクセスする必要があります。 そうするためには、サーバのURLに'admin'を加えて、たとえば、http://dspace.myu.edu/admin にアクセスします。 コミュニティとコレクションを新規に作成する際、そのコミュニティやコレクションを一般公開したいと思うなら、権限付与ツールを使って匿名グループにREAD権限を与える必要があることを思い出してください。 管理用画面の使用法についてはすぐ後の章で詳細に説明します。
ハンドルシステムのグローバル名前解決機能を使用したい場合は、ハンドルサーバを設定する必要もあります。ハンドルサーバはDSpaceに含まれています。 ただし、これはDSpaceの評価には必要ないことに注意してください。正式なサービスとして稼働させる場合にのみ必要になります。 ハンドルサーバを稼働するには、CNRIハンドルサイトからハンドルプレフィックスを得る必要があります。
実際に正式なハンドルプリフィックスをCNRIから得る前にも、DSpaceは新規に作成するコミュニティやコレクション、アイテムに一見ハンドルのように見える識別子を与えることができます。しかし、これは登録されたプリフィックスを持っていないので、実際はハンドルではありません。 この場合、DSpace上ではすべてが問題なく動きますが、唯一、アイテム表示ページの冒頭に表示されている識別子はURLとして使用できません。 たとえば、アイテムの表示ページの冒頭に「このアイテムへの引用やリンクには次の識別子を使用してください: http://hdl.handle.net/123456789/123」と書かれていたとします。これは実際にはウェブブラウザ上でURLとして機能しません。 ただし、DSpaceの検索機能を使ってアイテムを捜す際に、この識別子を使用することはできます。
ハンドルサーバは独立したプロセスとして稼働し、他のハンドルサーバからTCPリクエストを受け付けます。 また、ローカルから入力されたハンドルがローカルのコンテンツのものではない場合、世界中のサーバへ名前解決のためのリクエストを発行します。 ハンドルプロトコルはTCPに基づいていますので、ブロードキャストができ、2641番ポートでTCPを受信できるサーバにインストールする必要があります。
ハンドルサーバのプログラムはDSpaceコードツリーの /dspace/jsp/WEB-INF/lib/handle.jar
にあります。
簡単なハンドル設定ファイルを作成するスクリプトもあります。dspace.cfg
にあるパラメタを正しく設定してから、/dspace/bin/make-handle-config
を実行してください。
handle.netのサイトにあるインストール手順書に従ってハンドル設定ファイルを直接作成することもできますが、次のように変更する必要があります。
ハンドルサーバ管理ガイトにある次のコマンドを実行する代わりに
java -cp /hs/bin/handle.jar net.handle.server.SimpleSetup /hs/svr_1
次のコマンドを実行する必要があります。
/dspace/bin/dsrun net.handle.server.SimpleSetup /dspace/handle-server
/dspace/handle-server
をdspace.cfg
のhandle.dir
で設定した属性値に合わせるためです。
作成された/dspace/handle-server/config.dct
ファイルを修正して、"server_config"
節に以下の行を追加します。
"storage_type" = "CUSTOM" "storage_class" = "org.dspace.handle.HandlePlugin"
これによりDSpaceプログラムで与えられる個々のハンドルについての情報をハンドルサーバが得られるようになります。
どちらの方法を取った場合も、DSpaceユーザになって、ハンドルサーバを次のコマンドで立ち上げます: /dspace/bin/start-handle-server
。
なお、ハンドルサーバ説明書にあるように、sitebndl.zip
ファイルをhdladmin@cnri.reston.va.usに送る必要があります。
DSpaceプログラムが個々のハンドルを管理するので、ハンドルの作成や変更といった管理用の操作をDSpace附属のハンドルサーバはサポートしていないことに注意してください。
理想的には、上の手順に従えば完全に機能するDSpaceを得ることができます。 もちろん現実には、いつもうまくいくとは限りません。この節では、多くの人がDSpaceのインストールで遭遇するよくある問題をあげて、原因と対策を説明します。 私たちがユーザの経験について知るにつれ、この節の内容は豊かになっていくと思われます。
Tomcatの設定を変えてもエラーの内容が変わらない場合は、Tomcatが正常に終了されなかったためだと思われます。それで、おそらく起こりもしない失効したコネクションのクローズをいつまでも待っているのでしょう。これを確かめるには次のコマンドを実行して、TomcatのJavaプロセスを捜します。
ps -ef | grep java
Tomcatのshutdown.sh
スクリプトを実行してもまだプロセスが残っているようなら、killコマンドで(必要に応じて-9
オプションを付けて)プロセスを終了させます。そして、あらためてTomcatを立ち上げます。
DSpaceのウェブページにアクセスしてもいつまでたっても画面が現れない、あるいは、データベースコネクションに失敗する場合は、データベースコネクションの「ゾンビ」プロセスが残っていて、正常な操作を妨げていると思われます。 これを確かめるには、次のコマンドを実行します。
ps -ef | grep postgres
以下のような複数のプロセスがありますか。
dspace 16325 1997 0 Feb 14 ? 0:00 postgres: dspace dspace 127.0.0.1 idle in transaction
もしあれば正常です。DSpaceはコネクションの開閉に伴うオーバーヘッドを避けるためにオープンされたデータベースコネクションを「プール」して再利用しています。 「idle」状態にあっても大丈夫です。使用されるのを待っているだけです。 しかし、何か問題が生じると、クエリの途中で処理が止まり、そのために他のコネクションの動作を妨げる場合があります。その場合は、たとえば、次のように表示されます。
dspace 16325 1997 0 Feb 14 ? 0:00 postgres: dspace dspace 127.0.0.1 SELECT
この例では、SELECT
操作の途中であることを意味しています。もしこの時DSpaceを使用していなかったとしたら、おそらくそれは「ゾンビ」プロセスです。
この場合は、そのプロセスをkill
し、Tomcatを終了させてから、再立ち上げをしてください。