В очередной раз возвращаюсь к установке и настройке связки сервера 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.
Открываем для редактирования файл /usr/lib/rpm/macros и меняем в нем уровень подгона пачей _default_patch_fuzz на 2. Раньше подобные действия приходилось делать только на Fedora 12 и выше, при сборке софта не поддерживающего обработку пачей новыми скриптами, а начиная с 6-ой версии новые скрипты пришли и в CentOS.
%_default_patch_fuzz 2
Создаем символические ссылки на библиотеки libicu:
Переходим к сборке PostgreSQL. Установкой параметра 'runselftest 0' мы отказываемся от инициализации тестовой базы и проверки работоспособности PosgreSQL во время сборки, для того что бы тестирование прошло успешно его нужно выполнять из-под ограниченного пользователя, иначе процесс сборки будет остановлен.
Совсем необязательно их все устанавливать, для норамальной работы PostgreSQL волне достаточно 4-х postgresql, postgresql-contrib, postgresql-libs и postgresql-server. Переходим в директорию /root/rpmbuild/RPMS/x86_64 и устанавливаем пакеты.
[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 (имя севера), при необходимости меняем, что бы новые параметры вступили в силу нужно перезапустить систему.
В файле /etc/hosts не должно быть записей формата localhost.localdomian или относящихся к IPv6, в случае отсутствия DNS-сервера в нем должно быть прописано четкое соответствие IP-адрес сервера - FQDN имя - короткое имя. Пример правильного файла hosts:
Второе - на файрволе не должно быть правил запрещающих взаимодействие между собой компонентов 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с предприятия: