Поиск по этому блогу

пятница, 16 июля 2010 г.

Установка DB2 и 1С на Linux Ubuntu 10.04 LTS

Итак, мальчики и девочки придвигайтесь поближе к своим мониторам.


Мы с вами сегодня пошагово пройдём весь процесс установки с нуля бесплатного сервера баз данных IBM DB2 Express-C v9.5 (сборка 22521) и сервера 1С:Предприятия 8.2 (версия 8.2.11.236) на сервер под управлением 64-битной операционной системы Linux Ubuntu 10.04.

Установку операционной системой оставим за рамками данного повествования. Для начала внесем корректировки в параметры ядра системы, а именно в файл /etc/sysctl.conf, согласно официальной документации:
kernel.sem = 250 256000 32 1024
kernel.msgmax = 65535
kernel.msgmnb = 65535
Следующие параметры зависят от количества установленной памяти в вашем сервере.Например, в моём случае, когда установлено 12 Гб, значения следующие:
kernel.shmmax = 12619325440
kernel.shmall = 2772801
Как расчитывать эти значения ?
Параметр shmmax равен физическому размеру оперативной памяти в сервере. Параметр shmall задается в количестве 4K блоков памяти умещающихся в 90% физической памяти. Вам поможет следующая формула: shmall = shmmax * 0,9 / 4096.
Итак, Вы внесли изменения в файл /etc/sysctl.conf, теперь чтоб они вступили в силу необходимо выполнить нижеследующую команду:
sudo sysctl -p
Теперь нам понадобятся дистрибутивы программ, которые мы возьмем с сайта 1С. Перейдите в домашний каталог:
cd ~
Для начала скачаем IB DB2 (426M):
wget http://downloads.v8.1c.ru/get/Info/Platform/DB2_22251/v9.5.4_linuxx64_expc_1C.tar.gz
Распакуем полученный дистрибутив (он распаковался в папку expc):
tar xfz v9.5.4_linuxx64_expc_1C.tar.gz
Качнём дистрибутив платформы (128M):
wget http://dl01.v8.1c.ru/get/Info/Platform/8_2_11_236/setupdeb64.rar
Обратите внимание на следующий забавный факт, что дистрибуция платформы 1C под Linux запакована WinRar'ом... :-)
Соответственно, сразу устанавливаем распаковщик, если он у вас ещё не стоял:
sudo apt-get install unrar
Теперь распаковываем выкаченный пакет, чтоб получить deb-пакеты:
unrar x setupdeb64.rar
Для запуска и работы IBM DB2 на 64-битной Linux Ubuntu нужна библиотека libstdc++.so.5, которую мы сейчас поставим вручную. Для начало выкачаем её deb-архивы из репозитория для разных платформ:

wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-20_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-20_i386.deb
Сначалу принудительно установим библиотеку для i386:
sudo dpkg --force-architecture -i libstdc++5_3.3.6-20_i386.deb
Вручную перемещаем в "нужный" каталог:
sudo mv /usr/lib/libstdc++.so.5* /usr/lib32/
А теперь нативную библиотеку:
sudo dpkg -i libstdc++5_3.3.6-20_amd64.deb
Проверяем:
sudo updatedb
locate libstdc++.so.
Должны получить такой вывод на консоли:
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.5.0.7
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.13
/usr/lib32/libstdc++.so.5
/usr/lib32/libstdc++.so.5.0.7
/usr/lib32/libstdc++.so.6
/usr/lib32/libstdc++.so.6.0.13
Так же нужно поставить стандартным образом следующие пакеты, иначе инсталляция всё равно будет ругаться на то что, не может найти libstdc++.so.5 и libaio.so.1 :
sudo apt-get install ia32-libs libaio-dev
Уф. Вроде "усё" выкачали и распаковали.

Для начала установим сам сервер 1С:
sudo dpkg -i *.deb
Дополнительно поставим часть пакетов:
sudo apt-get install imagemagick msttcorefonts libgsf-1-114 texlive-base texlive-binaries
Проверим все ли библиотеки установлены:
sudo /opt/1C/v8.2/x86_64/utils/config_server
Теперь запустим сервер 1С:Предприятия:
sudo /etc/init.d/srv1cv82 start
И настроим автозапуск:
sudo update-rc.d srv1cv82 defaults
Готово.

Теперь примемся за установку DB2. Как вы помните у нас лежит распакованный дистрибутив в папке ~/expc. Перейдем туда:
cd ~/expc
Запускаем установщик:
sudo ./db2_install
Оставляем каталог по умолчанию:

нет
После чего устанавливаем сам продукт:

EXP
Теперь начинается самое интересное. Зайдём под правами суперюзера:
sudo -i
Создаём пользователей необходимых для работы DB2:
useradd -m dasusr1
useradd -m db2fenc1
useradd -m db2inst1
Задаем им пароли:
passwd dasusr1
passwd db2fenc1
passwd db2inst1
Создаем DB2 Administration Server (DAS):
cd /opt/ibm/db2/V9.5/instance/
./dascrt dasusr1
Создаим экземпляр DB2, настроенный на работу через порт 50000 (порт DB2 по-умолчанию):

./db2icrt -u db2fenc1 -p 50000 db2inst1
Зайдём под пользователем db2inst1:

su - db2inst1
Конфигурируем DB2 для работы с 1С:

db2set DB2_WORKLOAD=1C
Запускаем экземпляр DB2:

db2start
Возвращаемся в root через Ctrl-D (logout)
Настраиваем автозапуск сервера:

./db2iauto -on db2inst1
Готово.

Теперь надо подружить 1С и DB2.
Для начала выясним код группы доступа, которая является основной для запущенного экземпляра DB2:
id db2inst1
У меня вот такой вывод:

uid=1006(db2inst1) gid=1007(db2inst1) группы=1007(db2inst1),1005(dasusr1)
После этого необходимо добавить пользователя usr1cv81 в эту группу доступа (в моём случае, это 1007):

usermod -G 1007 usr1cv82
Чтобы сервер 1С:Предприятия видел динамические библиотеки DB2, то их нам надо их добавить в пути поиска. а так же задать "правильные" переменные окружения для корректной работы. Для этого добавим в конец файла /home/usr1cv82/.profile подключение профиля от нашего экземпляра DB2:
echo ". /home/db2inst1/sqllib/db2profile" >> /home/usr1cv82/.profile
Теперь перезапустим сервер 1С:
sudo /etc/init.d/srv1cv82 restart
Готово.

Таким образом мы получили работающую связку 1С и DB2 на одном сервере под управлением Linux Ubuntu 10.04 LTS.