Deploy DCM4CHEE v.2.18 на Debian 10
1. Ставим Debian10 с диска netinst_x64
2. Добавим пользователя deploy в файл /etc/sudoers, чтобы он мог выполнять команды root'a через sudo. Это необходимо для работы ansible с host-сервером.
# visudo
и добавляем строчку с deploy после root
# User privilege specification
root ALL=(ALL:ALL) ALL
deploy ALL=(ALL:ALL) NOPASSWD: ALL
и сохраняем изменения. И далее работаем пользователем deploy.
3. Ставим net-tools, joe, netplan.io
4. Настраиваем сеть /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
# wifis:
# wlx001731b1756e:
# dhcp4: no
# dhcp6: no
# addresses: [192.168.18.50/24]
# gateway4: 192.168.18.1
# nameservers:
# addresses: [192.168.1.232, 77.88.8.8]
# access-points:
# gate18:
# password: 3333383333
ethernets:
enp3s0:
dhcp4: no
dhcp6: no
addresses: [192.168.1.203/24]
gateway4: 192.168.1.1
mtu: 1500
# nameservers:
# addresses: [192.168.1.232, 77.88.8.8]
# nameservers:
# addresses: [195.189.108.6, 195.189.109.6]
##
# enp3s0:
# dhcp4: no
# dhcp6: no
## match:
## macaddress: 00:90:4C:C0:00:00
## macaddress: de:de:de:de:de:de
# addresses: [195.189.108.50/28]
# gateway4: 195.189.108.49
# mtu: 1500
# nameservers:
# addresses: [195.189.108.6, 195.189.109.6]
ВНИМАНИЕ! У файла расширегние yaml !!!
5. Применяем конфигурацию
Для проверки вводим:
netplan --debug generate
Для применения настроек
netplan apply
или временно (до нажатия ENTER в пределах 120с)
netplan try
Перезагружаем и пробуем настройки сети.
6. Ставим пакет resolvconf
Удаляем ссылку и/или делаем файл:
/etc/resolv.conf:
search uraltcom.ru
nameserver 195.189.108.6
это чтобы ставить пакеты, если apt-get update не работает.
далее действуем по статье (настраиваем пакет resolv.conf)
https://losst.ru/nastrojka-dns-v-debian
sudo apt-get update
sudo apt install resolvconf
sudo systemctl status resolvconf.service
sudo systemctl start resolvconf.service
sudo systemctl enable resolvconf.service
sudo systemctl status resolvconf.service
joe /etc/resolvconf/resolv.conf.d/head
пишем туда:
search uraltcom.ru
nameserver 195.189.108.6
nameservet 195.189.109.6
перезагружаем и проверяем:
cat /etc/resolv.conf
ping google.ru
7. Настраиваем беспарольный вход с "deploy-машины" на новый сервер.
Generate a ssh key pair on your Ansible server:
ssh-keygen
Copy the public key to all your remote hosts you need to connect via this ssh key.
ssh-copy-id -i ~/.ssh/id_rsa.pub deploy@<remote_host>
deploy - пользователь на виртуалке с правами sudo
Пробуем зайти без пароля: slogin -l deploy 192.168.9.20
должен пускать!
8. Развертываем Docker ansible-плейбуком с "deploy-машины".
Пишем в инвентори-файл:
[devel-servers]
dcm12 ansible_host=192.168.1.208 ansible_user=deploy
запускаем плейбук ( docker_debian.yml ):
ansible-playbook -i ../hosts docker_debian.yml
9. Делаем каталог /storage и монтируем туда диск.
Определяем UUID для partition:
# dumpe2fs -h /dev/sda1 |grep -i uuid
добавляем в /etc/fstab
UUID=41b80bc8-061d-4034-9619-86c80245b0aa /storage ext4 defaults 0 2
перезагрузить и проверить смонтированный диск.
10. Ставим пустую базу и инструментарий dcmtk ( 4chee2_dep.yml ):
ansible-playbook -i hosts 4chee2_dep.yml
папка DCM4CHEE_2 содержит архивы:
11. Делаем и запускаем docker-compose.yml
сначала заводим env-переменную в .bashrc
export DCM_STORAGE=/storage
и сам файл:
pacs:
image: 'jodogne/dcm4chee'
restart: always
hostname: 'pacs12'
ports:
- '8080:8080'
- '11112:11112'
volumes:
- '$DCM_STORAGE/data/dcm4chee:/var/local/dcm4chee'
- '$DCM_STORAGE/data/mysql:/var/lib/mysql'
стартуем
docker-compose up -d
проверяем доступ через web-интерфейс.
12. Change the default AE Title (if you need...)
Connect to JBoss's JMX Console at http://localhost:8080/jmx-console/ and login using also the Administrator account 'admin', with password 'admin'.
Follow the link "service=AE" to the configuration page for AE (Application Entity - a DICOM term for a DICOM node on the network) service under the "dcm4chee.archive" heading.
Invoke the operation updateAETitle with the old AE Title (DCM4CHEE if unchanged from the default), and new AE Title as parameters.
This will update the following configurations:
- update the retrieve AET of file systems, associated to the current retrieve AET of this node
- update retrieveAETs of all instances, series and studies that have files on these filesystems
- update the entry for the retrieve AE in the AE Configuration
- update the AE Title of all services listed by attribute OtherServiceAETitleAttributesToUpdate
There are currently no items in this folder.
13. Chande default DCM4CHEE port
I find it, in service=DcmServer
There are currently no items in this folder.
P.S.
DCM4CHEE в DEBIAN НЕ БУДЕТ РАБОТАТЬ НА ПОРТУ < 1024 !!!
14. Закачка данных из существующего архива.
Скрипт закачки
#!/bin/bash
#
# You must have passwordless access to SERVER for deploy-user.
#
#
ARGC=$#
SCRIPTNAME=`basename $0`
if [ $ARGC -ne 1 ]; then
echo "Usage: $SCRIPTNAME <month>"
fi
SERV_IP="192.168.1.208"
SERV_PORT="11112"
SAET=DCM4CHEE
# Path to source archive and year
YEAR=2021
PA2AR=/mnt/1/lib/vservers/lin01/var/lib/dcm4chee/server/default/archive/$YEAR
list="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31"
# You can limit days in month
#list="1 2 3 4 5"
#list="25 26 27"
#echo $(dirname $PA2AR)
# Disable time synchronization
ssh deploy@$SERV_IP "sudo timedatectl set-ntp no"
# Find directories under the month (i.e. days for month)
for A in `find $PA2AR/$1 -maxdepth 1 -type d `
do
for B in $list
do
# Set limit for days by list-array
if [ "${A##*/}" == "$B" ]; then
# Pass the month-number directory (i.e. parent dir is year)
if [ "$(dirname $A)" != "$PA2AR" ]; then
# echo ==${A##*/}==
# echo _${A}_$B
echo ========day===========$B
echo "$YEAR-$1-$B 11:11:11"
# Set date on SERVER
ssh deploy@$SERV_IP "sudo timedatectl set-time \"$YEAR-$1-$B 11:11:11\""
sleep 2
# find $A -not -type d
# Send dcm-file to SERVER
find $A -not -type d -exec storescu -aet $SAET -aec $SAET $SERV_IP $SERV_PORT {} \;
# find $A -not -type d -exec storescu -aet BNK_INTEK -aec DCM4CHEE 192.168.1.203 11112 {} \;
# find $A -not -type d -exec echo {} \;
fi
fi
done
done
# Enable time synchronization (remote command)
ssh deploy@$SERV_IP "sudo timedatectl set-ntp yes"
...