В очередной раз возвращаюсь к установке и настройке связки сервера 1с предприятия и PostgreSQL под Linux. Несколько месяцев назад вышел новый релиз CentOS 6, а немного ранее фирма 1с выложила на своем сайте попаченные исходники PostgreSQL 9.0.3. Меня очень порадовало, что версию 9.0.3 неплохо подточили под установку на Fedora/RHEL/CentOS и в ней уже нет необходимости править init-скрипты и spec-файлы.
В статье используются CentOS 6.0 x64, PostgreSQL 9.0.3, 1с Предприятие 8.2.14.528.
1. Сборка и настройка PostgreSQL 9.0.3
Устанавливаем необходимые пакеты:
[root@1csrv ~]# yum install rpm-build wget glibc-devel bison flex readline-devel zlib-devel openssl-devel pam-devel gettext gcc make icu libicu libicu-devel
Загружаем с сайта 1с и устанавливаем исходники PostgreSQL 9.0.3:
[root@1csrv ~]# wget http://v8.1c.ru/overview/postgresql_patches/9-0-3/postgresql-9.0.3-3.1C.src.rpm [root@1csrv ~]# rpm -ihv postgresql-9.0.3-3.1C.src.rpm 1:postgresql ########################################### [100%]
Открываем для редактирования файл /usr/lib/rpm/macros и меняем в нем уровень подгона пачей _default_patch_fuzz на 2. Раньше подобные действия приходилось делать только на Fedora 12 и выше, при сборке софта не поддерживающего обработку пачей новыми скриптами, а начиная с 6-ой версии новые скрипты пришли и в CentOS.
%_default_patch_fuzz 2
Создаем символические ссылки на библиотеки libicu:
[root@1csrv ~]# ln -s /usr/lib64/libicui18n.so /usr/local/lib64/libicui18n.so.46 [root@1csrv ~]# ln -s /usr/lib64/libicudata.so /usr/local/lib64/libicudata.so.46 [root@1csrv ~]# ln -s /usr/lib64/libicuuc.so /usr/local/lib64/libicuuc.so.46
Переходим к сборке PostgreSQL. Установкой параметра ‘runselftest 0′ мы отказываемся от инициализации тестовой базы и проверки работоспособности PosgreSQL во время сборки, для того что бы тестирование прошло успешно его нужно выполнять из-под ограниченного пользователя, иначе процесс сборки будет остановлен.
[root@1csrv ~]# rpmbuild -bb --define 'runselftest 0' ~/rpmbuild/SPECS/postgresql-9.0-1C.spec
Просмотрим список собранных RPM-пакетов:
[root@1csrv ~]# ls -1 ~/rpmbuild/RPMS/x86_64 postgresql-9.0.3-3.1C.x86_64.rpm postgresql-contrib-9.0.3-3.1C.x86_64.rpm postgresql-devel-9.0.3-3.1C.x86_64.rpm postgresql-docs-9.0.3-3.1C.x86_64.rpm postgresql-libs-9.0.3-3.1C.x86_64.rpm postgresql-server-9.0.3-3.1C.x86_64.rpm postgresql-test-9.0.3-3.1C.x86_64.rpm
Совсем необязательно их все устанавливать, для норамальной работы PostgreSQL волне достаточно 4-х postgresql, postgresql-contrib, postgresql-libs и postgresql-server. Переходим в директорию /root/rpmbuild/RPMS/x86_64 и устанавливаем пакеты.
[root@1csrv ~]# cd ~/rpmbuild/RPMS/x86_64 [root@1csrv x86_64]# rpm -ihv postgresql-9.0.3-3.1C.x86_64.rpm postgresql-server-9.0.3-3.1C.x86_64.rpm postgresql-libs-9.0.3-3.1C.x86_64.rpm postgresql-contrib-9.0.3-3.1C.x86_64.rpm Preparing... ########################################### [100%] 1:postgresql-libs ########################################### [ 25%] 2:postgresql ########################################### [ 50%] 3:postgresql-server ########################################### [ 75%] 4:postgresql-contrib ########################################### [100%] [root@1csrv x86_64]# cd ~
Инициализируем базу данных
[root@localhost ~]# su postgres -c '/usr/pgsql/bin/initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8' The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale ru_RU.UTF-8. The default database encoding has accordingly been set to UTF8. ................... Success. You can now start the database server using: /usr/pgsql/bin/postgres -D /var/lib/pgsql/data or /usr/pgsql/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start
Добавляем в автозагрузку и запускаем сервис PostgreSQL:
[root@1csrv ~]# chkconfig postgresql on [root@1csrv ~]# service postgresql start Starting postgresql service: [ OK ]
Задаем пароль для пользователя postgres:
[root@localhost ~]# psql -U postgres -c "ALTER USER postgres PASSWORD 'password'" ALTER ROLE
2. Установка и запуск сервера 1с Пердприятия 8.2
Установка не представляет из себя ничего интересного – обычная установка RPM-пакетов, после которой сервер 1с предприятия сам создаст себе базовую конфигурацию и запустится. Я хочу рассмотреть этот процесс немого подробнее, потому что не смотря на видимую простоту, ошибки все-таки встречаются.
Первое – имя нашего сервера должно без проблем разрешаться в IP-адрес. В файле /etc/sysconfig/network проверяем значение параметра hostname (имя севера), при необходимости меняем, что бы новые параметры вступили в силу нужно перезапустить систему.
[root@1сsrv ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=1csrv.mydomain.local
В файле /etc/hosts не должно быть записей формата localhost.localdomian или относящихся к IPv6, в случае отсутствия DNS-сервера в нем должно быть прописано четкое соответствие IP-адрес сервера – FQDN имя – короткое имя. Пример правильного файла hosts:
[root@localhost x86_64]# cat /etc/hosts 127.0.0.1 localhost 192.168.1.11 1csrv.mydomain.local 1csrv
Второе – на файрволе не должно быть правил запрещающих взаимодействие между собой компонентов 1с предприятия. В большинстве случаев сервер 1с предприятия находится в пределах локальной сети, поэтому мы вполне может отключить файрвол (хотя бы на время пуско-наладки).
[root@1csrv ~]# chkconfig iptables off [root@1csrv ~]# service iptables stop iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ]
Третье – отключаем SELinux. 1С Предприятие вполне может работать на CentOS 6 при использовании политики безопасности Targeted в режиме Enforcing, ранее же на Fedora 14/15 и СentOS 5 включенный SELinux был причиной ошибки Segmentation Fault. Кроме того, плюсы от использования SELinux на высоко-нагруженном сервере находящемся в пределах локальной сети выглядят крайне туманно.
Проверяем в каком режиме работает SELinux;
[root@1csrv ~]# getenforce Enforcing
Открываем для редактирования файл /etc/sysconfig/selinux и задаем значение:
SELINUX=disabled
Перезагружаем систему.
Теперь можно с полной уверенностью устанавливать сервер 1с предприятия:
[root@1csrv rpm64]# rpm -ihv 1C_Enterprise82-common-8.2.14-528.x86_64.rpm 1C_Enterprise82-server-8.2.14-528.x86_64.rpm Preparing... ########################################### [100%] 1:1C_Enterprise82-common ########################################### [ 50%] 2:1C_Enterprise82-server ########################################### [100%] Starting 1C:Enterprise 8.2 server: OK
Все, остается подключиться через MMC-консоль “Администрирование серверов 1с предприятия” и создать базы данных.
Обсудить статью на форуме http://forum.alsigned.ru/viewtopic.php?f=4&t=88.
Проблемы при настройке 1с предприятия http://forum.alsigned.ru/viewforum.php?f=5.