2015年6月30日火曜日

dcm4cheeの新バージョンをインストール

今回インストールしたdcm4cheeのバージョンは2.17.1ですが,それ以外にも新しいバージョンとして2.17.2,2.17.3,2.18.0,2.18.1が公開されている.
http://sourceforge.net/projects/dcm4che/files/dcm4chee/
そこで,各バージョンを下記のディレクトリ階層に従ってインストールして,インストール手順の違いをドキュメントにまとめる.





ただし,同時に/usr/local/dcm4chee/へシンボリックリンクを張ることはできないので,インストールが完了したバージョンから順番にシンボリックリンクを張り,テストを行う.

問題点

バージョンアップで問題が発生した.WADOサービスが起動できないという問題で,これはdcm4cheeにバンドルされているJAI image IO libraryが32bit版であることに起因するもので,64bit版を下記のサイトからダウンロードして置き換える必要があるというものだった.

http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-amd64.tar.gz
ところが,このリンクがデッドリンクになっていたため,ダウンロードできない.前回(6/24)やったときは確かにあったのに,あれから1週間でリンク先がなくなっている.これはいったいどういうことだろう?

幸い,先週ダウンロードしたのが残っていたので,それをGoogleドライブのPACSフォルダ内にあるSoftwareフォルダに保存しておいた.必要なときはこれを使うことにする(しかし,64bit版のOSにインストールする人は困るだろうな・・・.それとも,dcm4cheeの新しいバージョンは64bit版のJAI
をバンドルしているのだろうか?あるいは最新のJDKにはJAIあるいはそれに代わるライブラリがあるのだろうか?この辺りについての情報収集が必要だ).

2015年6月24日水曜日

エラーを修正し、インストール作業を続行する

前回のエラーについては詳細に記述したので、それに従って修正を行います。dcm4cheeが正しく作動するようになったら、今度はサービスとして実行するように設定します。サービスとして設定する理由は、今のままだとdcm4cheeを起動するためにシステムにログインして起動コマンドを入力しなければならないからです。さらに、ログアウトすると同時にdcm4cheeも終了してしまいます。これでは、サーバとして使えません。ですから、サーバが再起動しても自動的にdcm4cheeが起動されるようにサービスとして起動するように設定するのです。Linuxでは、サービスのことをデーモンと呼びます。

18. Install as a service:

さあ、では、マニュアルの”18. Install as a service:”に従って設定を行います。とは言っても、このマニュアルに書いてあるのはたったこれだけです。
copy the init script dcm4chee_init_redhat.sh to /etc/init.d/ and adjust it according your installation location of the archive and the JDK and under which user the archive application shall run.
これでは、正直何をしていいのかわかりませんので、ここで詳細に説明します。
まず、起動スクリプト$DCM4CHEE/bin/dcm4chee_init_redhat.shを/etc/init.d/へコピーします。
# cp $DCM4CHEE/bin/dcm4chee_init_redhat.sh /etc/init.d/
次に、この起動スクリプトを環境に合わせて編集します。起動スクリプトファイルをviエディタで開くと、次のような記述が24行目あたりにあります 。
#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"pacs"}

#make sure java is in your path
JAVAPTH=${JAVAPTH:-"/usr/java/jdk/bin"}
まず、JBossがどのユーザ権限で実行するかを指定する環境変数がJBOSS_USERです。ここでは、RUNASISを指定して現在のユーザで実行することにします。
 次に、JAVAPTHですが、これはJAVAのbinディレクトリを指定する環境変数なので、$JAVA_HOME/binを指定することにします。編集が終わったら保存し、次のようにしてシンボリックリンクを作成します。
# ln -s dcm4chee_init_redhat.sh dcm4chee
これは、起動スクリプトの名前が長いので簡潔にするための作業です。次に、作成したシンボリックリンクを自動起動させるために次のコマンドを入力します。
# chkconfig --add dcm4chee
# chkconfig dcm4chee on
ここで、chkconfigは、サービス自動起動を設定するコマンドです 。--addオプションでコマンドを追加すると、/etc/rc.d/rc3.d/内にSで始まる起動コマンドが作成されます(実際には/etc/rc.d/init.d/dcm4cheeへのシンボリックリンクです)。次のchkconfig dcm4chee onは、現在のRUNレベル(マルチユーザモード)で再起動時に自動起動する設定です。こうして設定が完了したら、次のコマンドでサービスを起動します。
# service dcm4chee start
 サービスを停止するには、stop、再起動するにはrestartとオプションを入力します。以上でサービスとして起動する設定は終わりです。

完成


これで,PACSサーバの構築が完成しました.早速ブラウザでPACSビューアを起動してみます.URLは以下の通りです.
 http://172.16.108.100:8080/dcm4chee-web3/
しかし,weasisが起動しません.調べてみるとjavaが入っていません.javaが入っているかどうかはコマンドプロンプトで
java -version
とすればわかります.コマンドが認識されなければjavaは入っていません.javaの公式サイトからダウンロードします.
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
javaのダウンロードは複雑です.何をダウンロードすればよいのかわかりにくいです.ここでは,JDKをダウンロードします.JDKとはjavaの開発キットです.weasisを動かすだけならばJRE(javaランタイム)だけでもいいのですが,ここでは開発キットをインストールしました.上記サイトから32bitのOSならWindows x86を,64bitのOSならばWindows x64をダウンロードします.

2015年6月17日水曜日

ERRORのオンパレード

dcm4cheeをインストールして動作テストを行ったが,ERRORのオンパレードで少々混乱気味.ここで,少し整理する.

画像が出ない

dcm4cheeのWebブラウザから画像アイコンをクリックしても画像が表示されない.ログを見ると次のようなエラーがでていた.
23:55:20,286 ERROR [WADOServiceDelegate] Exception occured in getWADOObject: dcm4chee.archive:service=WADOService is not registered.
このエラーを手掛かりに検索したところ,起動時の以下のエラーが原因らしい.
02:13:33,238 ERROR [MainDeployer] Could not create deployment: file:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/deploy/dcm4chee-wado-service.xml
このエラーメッセージを検索すると,下記URLにたどりついた.
http://stackoverflow.com/questions/18673556/install-dcm4chee-on-centos
この中に次のような記述があった.
In short: The problem is WADO service unable to start due to the JAI Image IO library not being properly installed.
ここで,JAI Image IO library画像圧縮関連のライブラリのようで,このバージョンが関係しているらしい.
You should download the 64 bit version of the library for Linux, extract the files and replace just the original (32 bit) ones from those that you downloaded.
この記述によれば32bit版のライブラリを使っていることになっているが,どうしてそんなことになったのだろうか?javaのバージョンは以下のとおりである.
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.3.el6_6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
見てのとおり64bit版だ.では,ライブラリは?そもそもdcm4cheeに32bit版とか64bit版なんてあったか?あるいはJBossには? そんなものはない.では,どうしてJAI image IO libraryが32bit版になったのか?そもそもどうやって確認するのか?
正規のマニュアルでは, dcm4cheeとは別にJAI image IO libraryをインストールしている場合は以下のファイルを消せと書いている.
  • $DCM4CHEE_HOME/server/default/lib/jai_imageio.jar
  • $DCM4CHEE_HOME/server/default/lib/clibwrapper_jiio.jar
  • $DCM4CHEE_HOME/bin/native/clib_jiio.dll
  • $DCM4CHEE_HOME/bin/native/clib_jiio_sse2.dll
  • $DCM4CHEE_HOME/bin/native/clib_jiio_util.dll
  • $DCM4CHEE_HOME/bin/native/libclib_jiio.so
もちろんそんなことをした覚えはない.一方,先述したInstall dcm4chee on CentosではJAI image IO libraryの64bitバージョンをダウンロードして以下のファイルをコピーしろと書いてある.
$ cp clibwrapper_jiio.jar $DCM4CHEE_HOME/server/default/lib
$ cp jai_imageio.jar $DCM4CHEE_HOME/server/default/lib
$ cp libclib_jiio.so $DCM4CHEE_HOME/bin/native
一体どちらに従えば良いのか?
調べていくうちに次第に原因がわかってきた。今回使用しているIntel NCUは64bitであるが、dcm4cheeのマニュアルにこういう記載がある。

  • The binary distribution packages of dcm4chee already includes necessary JARs and native libraries for Windows and Linux i586.
つまり、Linux i586(これはPentium用の32bit)用のnativeライブラリが含まれているということである。そして、次のように書いてある。
  • For Linux-amd64, and Solaris, you have to download the SW package from Sun here yourself and replace the Linux version of libclib_jiio.so in dcm4chee-2.17.1-xxx/bin/native from the JAI Image IO package for Linux-amd64 or Solaris. Or see this post for a more recent version.
Linux-amd64(これが64bitを意味している?Ubuntuの世界ではamd64は64bitを意味しており、IntelでもOKということだが・・・)の場合は、64bit版のlibclib_jiio.soをダウンロードして差し替えなければならないと書いてある。

解決方法

やはり,原因は32bitと62bitの不整合だった.dcm4cheeに含まれているのは32bit版なので,64bit版をDLして差し替える必要がある.DLするのはjai_imageio-1_1-lib-linux-amd64.tar.gz. wgetで取ってきてtarで解凍.その中に下記のファイルがある(2015/7/1時点でデッドリンクになっている).
  • jai_imageio-1_1/lib/jai_imageio.jar
  • jai_imageio-1_1/lib/clibwrapper_jiio.jar
  • jai_imageio-1_1/lib/libclib_jiio.so
このうち,最初の2つは$DCM4CHEE_HOME/server/default/lib/へ,最後のは$DCM4CHEE_HOME/bin/native/へ上書きコピーするだけでよい.$DCM4CHEE_HOME/bin/native/にあるDLLファイルはWindows用だと思われるので削除して構わない.これでWebインターフェースから画像が表示されるようになった.

weasisが動かない

weasisをdeployしたとき,次のエラーメッセージが出る.
23:59:28,507 ERROR [STDERR] SLF4J: Class path contains multiple SLF4J bindings.
これは前にも経験した.前はdcm4cheeを2.17.1から2.17.3あるいは2.18.0にバージョンアップすることによって解決した.しかし,それでは根本的に解決したことにはならないので,少し調べてみた.
http://www.slf4j.org/codes.html#multiple_bindings
ここには次のような説明がある.
SLF4J API is designed to bind with one and only one underlying logging framework at a time. If more than one binding is present on the class path, SLF4J will emit a warning, listing the location of those bindings.
実際,ログには次のようなエラーメッセージが残っている.
  • 16:35:09,486 ERROR [STDERR] SLF4J: Class path contains multiple SLF4J bindings.
  • 16:35:09,486 ERROR [STDERR] SLF4J: Found binding in [jar:file:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  • 16:35:09,486 ERROR [STDERR] SLF4J: Found binding in [jar:file:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/tmp/deploy/tmp2488711561556272726weasis-pacs-connector-exp.war/WEB-INF/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  • 16:35:09,487 ERROR [STDERR] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  • 16:35:09,491 ERROR [STDERR] SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
このログから,slf4j-log4j12-1.6.1.jarが重複していることがわかる.一つは$DCM4CHEE_HOME/server/default/lib/内にあるもので,もう一つはdeployしたweasis-pacs-connector-exp.warである./org/slf4j/impl/StaticLoggerBinder.classというクラスが重複しているらしい.そこで,$DCM4CHEE_HOME/server/default/lib/内のを削除すると,今度は別のエラーが出た.
17:01:48,988 ERROR [STDERR] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
17:01:48,990 ERROR [STDERR] SLF4J: Defaulting to no-operation (NOP) logger implementation
17:01:48,990 ERROR [STDERR] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
こんどは,org.slf4j.impl.StaticLoggerBinderがロードできないという.
諦めてネットを検索していると「Weasis deployment problem」というサイトに次のような記述があった.
This error doesn't have any consequence. This is because SLF4J already exists in the dcm4chee-jboss.
You can simply unzip weasis-pacs-connector.war and remove slf4j-api-1.6.1.jar, logback-classic-0.9.29.jar and logback-core-0.9.29.jar, and then zip it again.
これにしたがって,weasis-pacs-connector.warを作り直してみた.ただし,logback-*というjarファイルはなかったのでslf4j-api-1.7.5.jarだけを削除してjarコマンドでwarファイルを作成した.なお,jarコマンドが入っていなかったので,次のコマンドでインストールした.

# yum install java-1.7.0-openjdk-devel
また,slf4j-api-1.7.5.jarはWEB-INF/lib/の中に入っていたのでそれを削除した後,次のコマンドでwarファイルを作成した.
# jar cvf weasis-pacs-connector.war *
 なお,このコマンドはwarファイルを展開したディレクトリ上で実行した.こうしてdcm4cheeを再起動すると,今度はweasisが動いた.ただし,Webインターフェースで「Open Web Viewer」をクリックしなければならない.目のアイコンではなく左から3つ目のアイコンをクリックしなければならない.先入観で目のアイコンと思い込んでいたためにこのような結果となった.

echoが通らない

dcm4cheeのWebインターフェース画面のAEタイトルを新規作成するところで"Choose one"で"-"を選択しないとエラーになる.こんな簡単なことだけれどそのときは分からなかった.また,iptablesで11112と11113に穴をあけておかなければならない(11113はdcmrcvなので不要かな・・・).

K-Pacsで画像のDLできない

実はできた.ただし,動きがおかしい.エラーメッセージが出るが実は転送できている・・・.動きが良くわからない.使い物にならないのは事実.

Sycoraxで画像がDLできない.

K-Pacsと違って全くDLできない.そもそもSycoraxは転送をサポートしているのだろうか?

dcm4cheeのwebインターフェースに転送先AEを選択するコンボボックスが表示されない

そもそも,そんなコンボボックスはあったのか?

PACSのテスト

前回PACSサーバdcm4cheeをインストールし,起動するところまでやりました.ただし,パケットフィルタリングiptablesがポート8080をブロックしていたため,クライアント(Webブラウザ)から接続することができませんでした.今日はiptablesの設定を変更してポート8080に穴をあけ,dcm4cheeのテストを行います.iptablesの設定については「iptablesの設定方法」や「CentOS iptablesによるパケットフィルタ」が参考になります.
さて,今日の作業内容は以下の通りです.
  • 9 インストールしたPACSサーバのテスト
  • 10 Webブラウザからのログイン
  • 11 JMXコンソールからのログイン
  • 16 DICOMストレージのテスト
  • 17 検索テスト
  • 18 サービスとしてインストール
JMXコンソールとは,JBossを構成するコンポーネントの機能を変更したり,停止したりするためのユーザーインタフェースです.11では,JMXコンソールを使ってストレージアーカイブのディレクトリを設定します.デフォルトは/usr/local/dcm4chee/server/default/archiveです.
DICOMストレージのテストでは,構築したPACSサーバへDICOM画像を転送します.SCU(転送プログラム)にはDICOMツールキット(dcm4che)を使います.転送後,Webインターフェースで画像を検索して表示します.
同様にしてDICOMツールキットのdcmrcvを使って画像の検索を行います.
最後にPACSサーバをサービスとして起動するように設定します.CentOSでは,起動スクリプトを/etc/init.d/へ保存することになっています.起動スクリプトはdcm4chee_init_redhat.shです.ただし,このスクリプトは2点修正が必要です.

JBOSS_USER=${JBOSS_USER:-"pacs"}
 → JBOSS_USER=${JBOSS_USER:-"RUNASIS"}
JAVAPTH=${JAVAPTH:-"/usr/java/jdk/bin"}
 → JAVAPTH=${JAVAPTH:-"/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/"}
 しかし,これだとJAVAPATHがJDK7に固定されてしまう./usr/binでやってみようか・・・.
最後に, dcm4chee_init_redhat.shのシンボリックリンクdcm4cheeを作成する.
ln -s dcm4chee_init_redhat.sh dcm4chee
これでスクリプト名を簡潔にできる. chkconfigで自動起動設定をして起動する.
chkconfig --add dcm4chee
chkconfig dcm4chee on
service dcm4chee start
ログは以下のコマンドで参照できる.
# tail -f /usr/local/dcm4chee/server/default/log/server.log



2015年6月10日水曜日

いよいよPACSを完成させるぞ!

今日は先週に引き続き,Dcm4Cheeのインストールを行います.今日はインストールマニュアルの「5. Deploy the Audit Record Repository (ARR)」からです.そもそもこのARRとはいったい何でしょう?マニュアルには次のように書かれています.
The ARR maintains an audit log of all transactions within the archive. This is necessary for HIPAA and IHE. 
どうやらHIPPA(米国の医療保険の相互運用性と説明責任に関する法律)やIHE(DICOMとHL7などの既存の規格を使用して、病院内の医療情報システムを統一的に運用するためのガイドライン作成と普及を目指す運動)の要件のようです.監査ログを維持するための機能なのでしょうか・・・.

5. Deploy the Audit Record Repository (ARR)


さて,まずはパッケージのダウンロードです.MySQL版dcm4chee-arr-3.0.11-mysql.zipをダウンロードしてきます. PCにダウンロード後,サーバへWinSCPでアップロードします.アップロード先はユーザのホームディレクトリです.アップロードできたらunzipコマンドを使って解凍します.
$ unzip dcm4chee-arr-3.0.11-mysql.zip
解凍すると,ホームディレクトリにdcm4chee-arr-3.0.11-mysqlというディレクトリができますが,この中から必要なファイルをdcm4cheeへコピーします.そのためには,まず,dcm4cheeのbinディレクトリへ入り,その中でinstall_arr.shというスクリプトを,先ほどのdcm4chee-arr-3.0.11-mysqlというディレクトリをパラメタとして実行します.以上をまとめると
# cd /usr/loca/dcm4chee/bin
# ./install_arr.sh /home/ユーザ名/dcm4chee-arr-3.0.11-mysql
となります.なお,この操作は管理者権限で行います.

6. Set environment variable JAVA_HOME to JDK location.

次は,環境変数JAVA_HOMEの設定です.環境変数とは,シェルスクリプトなどで用いる変数で,そのコマンドやライブラリがどのディレクトリ(パス)にあるかを指定したものです.有名なものにPATHというのがあります.echoコマンドを使って環境変数PATHに設定されている内容を見ることができます.
$ echo $PATH
今回は,javaの環境が置かれているパスをJAVA_HOMEという環境変数に設定します.
さて,そのjavaが置かれているところですが,どこでしょう?
それは,whichコマンドを使って調べることができます.whichコマンドは,そのコマンドがどのディレクトリにあるかを教えてくれるコマンドです.
# which java
/usr/bin/java
この実行結果が示すように,javaは/usr/bin/javaであることがわかりました.では,/usr/bin/javaをlsコマンドで見てみましょう.
# ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22  5月 27 23:57 2015 /usr/bin/java -> /etc/alternatives/java
この結果から, /usr/bin/javaはシンボリックリンクで,/etc/alternatives/javaへリンクしていることがわかります.同様に/etc/alternatives/javaをlsコマンドで調べると次のようになります.
# ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 46  5月 27 23:57 2015 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
やはり,/etc/alternatives/javaもシンボリックリンクで,/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/javaへリンクしています.三度これをlsすると,次のようになりました.
# ls -al /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
-rwxr-xr-x 1 root root 9904  5月 14 16:48 2015 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
この結果から/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/javaはリンクではなく,実体であることがわかります.よって,JAVA_HOMEは/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/ということになります(binが含まれていないことに注意してください).
さて,JAVA_HOMEへ設定する内容がわかったところで,これはいったいどこで設定すればよいのでしょう?実は,環境変数はログイン時に実行されるスクリプトで設定することになっています.PATHなどもそうです.そして, ログイン時に実行されるスクリプトが/etc/profileなのです.このファイルをviで編集して,以下の2行を追加します.
#vi /etc/profile
JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export JAVA_HOME
追加する場所は,export PATH ...の前あたりで良いでしょう.以上で,JAVA_HOMEの設定は完了です.ファイルを上書き保存していったんログアウト後,再度ログインしてください.そのうえで,echo $JAVA_HOMEとすれば,設定したパスが表示されるはずです.
 # echo $JAVA_HOME
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64

 9. Test the installation:

インストールは完了しました.いよいよテストです.次の操作でdcm4cheeを起動します.
# cd /usr/local/bin
# ./run.sh
ところが途中でエラーが発生して起動しません.
Could not create deployment: file:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/conf/jboss-service.xml
対処法をネットで検索したところ,「JBOSSが起動しないときは」というサイトに,/etc/hostsファイルへホスト名とローカルホストのIPアドレス127.0.0.1の対応を書けば良いとあったので,早速次のように編集しました.
# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 semi2014pacs
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/hostsを上書き保存して再びdcm4cheeを起動すると今度はちゃんと起動しました.
02:42:08,354 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 41s:565ms
いよいよ,ブラウザから接続テストをすると,つながりません.
http://ホスト名 or IP:8080/dcm4chee-web3/
調べてみると,iptablesでポート8080に穴をあけていませんでした.
 # iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
そのためにdcm4cheeへパケットが送られていないのだろう,ということでこの日は終わりにしました.次回はiptablesの設定から始めることにします.

参考 iptables

iptablesはLinuxで標準的に使われているパケットフィルタリング型のファイアウォールです。ポートの開閉を設定して外部からの不正なアクセスをブロックします。iptablesの解説や設定方法については、例えば「iptablesの設定方法」や「CentOS iptablesによるパケットフィルタ」を見てください。なお、iptablesのルールは以下のファイルに書きます。
/etc/sysconfig/iptables


2015年6月3日水曜日

PACSサーバのインストール

今日は,PACSサーバDcm4Cheeのインストール作業をインストールマニュアルに従って行いました.Dcm4Cheeのバージョンは,マニュアルに従って2.17.1としました.今日は,Step4のデータベースソフトのインストールとデータベースDCM4CHEEの作成までを行いました.今回はMySQLを使っています.

インストール手順

1. dcm4cheeパッケージのバイナリ配布をダウンロードして展開する

 dcm4cheeはSourceForgeサイトから入手する.ダウンロードするのはdcm4chee-2.17.1-mysql.zip.いったん,パソコンにダウンロードしてWinSCPでサーバにアップロードする.アップロード先は一般ユーザアカウントのホームディレクトリ.展開はunzipコマンドを使う.

2.  JBoss Application Server 4.2.3.GAパッケージのバイナリ配布パッケージをダウンロードする

インストールマニュアルサイトのダウンロードリンクがデッドリンクになっているのでGoogleで「JBoss Application Server 4.2.3.GA」 を検索して見つけたSourceForgeサイトからjboss-4.2.3.GA.zipをダウンロードした.これもパソコンにダウンロードしてWinSCPでユーザアカウントのホームディレクトリへアップロードした.そして,unnzipコマンドを使って展開した.
この段階で,ユーザホームディレクトリ(/home/ユーザ名/)に以下のフォルダがある.

dcm4chee-2.17.1-mysql
jboss-4.2.3.GA
ところで,dcm4cheeを動かすためにはJDKが必要であるが, CentOS6.6には最初からjava-1.6.0-openjdk.x86_64とjava-1.7.0-openjdk.x86_64が入っている.java -versionでバージョンを調べると1.7.0_79になっていた.javaのフォルダ構造は複雑で,次のようになっている.
/usr/bin/java → /etc/alternatives/java → /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

3. JBossからdcm4cheeへファイルをコピーする

JBossはjavaアプリケーション(この場合はdcm4chee)のアプリケーションサーバである.このステップでは,dcm4cheeの中にそのアプリケーションサーバを組み込んでjavaアプリケーションが動くようにする.この作業はshell化(自動化)されており,dcm4chee-2.17.1-mysql/bin内のinstall_jboss.shをJBossのディレクトリを引数にして実行すればよい.
$ cd ~/dcm4chee-2.17.1-mysql/bin
$ ./install_jboss.sh ~/jboss-4.2.3.GA
 これで,必要なJBossファイルがdcm4cheeへコピーされる.

4.  データベースソフトウェアをインストールしてDCM4CHEEデータベースを作成する

今回使うデータベースソフトはMySQLなので,MySQLのインストールマニュアルへ進む.
まず,MySQLサーバをインストールしなければならない.これにはyumコマンドを使う.それに先立って,MySQLサーバがインストールされていないことを確認する.
# yum list installed | grep mysql
表示結果にmysql-serverがなければインストールされていない.その場合は以下のようにしてインストールする.
# yum install mysql-server
インストールできたら,自動起動の設定をしておく.
 # chkconfig mysqld on
 その後,MySQLサーバを起動する.
# service mysqld start
 既に起動している場合はエラーになるので,その場合はMySQLを再起動する.
# service mysqld restart
まず,管理者(root)のパスワードを設定する.
# /usr/bin/mysqladmin -u root password 'パスワード'
次に,pacsdbという名の空のデータベースを作成し,そのデータベースのユーザアカウントとパスワードを設定する.この作業はmysqlコマンドでmysqlクライアントから行う.
# mysql -uroot -p<root password>
mysql> create database pacsdb;
mysql> grant all on pacsdb.* to 'pacs'@'localhost' identified by 'pacs';
mysql> \q
 最後にテーブルを作成する.テーブル作成SQLは,~/dcm4chee-2.17.1-mysql/sql/create.mysqlなので,
# cd ~/dcm4chee-2.17.1-mysql/sql/
# mysql -upacs -ppacs pacsdb < create.mysql
とする.これでテーブルが作成されるので,mysqlコマンドで会話モードに入り,
show tables;
と入力すれば作成されたテーブルが確認できる.
最後にARRデータベース(audit record repository)の作成だが,これはマニュアルで作らなくとも最初に起動したときに自動的に作られるらしいので何もしない.

さて,ここまででデータベースが出来上がったわけだが,アプリケーションを一般的に配置される/usr/localディレクトリへ移動させる. ユーザホームディレクトリに作成したフォルダdcm4chee-2.17.1-mysqlをそのまま/usr/local/へ移動してもいいのだが,ここはdcm4cheeのバージョン管理を行うために,/usr/local/app/というディレクトリを作成し,その中にdcm4chee-2.17.1-mysqlを移動し,/usr/local/dcm4chee/からシンボリックリンクを張ることにする.そうすれば,今後dcm4cheeのバージョンを上げても,このシンボリックリンクを変更するだけで対応できる.
# cd /usr/local
# mkdir app
# mv /home/<user-name>/dcm4chee-2.17.1-mysql /usr/local/app/
# ln -s /usr/local/app/dcm4chee-2.17.1-mysql /usr/local/dcm4chee