DSpace システム説明書: インストール

目次に戻る

インストールに必要なソフトウェア

以下はDSpaceサーバを稼働させるために必要なコンポーネントやツールをリストアップしたものです。これらはMITにおける私たちの構築経験に基づいた単なる推奨リストにすぎません。DSpaceはオープンソースの標準的なツールを使って構築されていますので、他にも多くの選択肢や構築法が存在します。

また、以下に示した特定のツールに関する設定やインストールのガイドラインは便宜上ここにあげたにすぎないことに注意してください。 最新の完全な内容については、個々のコンポーネントのドキュメントを参照してください。多くのツールは頻繁にバージョンアップされていますので、以下に示したガイドラインは最新版では正しくないかもしれません。

  1. UNIXライクなOS (Linux, HP/UX など)

  2. Java 1.4以降。(標準的なSDKでよく、J2EEは必要ない)

  3. Apache Ant 1.5以降。(Javaのmake類似ツール)

  4. オープンソースのリレーショナル・データベースであるPostgreSQL 7.3以降、あるいは、Oracle 9以上

  5. Jakarta Tomcat 4.x/5.x、あるいは、これに相当するもの。たとえば、JettyCaucho Resinなど。

    DSpaceはTomcatと同じユーザで実行する必要があることに注意すること。したがって、"dspace" ユーザでTomcatをインストールし、実行すると良いだろう。

    Tomcatは、(a)Dspaceを実行するだけの十分なメモリを持ち、(b)世界中の文字をサポートするためにデフォルトのファイル・エンコーディングとしてUTF-8を使用する必要がある。そのために、次の環境変数を起動時実行スクリプト(など)に設定しておく。

    JAVA_OPTS="-Xmx512M -Xms64M -Dfile.encoding=UTF-8"

    さらに、マルチバイトのUTF-8文字列の検索とブラウジングを正しくサポートするよう、Tomcatのデフォルト設定を変更する必要がある。[tomcat]/config/server.xmlにある<Connector>要素に次のオプションを追加する。

    URIEncoding="UTF-8"

    たとえば、Tomcatのデフォルト設定を使用している場合は、変更後、次のようになる。

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               URIEncoding="UTF-8" />

    JettyとResinは、はじめからUTF-8を正しく扱えるよう設定されている。

簡便なインストール手順

まず、ディレクトリ名とパス名の表記について

DSpaceは3つのディレクトリー・ツリーを使用します。DSpaceのインストールをするためには、それらの詳細の全てを知る必要はありませんが、その存在と、それがこの説明書で次のように表記されていることを知っておく必要があります。

各ディレクト・ツリーの詳細については、ディレクトリとファイルの章を参照してください。 ソースディレクトリとインストールディレクトリは常に分けておく必要があることに注意してください。

  1. DSpaceユーザを作成する。これは、Tomcat(あるいはJettyなど)を実行するユーザと同じでなければならない。rootになって、たとえば、次のように実行する。

    useradd -m dspace
  2. 最新のDSpaceソースコードリリースをダウンロードし、解凍する。

    gunzip -c dspace-source-1.x.tar.gz | tar -xf -
  3. PostgreSQL JDBCドライバ(.jar ファイル)を [dspace-source]/lib にコピーする。自分でPostgreSQLをコンパイルした場合、このファイルはpostgresql-7.x.x/src/interfaces/jdbc/jars/postgresql.jarにあるはずである。PostgreSQL JDBCサイトから直接ダウンロードすることもできる。その場合、実行するPostgreSQLのバージョン用で、かつJDBC2用のドライバを入手する必要がある。

  4. PostgreSQLユーザdspaceが所有する、dspaceデータベースを作成する。

    createuser -U postgres -d -A -P dspace ; createdb -U dspace -E UNICODE dspace

    DSpaceデータベースのパスワードを入力する。(これは、Unixのユーザdspaceのパスワードとは異なる。)

  5. [dspace-source]/config/dspace.cfgを編集する。特に、以下のプロパティを設定する必要があるだろう。

    dspace.url
    dspace.hostname
    dspace.name
    db.password   (前ステップで入力したパスワード)
    mail.server
    mail.from.address
    feedback.recipient
    mail.admin
    alert.recipient (必須ではないが、とても便利!)

    dspace.dirを変更した場合は、/dspaceで始まる値を持つプロパティ(たとえば、assetstore.dirlog.dirなど)も変更する必要があることに注意する。

  6. DSpaceをインストールするディレクトリを作成する。rootになり、以下を実行する。

    mkdir [dspace] ; chown dspace [dspace]

    (DSpaceの実行ユーザ名としてdspaceを仮定している。)

  7. dspaceユーザになって、DSpaceをコンパイルし、インストールする。

    cd [dspace-source] ; ant fresh_install

    ここで問題が発生する可能性が最も高いのはデータベース接続である。インストール上のよくある問題を参照のこと。

  8. DSpace Webアプリケーションアーカイブ(.war ファイル)を Tomcat/Jetty/Resin の該当するディレクトリにコピーする。たとえば、次のように実行する。

    cp [dspace-source]/build/*.war [tomcat]/webapps
  9. 1人目の管理者アカウントを作成する。

    [dspace]/bin/create-administrator
  10. さあ、運命の分かれ道である。Tomcatをスタート(あるいはリスタート)。サーバのベースURL(たとえば、http://dspace.myu.edu:8080/dspace)にアクセス。DSpaceのホームページが見えるはずだ。おめでとう。

コミュニティやコレクションを設定するために、管理用UIにアクセスする必要があるだろう。これをするには、サーバのURLに「admin」を追加する。たとえば、http://dspace.myu.edu:8080/dspace/dspace-admin である。

高度なインストール作業

上記のインストール手順はテストサーバを構築して試してみるには十分です。しかし、DSpaceの本番運用を始める前には、おそらく、さらなるインストール作業や選択肢を検討する必要があります。

"cron"ジョブ

DSpaceの機能には定期的にスクリプトを実行する必要があるものがあります。新しいアイテムがデポジットされたことをユーザに通知するメール購読機能や、画像のサムネイル作成やインデックス作成のために文献からテキストを抽出する新ツール「メディアフィルター」などです。

これらを設定するには、dspaceユーザになって、以下のコマンドを実行するだけです。

crontab -e

そして、以下の行を追加します。

# Send out subscription e-mails at 01:00 every day            (訳注: 毎日 01:00 に購読メールを送信する)
0 1 * * * [dspace]/bin/sub-daily
# Run the media filter at 02:00 every day                     (訳注: 毎日 02:00 にメディアフィルターを実行する)
0 2 * * * [dspace]/bin/filter-media

もちろんあなたの環境に合わせて頻度を変更すべきです。

PostgreSQLには定期的な "vacuum" 処理が、効果があります。これは、インデックスを最適化し、削除されたデータを一掃します。postgresユーザになって、crontab -eを実行し、(たとえば)以下の行を追加します。

 
# Clean up the database nightly at 2.40am                     (訳注: 毎晩、午前2:40にデータベースをvacuum)
40 2 * * * vacuumdb --analyze dspace > /dev/null 2>&1

統計レポートを定期的に作成し、最新にしておくためには、次のようなcronジョブを設定する必要があります。

# Run stat analyses                                           (訳注: 統計分析を実行)
0 1 * * * [dspace]/bin/stat-general
0 1 * * * [dspace]/bin/stat-monthly
0 2 * * * [dspace]/bin/stat-report-general
0 2 * * * [dspace]/bin/stat-report-monthly

もちろん、実行開始時間には最も都合のよい時間を選択するべきです。また、分析用スクリプトの終了後少し経ってから-report-スクリプトが実行されるようにしなければなりません(8か月分程度のログを処理するには25秒ほどかかります)。作成されたレポートから分析にどのくらいの時間を要したかがわかりますので、それにより開始時間を調整することができます。

統計レポートの出力項目のカスタマイズについては、統計レポートの設定を参照してください。

HTTPS経由のDSpace

古い単なるHTTPはまったく安全ではありません。DSpaceでユーザ名とパスワードによる認証を使用する場合、あるいは、アクセス制限のあるコンテンツを格納する場合は、HTTPS(HTTP over a Secure Socket Layer (SSL))上でDSpaceを稼動させることを勧めます。 これを実現するには2つの方法があります。Apache HTTPDを使用する方法と、TomcatとJettyが持つHTTPSサポート機能を使用する方法です。

Apache HTTPDの使用法: DSpaceのソースツリーにはApache設定ファイルの断片である apache13.confが含まれています。このファイルにはDSpaceの稼動に必要なほとんどの設定が書かれています。ただし、mod_webappの使用を仮定しています。これは、非推奨であり、コンパイルにこつがいりますが、Tomcatで現在推奨されているmod_jk2より設定がはるかに簡単です。このファイルの使用は必須ではありません。1つの例として参考にするだけでもかまいません。 Apacheの設定ファイルhttpd.confに直接使用する場合は、以下の点に注意してください。

TomcatあるいはJettyのHTTPSサポート機能の使用法については、該当するツールのドキュメントを参照してください。

ハンドルサーバ

まず、一般的な誤解を晴らすためにいくつかの事実を紹介します。

ハンドルシステムを使用したい場合は、ハンドルサーバを設定する必要があります。ハンドルサーバはDSpaceに含まれています。これはDSpaceの評価目的には必要のないものであることに注意してください。本番運用の際に必要になるだけです。CNRIハンドルサイトからハンドル・プリフィックスを得る必要があります。

ハンドルサーバは独立したプロセスとして稼働し、他のハンドルサーバからTCPリクエストを受け付けます。また、ローカルから入力されたハンドルがローカルのコンテンツのものではない場合、世界中のサーバへ名前解決のためのリクエストを発行します。ハンドルプロトコルはTCPに基づいていますので、ブロードキャストができ、2641番ポートでTCPを受信できるサーバにインストールする必要があります。

ハンドルサーバのプログラムはDSpaceコードツリーの[dspace-source]/lib/handle.jar にあります。簡単なハンドル設定ファイルを作成するスクリプトもあります。dspace.cfgの該当するパラメタを設定してから、 [dspace]/bin/make-handle-config を実行してください。 handle.netのサイトにあるインストール手順書に従ってハンドル設定ファイルを直接作成することもできますが、次のように変更する必要があります。

どちらの方法を取った場合も、DSpaceユーザになって、ハンドルサーバを次のコマンドで立ち上げます: [dspace]/bin/start-handle-server 。設定ファイルが作成されたら、http://hdl.handle.net/4263537/5014にアクセスし、作成された sitebndl.zip ファイルをアップロードする必要があります。アップロードページではあなたの連絡先を聞かれます。ファイルがアップロードされると、管理者は(Global Handle Registryとして知られている)ルートサービスにあなたの機関のネーミング・オーソリティ(プリフィックス)を作成し、作成したネーミング・オーソリティをあなたに通知します。あなたの機関のネーミング・オーソリティに関する情報を受け取るまではハンドルサーバのインストールを続けることはできません。

DSpaceプログラムが個々のハンドルを管理するので、ハンドルの作成や変更といった管理用の操作をDSpace附属のハンドルサーバはサポートしていないことに注意してください。

インストールのチェック

未稿

既知のバグ

DSpaceのような規模のソフトウェアプロジェクトにはバグはつきものです。しばしば、安定版のDSpaceには既知のバグが含まれています。既知のバグがすべて修正されるまで、常に、リリースを待つわけではありません。ソフトウェアが十分安定しており、以前のリリースより進歩があり、バグが致命的なものではなく、その回避法が分かっていれば、これらの進歩の利点をコミュニティが利用できるように、我々はソフトウェアをリリースします。

リリースにある既知のバグはソースパッケージの中にあるKNOWN_BUGSファイルに記載されています。

現在のバグに関する情報やその後に修正されたバグを知るにはDSpaceバグトラッカー を参照してください。ここは、あなたが見つけた新たなバグを報告できる場所でもあります。

よくある問題

理想世界では、上の手順に従えば誰でも完全に機能するDSpaceを得ることができます。しかし言うまでもありませんが、現実世界ではいつもうまくいくとは限りません。この節では、多くの人がDSpaceのインストールで遭遇するよくある問題を挙げて、原因と対策を説明します。私たちがユーザの経験を知るにつれ、この節の内容は豊かになっていくと思われます。

ant fresh_installを実行した際に、データベースエラーが生じる

よく発生するエラーには2種類あります。次のようなエラーであれば、

[java] 2004-03-25 15:17:07,730 INFO  org.dspace.storage.rdbms.InitializeDatabase @ Initializing Database
[java] 2004-03-25 15:17:08,816 FATAL org.dspace.storage.rdbms.InitializeDatabase @ Caught exception:
[java] org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
[java]     at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:204)
[java]     at org.postgresql.Driver.connect(Driver.java:139)

通常、PostgreSQLの設定ファイルに適切なパラメータ(上記を参照)を追加していないか、設定の変更後にPostgreSQLをリスタートしていないことを意味します。また、[dspace-source]/config/dspace.cfgdb.usernamedb.passwordプロパティが正しく設定されているかも確認してください。

データベースがTCP/IP上で正常に稼動しているかどうかを簡単にチェックする方法は、これをコマンドラインで実行してみることです

psql -U dspace -W -h localhost

データベース上のdspaceユーザのパスワードを入力します。正常であれば、dspace=>プロントを持つpsqlツールに入るはずです。

もう一つのよくあるエラーは次のようなものです。

[java] 2004-03-25 16:37:16,757 INFO  org.dspace.storage.rdbms.InitializeDatabase @ Initializing Database
[java] 2004-03-25 16:37:17,139 WARN  org.dspace.storage.rdbms.DatabaseManager @ Exception initializing DB pool
[java] java.lang.ClassNotFoundException: org.postgresql.Driver
[java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
[java]     at java.security.AccessController.doPrivileged(Native Method)
[java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:186)

これはPostgreSQL JDBCドライバが[dspace-source]/libにないことを意味しています。上記を参照してください

Tomcatが終了しない

Tomcatの設定を変えてもエラーの内容が変わらない場合は、Tomcatが正常に終了されなかったためだと思われます。それで、おそらく失効したコネクションのクローズをいつまでも待っているのでしょう。コネクションは永久にクローズされません。これを確かめるには次のコマンドを実行して、TomcatのJavaプロセスを捜します。

ps -ef | grep java

Tomcatのshutdown.shスクリプトを実行してもまだプロセスが残っているようなら、killコマンドで(必要に応じて-9オプションを付けて)プロセスを終了させます。そして、あらためてTomcatをスタートさせてください。

データベースに接続できない、あるいは、いつまでたってもDSpaceにアクセスできない

DSpaceのWebページにアクセスしてもいつまでたっても画面が現れない、あるいは、データベースの接続に失敗する場合は、データベースコネクションの「ゾンビ」プロセスが残っていて、正常な操作を妨げていると思われます。これを確かめるには、次のコマンドを実行します。

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を終了させてから、リスタートしてください。

プログラムあるいはJSPに変更を加え、DSpaceの再構築には成功したが、Tomcatを実行しても、変更点がDSpaceに反映していない。

DSpaceを再構築し、[dspace-source]/buildディレクトリからdspace.war[tomcat]/webappsディレクトリにコピーした後、Tomcatをリスタートするに、既存の[tomcat]/webapps/dspaceディレクトリを削除しなければなりません。そうしないと、Tomcatは古いプログラムを使い続けることになります。


Copyright © 2002-2005 MIT and Hewlett Packard