Собираем
информацию
по крупицам
Статьи - Компьютерное

Платформа 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-систему.

 

 

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

 


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

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


Интерфейс и юзабилити » Оформление кода: Почему я выбрал для себя отступ в 2 пробела?

В мире программирования существует достаточно холиварная тема: "Каким должен быть отступ в коде"?   Оставим за бортом споры по теме "Форматироват...


Демо на Ассемблере » Atomix

Размер: 2909 байт Требования: DOS 6.22, AdLib Sound Год: 1998   Интро для главной FIDO ноды Волгодонска N5062/1, долгое время я работал с ф...


Скейтбординг » Самодельный слаломный скейт. Часть 4: Колеса

Как было написано в предыдущих частях, заказывать колеса на сайте seismicskate.com небыло смысла, так как колеса фирмы Seismic очень дорогие. По деньг...

RSS подписка

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

Поделиться этой страницей


Статистика


http://www.swiss-vps.com/ cheap vps switzerland.
http://www.poliv1980.ru/ как выбрать насосную станцию.

Внимание!


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

 

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

База Rarrugas (1, 2)

База Balas

База YellowRaven

База Yurons

База Lesnik757

База Shandor

База Sirrichar

База Anatolean

База Аrmagedec

База SorokinRed

База Deadelf79

База Fadk

 

Требуют доработки:

 

База Tairesh

База Ivnglkv

База Kolyag87

База Andyk101

База Garik456456

База Harpokrat

База SalexIzyh

База Duwaz

 

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

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