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


0 件のコメント:

コメントを投稿