记录一次linux环境下,dcm4chee 5.10版本+mariaDB的安装

2,469 阅读4分钟

安装所需应用及版本

dcm4chee-arc 相关配置

  • 解压并且配置环境变量
    unzip dcm4chee-arc-5.10.0-mysql.zip
    #打开环境变量配置文件
    vi ~/.bash_profile
    #加入下面的配置
    DCM4CHEE_ARC=/opt/dcm4chee-arc-5.10.0-mysql(解压文件的目录)
    export DCM4CHEE_ARC
    #重新加载配置文件
    source ~/.bash_profile
    

安装jdk

    sudo yum install java

安装数据库

  • 安装
    yum -y install mariadb mariadb-server
  • 创建对应的数据库
    • 进入数据库
    mysql -u root -p123456
    
    • 创建数据库
    create database dcm;
- 设置权限访问
  grant all on dcm.* to 'root' identified by '123456';
  quit
- 导入初始化脚本
mysql -uroot -p123456 dcm < $DCM4CHEE_ARC/sql/create-mysql.sql

安装BerkeleyDB(4.6.21)

  • 安装 gcc
    sudo yum install gcc
  • 下载安装包
        wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz
    
  • 创建安装目录:
    sudo mkdir /usr/local/berkeleyDB
  • 解压
    tar -zxvf db-4.6.21.tar.gz
  • 编译安装
    cd db-4.6.21/build_unix
    sudo ../dist/configure --prefix=/usr/local/berkeleyDB
    sudo make && make install
  • 拷贝指定文件到制定目录
    sudo cp /usr/local/berkeleyDB/include/* /usr/include/
    sudo cp /usr/local/berkeleyDB/lib/* /usr/lib/
  • 建立软连接
    #进入到etc下ld.so.conf在最后一行加上DB安装的lib  /usr/local/berkeleyDB/lib
    vi /etc/ld.so.conf
    #然后执行命令
    ldconfig

注意: 如果不进行这个操作可能下列配置就会无效 提示BerkeleyDB version is mistach

  • 配置环境变量
     vi ~/.bash_profile

输入下面内容

CPPFLAGS="-I/usr/local/berkeleyDB/include"
export CPPFLAGS
LDFLAGS="-L/usr/local/lib -L/usr/local/berkeleyDB/lib -R/usr/local/berkeleyDB/lib"
export LDFLAGS
LD_LIBRARY_PATH="/usr/local/berkeleyDB/lib"
export LD_LIBRARY_PATH
  • 更新环境变量文件
    source ~/.bash_profile

openLDAP的安装和配置

  • 安装openLDAP
    sudo yum install tcp_wrappers
    sudo yum install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64
    wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.42.tgz
    tar -xzvf  openldap-2.4.42.tgz
    cd openldap-2.4.42/
    sudo ./configure --enable-bdb --libdir=/usr/local/berkeleyDB/lib --includedir=/usr/local/berkeleyDB/include  --prefix=/usr/local/openldap --sysconfdir=/etc/openldap 
    sudo make depend
    sudo make && make install
  • 配置OpenLDAP
    #导入模式文件
    sudo cp $DCM4CHEE_ARC/ldap/schema/* /etc/openldap/openldap/schema/
  • 修改配置文件slapd.conf
#已有文件core  添加没有的其他三条没有的schema以及其他相关配置
vi /etc/openldap/openldap/slapd.conf
include         /etc/openldap/openldap/schema/core.schema
include         /etc/openldap/openldap/schema/dicom.schema
include         /etc/openldap/openldap/schema/dcm4che.schema
include         /etc/openldap/openldap/schema/dcm4chee-archive.schema
suffix          "dc=dcm4che,dc=org"
rootdn          "cn=admin,dc=dcm4che,dc=org"
rootpw          secret
  • 启动
    sudo cp /etc/openldap/openldap/DB_CONFIG.example /usr/local/openldap/var/openldap-data/DB_CONFIG
    sudo /usr/local/openldap/libexec/slapd -d256 -f /etc/openldap/openldap/slapd.conf

常见错误:
5d0b2eb1 @(#) $OpenLDAP: slapd 2.4.44 (Jun 20 2019 14:49:42) $ root@localhost.localdomain:/opt/openldap-2.4.44/servers/slapd 5d0b2eb1 slapd stopped.
原因:
修改配置文件slapd.conf出现错误了

安装OpenLDAP客户端

    #另外开启的连接窗口输入命令进行安装(如果你的openLDAP后台运行的话就不需要另开)
    yum install -y openldap-clients nss-pam-ldapd
  • 导入配置文件
    常见错误:
    ldapadd: symbol lookup error: ldapadd: undefined symbol: ldap_pvt_tls_destroy

原因:
没有使用sudo带头

OpenLDAP客户端导入对应的ldif文件

    sudo ldapadd -x -w secret -D "cn=admin,dc=dcm4che,dc=org" -f $DCM4CHEE_ARC/ldap/init-baseDN.ldif
    sudo ldapadd -x -w secret -D "cn=admin,dc=dcm4che,dc=org" -f $DCM4CHEE_ARC/ldap/init-config.ldif
    sudo ldapadd -x -w secret -D "cn=admin,dc=dcm4che,dc=org" -f $DCM4CHEE_ARC/ldap/default-config.ldif
    sudo ldapadd -x -w secret-D "cn=admin,dc=dcm4che,dc=org" -f $DCM4CHEE_ARC/ldap/add-vendor-data.ldif
    
    #导入上述文件中时,我们发现日志输出dicomAETitle=UNKNOW,所以我们新建一个名为名AETitle.ldif的LDIF文件,并且输入以下内容然后用ldapadd指令导入文件
    version: 1
    # LDIF for modifying the AE Title of the Archive
    # Adjust Base DN (dc=dc=dcm4che,dc=org), Device name (dcm4chee-arc), previous AE Title (DCM4CHEE),
    # new AE Title (MY_AE) before import it into the LDAP server
    dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    changetype: moddn
    newrdn: dicomAETitle=AC
    deleteoldrdn: 1
    newsuperior: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM     Configuration,dc=dcm4che,dc=org

修改存储路径

    我们可以根据项目的实际情况,采用自定义存储目录:
    新建一个名为storage-directory.ldif的LDIF 文件
    然后输入下面内容:
    version: 1
    dn: dcmStorageID=fs1,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    changetype: modify
    replace: dcmURI
    dcmURI: file:///data/dcm/
    
    然后用ldapadd指令导入文件

配置Archive连接

    #配置指定Archive允许连接
    #创建sample-device.ldif文件,填入下面内容,然后用ldapadd指令导入文件
    
    version: 1
    # LDIF for adding a Device providing one Application Entity available on one Network connection
    # Adjust Base DN (dc=dcm4che,dc=org), Device name (SAMPLE_DEVICE), AE Title (SAMPLE_AET),
    # Hostname (sample.host.name) and Port number before import it into the LDAP server


    # Unique AE Title
    # (will fail if there is already an object for the same AE Title)
    dn: dicomAETitle=SAMPLE_AET,cn=Unique AE Titles Registry,cn=DICOM Configuration,dc=dcm4che,dc=org
    objectClass: dicomUniqueAETitle
    dicomAETitle: SAMPLE_AET


    # Device
    dn: dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    objectClass: dicomDevice
    dicomDeviceName: SAMPLE_DEVICE
    dicomInstalled: TRUE


    # Network Connection
    dn: cn=dicom,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    objectClass: dicomNetworkConnection
    cn: dicom
    dicomHostname: sample.host.name
    dicomPort: 12345


    # Network Connection (secure)
    # dn: cn=dicom-tls,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM     Configuration,dc=dcm4che,dc=org
    # cn: dicom-tls
    # objectClass: dicomNetworkConnection
    # dicomHostname: sample.host.name
    # dicomPort: 23456
    # dicomTLSCipherSuite: TLS_RSA_WITH_AES_128_CBC_SHA
    # dicomTLSCipherSuite: SSL_RSA_WITH_3DES_EDE_CBC_SHA


    # Network Application Entity
    dn: dicomAETitle=SAMPLE_AET,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    objectClass: dicomNetworkAE
    dicomAETitle: SAMPLE_AET
    dicomNetworkConnectionReference:     cn=dicom,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM     Configuration,dc=dcm4che,dc=org
    # dicomNetworkConnectionReference:     cn=dicom-tls,dicomDeviceName=SAMPLE_DEVICE,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
    dicomAssociationInitiator: TRUE
    dicomAssociationAcceptor: TRUE

安装/设置/启动WildFly

  • 配置wildfly的环境变量
    WILDFLY_HOME=/opt/wildfly-10.0.0.Final(解压文件的目录)
    export WILDFLY_HOME
  • 拷贝配置文件到制定目录
    cp -r $DCM4CHEE_ARC/configuration/dcm4chee-arc $WILDFLY_HOME/standalone/configuration
  • 添加dcm4chee-arc 配置文件
    cd $WILDFLY_HOME/standalone/configuration/
    cp standalone-full.xml dcm4chee-arc.xml
    # 把配置文件中所有的127.0.0.1 改为0.0.0.0  如果不修改只允许本机访问
    sed -i "s/127.0.0.1/0.0.0.0/g" dcm4chee-arc.xml
  • 从dcm4che中获取需要的运行环境文件
    # 这里的运行环境文件的版本号有可能因为你使用的dcm4che的版本不同而有所不同 根据实际情况进行调整
    cd  $WILDFLY_HOME
    unzip $DCM4CHEE_ARC/jboss-modules/dcm4che-jboss-modules-dcm4chee-arc-light-5.17.0.zip 
    unzip $DCM4CHEE_ARC/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
    # 最新版本这个zip包是没有的,其他版本没有去一一观看\
    unzip $DCM4CHEE_ARC/jboss-modules/querydsl-jboss-modules-4.1.4-noguava.zip 文件
    unzip $DCM4CHEE_ARC/jboss-modules/jclouds-jboss-modules-1.9.2-noguava.zip
    unzip $DCM4CHEE_ARC/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
    unzip $DCM4CHEE_ARC/jboss-modules/jdbc-jboss-modules-1.0.0-mysql.zip
  • 查看module.xml文件
    cat $WILDFLY_HOME/modules/com/mysql/main/module.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="com.mysql">
        <resources>
            <resource-root path="mysql-connector-java-5.1.36-bin.jar"/>
        </resources>

        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>

注意:
从文件内容看到path属性指向的室一个jar文件,mysql连接驱动依赖,所以我们要在module.xml所在的目录添加这个文件(需要自行下载,版本要与module.xml中一致)

  • 使用正确的配置文件以独立模式启动WildFly
    $WILDFLY_HOME/bin/standalone.sh -c dcm4chee-arc.xml
    #启动成功以后的界面
    =========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/wildfly-10.0.0.Final

  JAVA: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================
  • 启动成功以后,新开一个连接窗口,使用JBoss CLI将JDBC驱动程序添加到服务器配置中
    $WILDFLY_HOME/bin/jboss-cli.sh -c
    #添加成功以后界面显示:
    [standalone@localhost:9990 /]
    #选择驱动进行配置(这里使用的是mysql)
    [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql)
    #相关的数据源配置以及绑定JNDI
    [standalone@localhost:9990 /] data-source add --name=PacsDS --driver-name=mysql --connection-url=jdbc:mysql://192.168.21.132:3306/dcm --jndi-name=java:/PacsDS --user-name=root --password=123456
    #补充说明
    MySQL的<jdbc-url>:jdbc:mysql://<host>:3306/<database-name>
    dcm4chee其实内部已经提供了对应的脚本,如果你的数据库是安装到同一系统的话可以直接运行下面的命令执行脚本:
    $WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-data-source-<db>.cli

    脚本的具体内容(实际与手动输入一致):
    /subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql)
    data-source add --name=pacsds --driver-name=mysql --jndi-name=java:/PacsDS \
    --connection-url=jdbc:mysql://localhost:3306/pacsdb \
    --user-name=pacs --password=<user-password>
    [standalone@localhost:9990 /] data-source enable --name=PacsDS
  • 使用JBoss CLI创建JMS队列
    #手动方式(执行下面相关指令):
    
    [standalone@localhost:9990 /] jms-queue add --queue-address=StgCmtSCP --entries=java:/jms/queue/StgCmtSCP
    [standalone@localhost:9990 /] jms-queue add --queue-address=StgCmtSCU --entries=java:/jms/queue/StgCmtSCU
    [standalone@localhost:9990 /] jms-queue add --queue-address=MPPSSCU --entries=java:/jms/queue/MPPSSCU
    [standalone@localhost:9990 /] jms-queue add --queue-address=IANSCU --entries=java:/jms/queue/IANSCU
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export1 --entries=java:/jms/queue/Export1
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export2 --entries=java:/jms/queue/Export2
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export3 --entries=java:/jms/queue/Export3
    [standalone@localhost:9990 /] jms-queue add --queue-address=HL7Send --entries=java:/jms/queue/HL7Send
    [standalone@localhost:9990 /] jms-queue add --queue-address=RSClient --entries=java:/jms/queue/RSClient
    [standalone@localhost:9990 /] jms-queue add --queue-address=DiffTasks --entries=java:/jms/queue/DiffTasks
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export4 --entries=java:/jms/queue/Export4
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export5 --entries=java:/jms/queue/Export5
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export6 --entries=java:/jms/queue/Export6
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export7 --entries=java:/jms/queue/Export7
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export8 --entries=java:/jms/queue/Export8
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export9 --entries=java:/jms/queue/Export9
    [standalone@localhost:9990 /] jms-queue add --queue-address=Export10 --entries=java:/jms/queue/Export10
    [standalone@localhost:9990 /] jms-queue add --queue-address=StgVerTasks --entries=java:/jms/queue/StgVerTasks
    [standalone@localhost:9990 /] jms-queue add --queue-address=Rejection --entries=java:/jms/queue/Rejection
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve1 --entries=java:/jms/queue/Retrieve1
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve2 --entries=java:/jms/queue/Retrieve2
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve3 --entries=java:/jms/queue/Retrieve3
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve4 --entries=java:/jms/queue/Retrieve4
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve5 --entries=java:/jms/queue/Retrieve5
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve6 --entries=java:/jms/queue/Retrieve6
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve7 --entries=java:/jms/queue/Retrieve7
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve8 --entries=java:/jms/queue/Retrieve8
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve9 --entries=java:/jms/queue/Retrieve9
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve10 --entries=java:/jms/queue/Retrieve10
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve11 --entries=java:/jms/queue/Retrieve11
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve12 --entries=java:/jms/queue/Retrieve12
    [standalone@localhost:9890 /] jms-queue add --queue-address=Retrieve13 --entries=java:/jms/queue/Retrieve13
    
#使用内置脚本执行:
    $WILDFLY_HOME/bin/jboss-cli.sh -c --file=$DCM4CHEE_ARC/cli/add-jms-queues.cli
    
#调整 managed-executor-services 配置 
    [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:undefine-attribute(name=hung-task-threshold)
    [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=long-running-tasks,value=true)
    [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=core-threads,value=2)
    [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=max-threads,value=100)
    [standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=queue-length,value=0)
    [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:undefine-attribute(name=hung-task-threshold)
    [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=long-running-tasks,value=true)
    [standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=core-threads,value=2)
    
#添加设备名称(默认是dcm4chee-arc)
    [standalone@localhost:9990 /]/system-property=dcm4chee-arc.DeviceName:add(value=dcm4chee-arc)
    
#使用JBoss CLI部署DCM4CHEE Archive 5.x
    [standalone@localhost:9990 /] deploy $DCM4CHEE_ARC/deploy/dcm4chee-arc-ear-5.x-psql.ear
    #ps:如果出现 Unrecognized variable DCM4CHEE_ARC ,可以使用绝对路径替换$DCM4CHEE_ARC,如下
    deploy /opt/dcm4chee-arc-5.10.0-mysql/deploy/dcm4chee-arc-ear-5.10.0-mysql.ear