Здравствуйте уважаемые!
Решил сегодня написать маленькую заметочку о Linux, PostgreSQL и сервере предприятия 1С. Сразу же хочу обратить внимание достопочтенной публики на такую мелочь... Если не хотите заработать геморрой — используйте дистрибутив Fedore Core 8! Похоже что 1С-ники при сборке пакетов используют что-то подобное... и старое. Потому что на свеженьком FC12 у меня ничего не вышло. При сборке Postgresql ругнулось на патч для перловки. Кстати, такая же ситуация наблюдалась и на Мандриве любой версии. Ковырять скрипты — дело не благодарное... поэтому остановился на FC8. В общем, не тратьте время зря. Да и менеджер лицензий и драйвера ключей тоже без проблем встают на федору 8 без лишних телодвижений. В результате моих изысканий вышла такая конфигурация "production" оборудования и ПО.
Два сервера на матерях Intel SE7520BD2 по три винта в каждом, один IDE загрузочный и замонтирован в корень 2 sata объединены в RAID 0 и замонтированы как /var, памяти 4 (сервер 1С) и 6 гектар для постгресса, федора 8 с обновленным ядром 2.6.26. На одном из них стоят сервера 1С предприятия для платформ 8.1 и 8.2 и менеджер лицензий, на другом PostgreSQL 8.3.8. Замечу что для нормального существования двух серверов 1С на одной физической машине, их порты должны отличаться. На 8.1 по умолчанию, на 8.2 порты назначены на 100 больше.
Немного о сборке PostgreSQL. Конечно же я клюнул на самую свежую версию 8.4.1... но быстро обломался :) Собирается и ставится она хорошо и гладко, только 1С клиенты не хотят с ней работать. Выскакивает ошибка :
{ОбщийМодуль.ПолныеПрава(12)}: Ошибка при установке значения атрибута контекста (ИспользоватьОграниченияПравДоступаНаУровнеЗаписей): Несоответствие типов
ПараметрыСеанса.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = Константы.ИспользоватьОграниченияПравДоступаНаУровнеЗаписей.Получить();
по причине: Несоответствие типов
Разбираться не хотел. Пусть Нуралиев суетится по этому поводу, остановился на 8.3.8
Но и здесь была маленькая засада. Во первых ей надо подать 3 файла из состава 1С предприятия и инициализировать базу в рукопашном режиме. Потом работает через скрипт в init.d. Т.е стартует-останавливается при старте Линукса и остановке.
Для сборки дистрибутива из исходников нам понадобятся следующие пакеты:
glibc-devel
bison
flex
python-devel
tcl-devel
readline-devel
zlib-devel
openssl-devel
krb5-devel
e2fsprogs-devel
gettext
pam-devel
openldap-devel
perl-devel
icu
libicu-devel
rpm-build
gcc
Все это хозяйство удобно установить через YUM. Виден процесс... :)
Далее, в каталог /usr/local/lib кладем 3 файлика из состава 1С предприятия. Они лежат в каталоге /opt/1C/8.1/i386 и называются
libicudata.so.34
libicui18n.so.34
libicuuc.so.34
Качаем с сайта 1С файло postgresql-8.3.8-1.1C.src.rpm, заходим в консоль под рутом
и вводим волшебную команду
rpmbuild --rebuild --define 'runselftest 0' postgresql-8.3.8-1.1C.src.rpm
разумеется, находимся в том же каталоге где и исходник. Наблюдаем процесс сборки. Я успел даже кофе себе заболтать и выпить :) Когда закончится, забираем готовые к инсталяции пакеты из каталога /usr/src/redhat/RPMS/i386. Ставим что нужно, хотя достаточно 3х — postgresql, contrib и server.
Вносим изменения в /etc/sysctl.conf
kernel.shmmax = 134217728
kernel.shmall = 134217728
применяем командой sysctl -p
Инициализируем базу такими командами
su postgres
export PGDATA = /var/lib/pgsql/data
initdb
exit
Далее, редактируем конфигурационные файлы PostgreSQL
Стартуем /etc/init.d/postgresql start
В службах выставляем галочку для автозапуска PostgreSQL
Перегружаемся...
Радуемся жизни :)
Ваш maxlab
22.01.2010
По просьбам трудящихся опишу процесс гарантированной установки драйвера ключа и менеджера лицензий. Для этого понадобятся два файла hsp.zip и hasplm. zip. Качаем... , распаковываем в домашний каталог. Как вы это сделаете - ваши проблемы. Я пользуюсь файл-менеджером mc. Далее, получаем привелегии root командой su и идем в каталог hsp. Вводим команду
dinst /home/<домашний каталог>/hsp
установится драйвер USB ключа
Далее, идем в каталог hasplm и копируем файлы в соответствующие места вашей файловой системы. Куда конкретно, вы увидите. Выполняем команду
/etc/init.d/hasplm start
если ответ ОК - все в порядке.
Заключительная фаза это проверка в "Службах" наличие aksusbd и hasplm. Если их нет - прописываем, ставим галки... перегружаем
И, как всегда, радуемся жизни :)
Ваш maxlab
PS. for advanced users: А если сделать запуск-остановку демона hasplm через некоторые (экспериментально подобрать) промежутки времени... можно заметить некоторые интересные эффекты