среда, 25 октября 2017 г.

Установка 1С 8.3.10 СУБД db2 11.1. ubuntu 16.04.3

23 октября 2017 года, фирма "1С", исправила ошибки в платформе и начиная с версии 8.3.10.2650, платформа наконец, стала работоспособна с зарплатными решениями фирмы "1С" на управляемых формах, в частности 1С:Зарплата и кадры государственного учреждения 8 редакция 3.1.
В данной статье опишем установку сервера и клиента 1С 8.3.10.2650 с СУБД db2 11.1 на ubuntu 16.04.3 на virtualbox.
Нам потребуется (все 64 бит):
1. ubuntu 16.04.3
2. 1С берем на сайте 8.3.10.2650 при наличии договора ИТС
3. DB2 берем IBM Db2 Express-C (требуется зарегистрироваться, страну указать USA если с Russia не получиться)
4.  Фонты берем etersoft по кнопке получить (после бесплатной регистрации wine.local для ubuntu 16.04 64 бит)
5. Драйверы hasp берем etersoft

1. Устанавливаем ubuntu 16.04.3 desktop без swap файла, т.е. размечаем вручную весь диск ext4 root.
Настройки виртуальной машины - RAM (минимум 4GB)
Сеть - сетевой мост.

Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.


Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера любое, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

2. Настройка сети скриптом.

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano network.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="ud1604"
# real computer
#_iface="enp0s31f6"
# kvm iface
#_iface="ens3"
# virtualbox iface
_iface="enp0s3"
_address="192.168.0.3"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# отключим сетевой менеджер
sudo systemctl stop NetworkManager.service
sudo systemctl disable NetworkManager.service
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network
#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost
$_address       $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# отключим ip6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'vm.vfs_cache_pressure = 50' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
sudo systemctl start networking.service
sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart
# ubuntu
# Отключим службу ondemand
# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл network.sh

Сделаем исполняем
$ chmod +x  network.sh

Выполним:

$ ./network.sh

Перезагрузимся

$ sudo reboot

3. Установка сервера db2 и 1c скриптом:

После перезагрузки по сети можно подключиться любым ftp клиентом к ftp серверу на нашей виртуальной машине (по ip или или имени ud1604) пользователь test пароль test и загрузить файлы установки:

Файлы необходимые для установки (предварительно нужно скачать по указанным в начале статьи ссылкам):

v11.1_linuxx64_expc.tar.gz
server.deb64.tar.gz
client.deb64.tar.gz
fonts-ttf-ms_1.0-eter4ubuntu_all.deb
haspd_7.60-eter1debian_amd64.deb
haspd-modules_7.60-eter1debian_amd64.deb

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт установки db2 и 1с:

$ nano installdb2.sh

Скопируем из буфера следующий скрипт:

#!/bin/sh
sudo groupadd db2iadm1
sudo useradd -g db2iadm1 -m -d /home/db2inst1 db2inst1
#passwd db2inst1
sudo echo -e "pass\npass\n" | sudo passwd db2inst1
sudo groupadd db2fadm1
sudo useradd -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
#sudo passwd db2fenc1
sudo echo -e "pass\npass\n" | sudo passwd db2fenc1
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libpam0g:i386 -y
#sudo apt-get install libaio1 -y
sudo apt-get install libx32stdc++6 -y
#sudo apt-get install binutils -y
sudo apt-get install libnuma-dev -y
sudo apt-get install libstdc++6 -y
#sudo apt-get install libstdc++5 -y
sudo apt-get install ksh -y
#sudo apt-get install rpm -y
cp /home/user/test/v11.1_linuxx64_expc.tar.gz /tmp
cd /tmp
tar xvzf v11.1_linuxx64_expc.tar.gz
cd expc
sudo ./db2_install -f sysreq
#Не указан сервер SMTP уведомлений. Пока он не задан, нельзя послать уведомления
cd /opt/ibm/db2/V11.1/instance
#Create instance
sudo ./db2icrt -u db2fenc1 db2inst1
#Enable auto-start of the instance by running the following command as the instance owner:
sudo ./db2iauto -on db2inst1
#sudo -u db2inst1 /home/db2inst1/sqllib/adm/db2set DB2_WORKLOAD=1C
sudo su db2inst1 -c '. /home/db2inst1/sqllib/db2profile;/home/db2inst1/sqllib/adm/db2set DB2_WORKLOAD=1C'
# запуск db2 через rc.local
cd /tmp
cat > rc.local <<EOF
#!/bin/bash
# Не запускаю db2fm, плохо гаситься
cd /opt/ibm/db2/V11.1/bin/
#./db2fm -i db2inst1 -u -U
#./db2fm -i db2inst1 -s -S
# Запустим db2
sudo su db2inst1 -c '. /home/db2inst1/sqllib/db2profile;/home/db2inst1/sqllib/adm/db2start'
exit 0
EOF
sudo cp /tmp/rc.local /etc/
sudo chmod +x /etc/rc.local
#sudo systemctl daemon-reload
# скрипт выключения db2
cd /tmp
cat > db2exit.service <<EOF
[Unit]
Description=db2stop
[Service]
ExecStop=/bin/su db2inst1 -c '. /home/db2inst1/sqllib/db2profile;/home/db2inst1/sqllib/adm/db2stop force'
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target reboot.target poweroff.target
EOF
sudo cp db2exit.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable db2exit.service
#ps -eaf|grep -i db2sysc
#sudo -u db2inst1 /home/db2inst1/sqllib/adm/db2start
sudo su db2inst1 -c '. /home/db2inst1/sqllib/db2profile;/home/db2inst1/sqllib/adm/db2start'
cd /opt/ibm/db2/V11.1/bin/
#This step adds an entry to the /etc/inittab so that the FMCD process is started each time you reboot.
sudo ./db2fmcu -u -p /opt/ibm/db2/V11.1/bin/db2fmcd
#Turn on the fault monitor for the instance:
sudo  ./db2fm -i db2inst1 -f on
# установка 1с
mkdir -p /tmp/1ctmp
cd /tmp/1ctmp
sudo apt install -y unixodbc libgsf-1-114 libglib2.0
#ubuntu
#sudo apt install ttf-mscorefonts-installer -y
#debian
#wget  http://ftp.ru.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb
sudo  apt install -y xfonts-utils cabextract
#sudo dpkg -i ttf-mscorefonts-installer_3.6_all.deb
# фонты от Etersoft
#ubuntu
cp /home/user/test/fonts-ttf-ms_1.0-eter4ubuntu_all.deb /tmp/1ctmp
sudo dpkg -i fonts-ttf-ms_1.0-eter4ubuntu_all.deb
sudo apt -f -y install
#debian
#cp /home/user/Загрузки/fonts-ttf-ms_1.0-eter4debian_all.deb /tmp/1ctmp
#sudo dpkg -i fonts-ttf-ms_1.0-eter4debian_all.deb
cp /home/user/test/server.deb64.tar.gz /tmp/1ctmp
cp /home/user/test/client.deb64.tar.gz /tmp/1ctmp
tar xvzf server.deb64.tar.gz
tar xvzf client.deb64.tar.gz
sudo dpkg -i 1c*.deb
sudo apt -f -y install
sudo chown -R usr1cv8:grp1cv8 /opt/1C
sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
sudo usermod -aG db2iadm1 usr1cv8
#sudo echo ". /home/db2inst1/sqllib/db2profile" >> /home/usr1cv8/.profile
sudo sh -c "echo '. /home/db2inst1/sqllib/db2profile' >> /home/usr1cv8/.profile"
sudo service srv1cv83 start
#sudo service srv1cv83 status
sudo  apt install -y libc6-i386
mkdir /tmp/hasp
cd /tmp/hasp
cp /home/user/test/haspd_7.60-eter1debian_amd64.deb /tmp/hasp
cp /home/user/test/haspd-modules_7.60-eter1debian_amd64.deb /tmp/hasp
#cp /home/user/test/haspd_7.40-eter10ubuntu_amd64.deb /tmp/hasp
#cp /home/user/test/haspd-modules_7.40-eter10ubuntu_amd64.deb /tmp/hasp
#wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Debian/8/haspd_7.60-eter1debian_amd64.deb
#wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd_7.40-eter10ubuntu_amd64.deb
#wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Debian/8/haspd-modules_7.60-eter1debian_amd64.deb
#wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd-modules_7.40-eter10ubuntu_amd64.deb
sudo dpkg -i *.deb
sudo apt-get install -f -y
sudo service haspd start
sudo su db2inst1 -c '. /home/db2inst1/sqllib/db2profile;/home/db2inst1/sqllib/adm/db2stop'
#sudo service haspd status
#sudo shutdown -r now

Сохраним файл installdb2.sh

Сделаем исполняем
$ chmod +x  installdb2.sh

Перед запуском обратим внимание нужно будет 2 раза подтвердить "да" русскими буквами



Выполним:

$ ./installdb2.sh
$ sudo poweroff

Здесь полезно сделать "консервы".
До подключения базы 1с легко менять ip адрес и название сервера.
Сделаем выгрузку db2zgu.ova

Использование консервов db2zgu.ova

Перезагрузимся, если не делали выгрузку или просто загрузим виртуалку.

$ sudo reboot

Можно подключать базу 1С.
 


Можно создать базу пользователь db2inst1 пароль pass


Сохранение базы средствами db2
$ su - db2inst1
$ db2 backup db demo
Будет доступно только владельцу, узнаем как называется backup

$ ls
DEMO.0.db2inst1.DBPART000.20171107172851.001
$ chmod -R 777 DEMO.0.db2inst1.DBPART000.20171107172851.001

Теперь можно положить базу на ftp.



Восстановление базы средствами db2
$ su - db2inst1
$ db2 restore db demo

Если нужно сделать дополнительные базы:

Регистрация дополнительной базы "old" в основном экземпляре
Создадим базу средствами 1С:


$ su - db2inst1
Наша дополнительная база  называется old
$ db2 restart db old

Сохранение базы средствами db2
$ db2 backup db old
______________________________________________________________________

Коллега задал вопрос а работает ли 32 битный сервер 1С с 64 битной DB2?
Установка 32-разрядного сервера 1С:Предприятие в Linux x64 архитектуры
Переименовал 32 битные пакеты в client.deb64.tar.gz server.deb64.tar.gz
Воспользовался приведенным скриптом, однако для 32 битной версии 1С
после скрипта нужно выполнить:

$ sudo dpkg --add-architecture i386 && sudo apt update
$ sudo apt install imagemagick-6.q16:i386 unixodbc:i386 libgsf-bin:i386
$ sudo apt install imagemagick:i386

Запускается, работает, база из backup средствами db2 грузиться.

Комментариев нет:

Отправить комментарий