Собираем
информацию
по крупицам

Платформа 1C:Предприятие

Установка сервера 1С 8.2 под Linux. Борьба с ошибкой "Error: service failed to start!"
18-12-2012
12:02:29

Недавно устанавливал сервер 1С:Предприятие 8.2.15.319 в операционной системе CentOs 5.5. Вылезла проблема, на которую натыкаются многие системные администраторы - демон сервера srv1cv82 не запускался. В интернете куча обсуждений данного вопроса, рецепты везде разные. В этой статье я расскажу в чем заключалась ошибка у меня, и как ее решил.

 

 

Исходные данные

 

Имеем чистую систему CentOs 5.5, установленную админами хостинга на выделенный сервер. Непонятно, почему в конце 2012 года ставят именно версию 5.5, когда уже стабильна 6.3. Ну да ладно, попробуем запустить сервер на пятой ветке. Но на всякий случай обновимся до последнего стабильного релиза. Из-под рута запускаем:

 

yum check-update

yum update

 

Проверим, какая версия CentOs получилась:

 

# cat /etc/redhat-release

CentOS release 5.8 (Final)

 

 

 

Установка RPM-пакетов

 

Наша конфигурация проверена и протестирована на версии платформы 8.2.15.319. Поэтому будем ставить именно эту версию сервера. Скачиваем архив с RPM пакетами с официального сайта 1С. В нашем случае получим следующие файлы:

 

1C_Enterprise82-common-8.2.15-319.i386.rpm

1C_Enterprise82-common-nls-8.2.15-319.i386.rpm

1C_Enterprise82-crs-8.2.15-319.i386.rpm

1C_Enterprise82-crs-nls-8.2.15-319.i386.rpm

1C_Enterprise82-server-8.2.15-319.i386.rpm

1C_Enterprise82-server-nls-8.2.15-319.i386.rpm

1C_Enterprise82-ws-8.2.15-319.i386.rpm

1C_Enterprise82-ws-nls-8.2.15-319.i386.rpm

 

Устанавливаем все эти пакеты (хотя, подозреваю, что не все они нужны). Устанавливать командой

 

rpm -ivh *

 

не рекомендуется, так как пакеты имеют зависимости друг от друга, и если один не установится, то он просто будет пропущен. Поэтому устанавливаем пакеты руками друг за другом из-под рута (я просто пользуюсь Midnight Commander, входя в каждый пакет по Enter и запуская INSTALL). При установке смотрим, какой пакет не установился. Ставим сначала зависимый пакет, потом возвращаемся к неустановленному, снова его ставим - он должен установиться.

 

В процессе установки произойдет запуск сервера 1С:Предприятия. Выглядеть это будет так:

 

Starting 1C:Enterprise 8.2 server: OK

 

Но так будет не у всех и не всегда. Велика вероятность увидеть такое сообщение:

 

Starting 1C:Enterprise 8.2 server: Error: service failed to start!

FAILED

 

 

 

Почему не стартует сервер 1С предприятия?

 

Итак RPM-пакеты установлены. В инсталл-скриптах RPM-пакетов прописывается автозапуск демона сервера 1С при старте системы. Кроме того, при установке RPM-пакета с сервером, сервер сразу запускается. Это произойдет, если все прошло нормально. В нашем случае мы видим ошибку, и начинаем разбираться, в чем причина и как исправить.

 

Для начала убедимся, что сервер действительно не стартует. Попытаемся запустить его вручную:

 

# service srv1cv82 start

Starting 1C:Enterprise 8.2 server: Error: service failed to start!

FAILED

 

Видим все ту же ошибку. Нигде не сказано, где искать лог ошибок сервера 1С, поэтому посмотрим для начала файл /var/log/messages:

 

# cat /var/log/messages

...

Dec 18 11:19:24 srv3217 setroubleshoot: SELinux is preventing ragent from loading /opt/1C/v8.2/i386/backbas.so which requires text relocation. For complete SELinux messages. run sealert -l 9d52cffb-e837-45d8-be82-35c50be717ab

 

Да, последняя строка в логе очень интересная. Она касается сервера 1С. Долго я не мог понять что сие значит. А эначит это то, что в опенсорче те еще грамотеи, и поставить точку вместо запятой - для них раз плюнуть. А ведь всего-навсего нужно было написать:

 

For complete SELinux messages, run sealert -l 9d52cffb-e837-45d8-be82-35c50be717ab

 

И ни у кого бы вопросов не возникло. Запускаем рекомендуемую в этом сообщении команду и видим портянку:

 

# sealert -l 9d52cffb-e837-45d8-be82-35c50be717ab

Сводка:

SELinux is preventing ragent from loading /opt/1C/v8.2/i386/backbas.so which

requires text relocation.

 

Подробное описание:

The ragent application attempted to load /opt/1C/v8.2/i386/backbas.so which

requires text relocation. This is a potential security problem. Most libraries

do not need this permission. Libraries are sometimes coded incorrectly and

request this permission. The SELinux Memory Protection Tests

(http://people.redhat.com/drepper/selinux-mem.html) web page explains how to

remove this requirement. You can configure SELinux temporarily to allow

/opt/1C/v8.2/i386/backbas.so to use relocation as a workaround, until the

library is fixed. Please file a bug report

(http://bugzilla.redhat.com/bugzilla/enter_bug.cgi) against this package.

 

Разрешение доступа:

If you trust /opt/1C/v8.2/i386/backbas.so to run correctly, you can change the

file context to textrel_shlib_t. "chcon -t textrel_shlib_t

'/opt/1C/v8.2/i386/backbas.so'" You must also change the default file context

files on the system in order to preserve them even on a full relabel. "semanage

fcontext -a -t textrel_shlib_t '/opt/1C/v8.2/i386/backbas.so'"

 

Следующая команда разрешит доступ:

chcon -t textrel_shlib_t '/opt/1C/v8.2/i386/backbas.so'

 

Дополнительные сведения:

Исходный контек root:system_r:initrc_t

Целевой Контекс system_u:object_r:usr_t

Целевые Объекты /opt/1C/v8.2/i386/backbas.so [ file ]

Source ragent

Source Path /opt/1C/v8.2/i386/ragent

Port <Неизвестно>

Host srv3217

Source RPM Packages 1C_Enterprise82-server-8.2.15-319

Target RPM Packages 1C_Enterprise82-common-8.2.15-319

RPM политики selinux-policy-2.4.6-327.el5

Selinux активна True

Тип политики targeted

MLS активна True

Принудительный Enforcing

Имя доп.модуля allow_execmod

Имя хоста srv3217

Платформа Linux srv3217 2.6.18-308.24.1.el5PAE #1 SMP Tue

Dec 4 18:28:32 EST 2012 i686 i686

Счетчик уведомл 3

First Seen Tue Dec 18 10:57:32 2012

Last Seen Tue Dec 18 11:19:24 2012

Local ID 9d52cffb-e837-45d8-be82-35c50be717ab

Номера строк

Сырые сообщения

host=srv3217 type=AVC msg=audit(1355815164.656:31): avc: denied { execmod } for pid=2836 comm="ragent" path="/opt/1C/v8.2/i386/backbas.so" dev=md0 ino=16154631 scontext=root:system_r:initrc_t:s0 tcontext=system_u:object_r:usr_t:s0 tclass=file

host=srv3217 type=SYSCALL msg=audit(1355815164.656:31): arch=40000003 syscall=125 success=no exit=-13 a0=5d0b000 a1=29c000 a2=5 a3=bfbd6fa0 items=0 ppid=2835 pid=2836 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=(none) ses=1 comm="ragent" exe="/opt/1C/v8.2/i386/ragent" subj=root:system_r:initrc_t:s0 key=(null)

 

В общем, система безопасности SELinux заблокировала запуск 1С сервера. Но в этой портянке находится еще одна рекомендация:

 

Следующая команда разрешит доступ:

chcon -t textrel_shlib_t '/opt/1C/v8.2/i386/backbas.so'

 

Запускаем ее, после чего сервер 1С будет нормально стартовать:

 

service srv1cv82 start

Starting 1C:Enterprise 8.2 server: OK

 

 

Заметьте, что для старта 1С-сервера не обязательно наличие PostgreSQL. Сервер стартует сам по себе, и может быть установлен практически на чистую Linux-систему.

 

 

На этом все, надеюсь кому-то помог.

 


К списку "Компьютерное"

Интересное на сайте


Отладчик GDB » Отладка в gdb: как отловить обращение к переменной или к нужному свойству класса

Недавно мне пришлось отлаживать один крупный проект, который содержал большие куски говнокода. Необходимость в отладке возникла из-за того, что в одно...


Демо, сделанное в генераторе » Xintrea Home Page Demo

Размер: 250 Кбайт Требования: Windows 95/98/XP Год: 2005   Демка для моего старого сайта xi.net.ru. Демка сделана просто щелчками мышки, с ...


Классическая анимация » Прыгающая подушка

Оборудование: Pentium-IV, Wacom Graphire3 CTE-630 Среда: Flash 8 Год: 2005   Первая и, видимо, последняя попытка нарисовать мини-мультфильм по т...

RSS подписка

Подпишитесь на новости сайта по RSS


http://www.swiss-vps.com/ cheap vps switzerland.

Внимание!

На этом сайте разрабатывается программа MyTetra и её родственные проекты.

Доступны к просмотру следующие базы знаний:

База Xintrea (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

 

Подробности на странице MyTetra Share.

 WebHamster.Ru
 Домик любопытного хомячка
Яндекс индекс цитирования
Почтовый ящик