Установка КонсультантПлюс в Ubuntu Linux 12.04
Август 15, 2014 | HOWTOs, Публикации, Статьи by linuxmasterz
Общие слова
Есть такая база, правовая база данных КонсультантПлюс, каждый IT-специалист знает это произведение российской компьютерной мысли и наверное устанавливал не раз. Конечно, можно пользоваться только online-версией этой замечательной правовой базы данных, но зачем? Ведь есть возможность получить эту компьютерную программу на руки, подписав договор с региональным представителем (региональным информационным центром) и выплачивая небольшие деньги. Именно от них, от региональных представителей, можно получить волшебный файл-демон лицензирования conslin, который позволяет провести-таки регистрацию правовой базы данных КонсультантПлюс (ведь мы же пользуемся только легальным программным обеспечением, не так ли?) и файл с инструкцией по установке: linux.rtf. Нет уверенности в том, что файл с инструкцией по установке можно публиковать публично, так как в нём не указаны условия его распространения, но там довольно банальные вещи, кроме некоторых секретных элементов, которые включены в пределах разумного цитирования в настоящую инструкцию.
Начальная установка
Просто ставим с mini.iso систему Ubuntu Linux 12.04, куда доустанавливаем только самые нужные нам компоненты. Где взять mini.iso? Конечно же здесь:
https://help.ubuntu.com/community/Installation/MinimalCD
Установка проста и не замысловата. Минимальная система, без каких-либо посторонних сервисов. Единственное, что важно, по окончанию установки необходимо выбрать из огромного репозитория свободного программного обеспечения именно те пакеты, которые вам действительно понадобятся:
sudo apt-get install openssh-server samba4 wine xvfb
openssh-server – для удалённого доступа к операционной системе.
samba4 – для удалённой работы с правовой базой данных КонсультантПлюс.
wine – тот самый неэмулятор Wine Is Not Emulator, который позволит нам запускать на сервере неродные для Linux, исполнимые файлы системы КонсультантПлюс с целью регистрации этого программного продукта, регистрации рабочих станций, обновления правовой базы данных КонсультантПлюс.
xvfb – ещё одна программа неэмуляции, это самый настоящий X-сервер, но умеющий работать без устройств отображения и устройств ввода-вывода. Казалось бы, зачем такое нужно? А вот нужно, например, сейчас, когда нет необходимости ставить настоящий X-сервер на постоянную основу, а лишь пользоваться им спорадически. Ведь все же знают, что, за редкими исключениями, сервер с X-сервер – совсем никакой не сервер.
Такие сервисы, как правовая база данных КонсультантПлюс, удобно держать на сервере виртуальных машин на базе настоящего промышленного гипервизора Kernel-based Virtual Machine (KVM). Для создания образа жесткого диска виртуальной машины рекомендуется 10-гигабайтный “резиновый” образ qcow2 или qed (который умеет расширять свой размер, в зависимости от наполнения данными, но можно сделать и фиксированного объема), который по-настоящему занимает на сервере виртуальных машин изначально чуть более 1 гигабайта. Файлы же правовой базы данных не рекомендуется, а обязательно следует разместить на “резиновом” разделе с максимальным объемом не менее 30 гигабайт, что следует из практики использования, когда изначально объем всех файлов составлял около 9 гигабайт, а после года работы системы – около 14 гигабайт, учитывая, что подключены только федеральные базы законодательства без отраслевых вариантов и регионального законодательства. Оперативной памяти виртуальной машины для обычной работы системы КонсультантПлюс достаточно 256 мегабайт, но, выяснилось, что для обновления системы необходимо не менее 512 мегабайт, так как при недостатке памяти жуткий комплекс из wine и cons.exe вываливается в переполнение стека. Все указанные выше показатели применимы и к реальному аппаратному обеспечению (за исключением “резиновости” разделов и невозможности увеличить оперативную память оперативно).
Предварительные действия
Создаем раздел на диске для файлов системы КонсультантПлюс с помощью программы fdisk (где X – буква диска):
sudo fdisk /dev/sdX
Форматируем раздел, создавая на на нашем диске для файлов системы КонсультантПлюс файловую систему ext4 (где X – буква диска, а Y – цифра раздела):
sudo mkfs.ext4 /dev/sdXY
Узнаём UUID раздела диска для файлов системы КонсультантПлюс:
ls -la /dev/disk/by-uuid/
Создаём точку монтирования (подключения) файловой системы:
sudo mkdir /var/lib/cons
Монтируем (подключаем) в нашу систему раздел диска в подготовленную нами выше директорию через файл описания точек монтирования fstab:
sudo nano /etc/fstab
прописывая в нем запись монтирования раздела диска:
UUID=73bec7a9-a1d0-5c3f-9244-0cde01363eb4 /var/lib/cons ext4 relatime,nodiratime,commit=120 0 2
где:
73bec7a9-a1d0-5c3f-9244-0cde01363eb4 – пример UUID раздела диска для монтирования;
/var/lib/cons – точка монтирования (подключения) раздела диска
ext4 – тип файловой системы, который мы указали при форматировании подключаемого раздела
relatime,nodiratime,commit=120 – параметры, ускоряющие работу файловой системы, путем уменьшения частоты записи на диск служебной информации.
0 – параметр, чтобы раздел не обрабатывался программой dump, которая по умолчанию и не установлена
2 – параметр, который заставлять fsck проверять раздел последним (можно поставить 0, чтобы вообще не проверять, но зачем?)
Применяем внесённые изменения:
sudo mount -a
Если диск виртуальный, то применяем ещё и дополнительные настройки для ускорения диска (это можно сделать даже в действующей системе, на “ходу”):
sudo nano /etc/rc.local
где добавляем через sudo -s то, что наш диск не крутится и может использовать любое ядро процессора для поток ввода-вывода, ведь у нас одно ядро в виртуальной машине и выбирать собственно не из чего (X – буква диска):
echo 0 > /sys/block/vdX/queue/rotational & echo 0 > /sys/block/vdX/queue/rq_affinity &
Указанные выше параметры просто применить и в сессии “суперпользователя” через:
sudo -s
но действовать это будет только до перезагрузки.
Создаём осмысленное имя пользователя, от которого у нас будет работать главный пользователь КонсультантПлюс и собственно будут запускаться фоновые процессы обслуживания:
sudo adduser cons
Создаём имя пользователя, от которого у нас будет работать все остальные пользователи базы данных и у которых будут права только на чтение общего ресурса samba4:
sudo adduser consuser
Подготовка директории с базой данных
Каким-либо образом получаем доступ к дистрибутиву и копируем содержимое диска КонсультантПлюс в заранее подготовленную директорию /var/lib/cons (которая является, как мы помним, корнем специального раздела диска или отдельного диска для файлов правовой системы КонсультантПлюс):
sudo cp -R * /var/lib/cons/*
Присваиваем все файлы в директории /var/lib/cons пользователю и группе cons:
sudo chown -R /var/lib/cons/*
Узнаем одну из тайн сообщества КонсультантПлюс, которая была почерпнута в секретном linux.rtf. Директория ADM должна иметь атрибуты rwxrwsr-x, т.е. для пользователя чтение-запись-доступ и для группы чтение-запись-доступ + SGID (бит показывает, что создаваемые в директории файлы будут принадлежать той же группе, что и каталог, а не группе пользователя, который создаёт в директории файл):
sudo chmod 2770 /var/lib/cons/ADM
Что же лежит и будет лежать в директории /var/lib/cons/ADM? Да там же:
CONS.ADM, в котором хранится информация о лицензионности вашей системы КонсультантПлюс;
MBPxxxxxx.ADM, в котором хранится информация о авторизованных клиентских компьютерах (xxxxxx – номер поставки).
Оба файла имеют права rwxrwxr-x (775). Если права будут другими, то на клиентских машинах будет ошибка о занятости системы КонсультантПлюс некими иными пользователями. Бывает, когда некорректно проходят операции обновления, переиндексации, добавления новых клиентских компьютеров, права сбиваются на rwx—— (700)
Для возможности запуска cons.exe на клиентских компьютерах в неLinux-системах почему-то пришлось выставлять права rwxr-xr-x (755), а было rwxr-x— (750):
sudo chmod 755 /var/lob/cons/cons.exe
Подготовка общего ресурса SAMBA4
Редактируем файл настройки SAMBA /etc/samba/smb.conf:
В глобальной секции прописываем сетевую группу, режим авторизации, немного магии для ускорения чтения/записи на ресурсы SAMBA:
workgroup = THEFIRM security = user socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=16384 SO_SNDBUF=16384
Закоментируйте ненужные нам секции:
[printers] [print$]
Прописываем секцию общего ресурса SAMBA:
[CONS] path = /var/lib/cons browseable = yes read only = no guest ok = no create mask = 0664 directory mask = 0775 veto oplock files = /*.BIS/*.ADM/ #kernel oplocks = no level2 oplocks = no use sendfile = yes log level = 0
Создаем пользователей ресурса SAMBA:
sudo smbpasswd -a cons sudo smbpasswd -a consuser
Включаем пользователей ресурса SAMBA:
sudo smbpasswd -e cons sudo smbpasswd -e consuser
Регистрация комплекта и клиентских компьютеров
Копируем секретный демон лицензирования conslin в сервер, обычно в директорию /usr/local/bin/ и прописываем запуск его при старте сервера в /etc/rc.local до команды exit 0:
/usr/local/bin/conslin &
Можно конечно сделать демон /etc/init.d/conslin, но… стоит ли напрягаться? Помним, что & обязателен для того, чтобы conslin исполнялся при старте в фоне и загрузка продолжалась далее, а то мало ли что, это же злобный проприетарный модуль, что там внутри – неизвестно, зависнуть он может в любой момент и делать может что угодно, хотя есть информация, может работать по полгода и проблем не создавать (тьфу-тьфу). При старте демон conslin открывает TCP-порт 3333 на всех сетевых интерфейсах сервера.
Подключаемся с Вашего компьютера администратора удалённо с пробросом Х-сессии на сервер для регистрации комплекта:
ssh -X cons@192.168.1.50 wine /var/lib/cons/cons.exe /adm /linux /reg
Звоним или пишем региональному представителю КонсультантПлюс, говорим полученные цифры от программы, пишем в загрузившееся окно цифры от представителя, радуемся регистрации.
Подключаемся удалённо с Вашего компьютера администратора с пробросом X-сессии на сервер с базой данных для регистрации клиентских компьютеров:
ssh -X cons@192.168.1.50 wine /var/lib/cons/cons.exe /adm /linux
где:
192.168.1.50 – IP адрес сервера правовой базы данных КонсультантПлюс;
/adm – запуск в режиме администрирования;
/linux – запуск на Linux-системе.
Программная оболочка КонсультантПлюс загружается и мы идём в Меню/Сервис/Регистрация станций.
Запускаем на клиентском компьютере cons.exe, так же идём в меню Меню/Сервис/Регистрация станций.
Происходит магия лицензирования – смотрим на прогрессбар на комьютерах, жмём как на клиентской машине, так и на запущенной на Вашем компьютере оболочке КонсультантПлюс кнопки “ОК”. Регистрация должна быть произведена произведена. Клиентская машина записана на сервере как авторизованная для подключения и использования базы данных.
Что можно делать вручную?
Все эти действия делаются визуально на компьютере администратора, используя его X-сервер, но выполняются на сервере.
Обновлять базу данных через локальную директорию для обновлений (если у вас всё очень плохо с Интернетом):
ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /receive /base* /yes
Обновлять базу данных через сеть Интернет:
ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /receive_inet /base* /yes
Тестировать базу данных на неисправности и ошибки:
ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /basetest /base* /yes
Индексировать файлы базы данных (это необходимо, когда теряется возможность нажимать на ссылки в программе, пишется фальшивое вообщение о том. что якобы “в данном комплекте не зарегистрирована эта возможность”):
ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /reindex0 /base* /yes
Создаём скрипт автоматического обновления
Создаём файл /usr/local/bin/cons-update.sh со следующим содержимым:
#!/bin/bash LOGFILE=/var/log/cons-update.log # Log destination path CONSDIR=/var/lib/cons/ #ConsultantPlus path export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games # Checking existance of log if [ ! -f $LOGFILE ]; then touch $LOGFILE chown root:cons $LOGFILE chmod 664 $LOGFILE fi echo "`date +%Y%m%d%H%M%S` ConsultantPlus is updating..." >> $LOGFILE sudo -H -u cons xvfb-run -s '-screen 0 1024x768x24' wine Z:\\var\\lib\\cons\\cons.exe /adm /linux /adm /linux /receive_inet /base* /yes | iconv -f CP866 >> $LOGFILE chmod 664 $CONSDIR/ADM/CONS.ADM echo "`date +%Y%m%d%H%M%S` ConsultantPlus is ready to use..." >> $LOGFILE exit 0
Не забываем сделать его исполнимым:
chmod +x /usr/local/bin/cons-update.sh
чтобы скрипт стал исполнимым. И сделать через sudo crontab -e запись:
0 6 * * 1 /usr/local/bin/cons-update.sh
чтобы база обновлялась один раз в неделю, а именно в понедельник, в 6 OMST (UTC+7) или 3 MSK (UTC+4) часов. Время и период подсказали сотрудники регионального информационного центра КонсультантПлюс, говорят, что нагрузка на сервера с обновлениями минимальна в это время, а чаще делать обновление не имеет смысла.
В процессе подготовки скрипта была раскрыта тайна, что оказывается, на самом деле, vr??????.res файл – исполнимый и его можно запускать через wine. И он тоже будет работать. Но злоупотреблять этим не надо, так как он постоянно обновляется и его версии тихонечко растут.
Также узнаем тайну авторов КонсультантПлюс: программа настолько стара, что использует для вывода лога работы кодировку CP866. Поэтому и сделана обработка данных лога через iconv. Логи CONS_ERR.TXT, CONS_INET_LISTFILES.TXT, CONS_INET.TXT, CONS_LOG.TXT ведутся в кодировке CP1251, что более логично, но просит вопроса, почему же не прогрессивный UTF-8. Если это не тайна или вы можете объяснить, почему именно так, а не иначе – пишем в комментарии.
Выводы
Вот так вот несложно и незамысловато мы получили практически автономную правовую базу КонсультантПлюс в Ubuntu Linux 12.04, которая сама обновляется и работает без участия человека. Подключаться к базе можно как с Linux-клиентов, так и с других операционных систем, просто стартуя исполнимый модуль cons.exe.