В очередной раз возвращаюсь к установке и настройке связки сервера 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.

Комментарии закрыты.