Перенос серверной инфраструктуры «1С:Предприятия» с операционной системы Windows на Linux (в частности, на CentOS или Red Hat Enterprise Linux) — стандартная задача в рамках импортозамещения и оптимизации затрат на лицензирование. Однако системные администраторы часто сталкиваются с неприятным сюрпризом: после миграции интерфейс управляемых форм в толстых и тонких клиентах становится «кривым», элементы управления съезжают, а при попытке открыть некоторые формы пользователи получают пугающее сообщение: «Ошибка выполнения запроса - Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm». При этом обычные (неуправляемые) формы или полностью управляемые конфигурации (например, Бухгалтерия предприятия 3.0) могут работать абсолютно нормально.
В этой статье мы подробно разберем, почему возникает эта проблема, как графическая система сервера 1С связана с Linux-библиотеками, и по шагам настроим окружение CentOS для идеального отображения любых интерфейсов.
Для начала давайте разберемся в механике работы платформы «1С:Предприятие». В операционной системе Windows для отрисовки графических элементов (кнопок, диаграмм, табличных документов и интерфейса управляемых форм) сервер использует встроенную графическую подсистему GDI/GDI+. В операционных системах семейства Linux этой подсистемы нет по определению.
Разработчики платформы 1С решили эту проблему следующим образом: на Linux-сервере роль графического движка выполняет внешняя библиотека сторонних разработчиков — ImageMagick (а именно библиотеки libMagickWand и libMagickCore). Когда пользователь запрашивает открытие управляемой формы, рабочий процесс сервера rphost обращается к ImageMagick для расчета метрик элементов, генерации картинок и подготовки структуры формы, которая затем передается клиенту.
Если сервер 1С не может инициализировать ImageMagick или найти нужные библиотеки, происходят следующие критические сбои:
/e1cib/logForm: Это прямое следствие падения графического процесса или аварийного завершения обработки формы на стороне сервера из-за несовместимости библиотек или нехватки памяти.Рассмотрим по шагам, как локализовать и устранить эти проблемы в CentOS.
Самая распространенная ошибка при миграции — несоответствие разрядности (битности) сервера 1С и установленных в Linux пакетов ImageMagick. Обратите внимание на важнейшее правило компьютерной архитектуры: 32-битный рабочий процесс сервера 1С не может загрузить 64-битные системные библиотеки, и наоборот.
Если на сервере CentOS x86_64 развернут 32-битный сервер 1С (что часто практикуется из-за экономии на лицензиях или по историческим причинам), то стандартная команда установки пакетов из репозитория CentOS установит 64-битные версии ImageMagick. В результате графическая подсистема 1С работать не будет.
Выясним разрядность вашего сервера 1С и установим корректный пакет. Для 32-битного сервера 1С (i386/i686) на 64-битной CentOS необходимо принудительно установить 32-битные библиотеки ImageMagick. Выполним установку из репозитория следующей командой:
yum install ImageMagick.i686 ImageMagick-devel.i686
Если же вы используете полноценный 64-битный сервер 1С, установите стандартные 64-битные библиотеки:
yum install ImageMagick ImageMagick-devel
Даже после успешной установки ImageMagick платформа 1С может продолжать сигнализировать об ошибках. Дело в том, что исполняемые файлы 1С ищут библиотеки по строго определенным именам, например libWand.so или libMagickWand.so. Однако в современных дистрибутивах CentOS установленные файлы библиотек содержат суффиксы версий в именах (например, libMagickWand-6.Q16.so.1).
Давайте поможем серверу 1С найти графические библиотеки, создав для них символические ссылки в системных каталогах. Для 32-битного сервера 1С ссылки создаются в каталоге /usr/lib/, а для 64-битного — в /usr/lib64/.
Выполним создание символических ссылок для 32-битной версии окружения:
ln -s /usr/lib/libMagickWand-6.Q16.so.1 /usr/lib/libWand.so
ln -s /usr/lib/libMagickCore-6.Q16.so.1 /usr/lib/libCore.so
А теперь рассмотрим аналогичные команды для 64-битного окружения:
ln -s /usr/lib64/libMagickWand-6.Q16.so.1 /usr/lib64/libWand.so
ln -s /usr/lib64/libMagickCore-6.Q16.so.1 /usr/lib64/libCore.so
Важное примечание: Точные названия файлов библиотек (например, версия -6.Q16.so.1 или -7.so) зависят от версии CentOS и подключенных репозиториев (таких как EPEL). Перед выполнением команд обязательно проверьте фактическое наличие файлов библиотек в каталогах с помощью команды ls /usr/lib64/ | grep Magick.
Чтобы не гадать, все ли библиотеки установлены корректно, разработчики 1С встроили в платформу отличный диагностический инструмент — утилиту config_server. Давайте запустим ее и проанализируем вывод.
Перейдем в каталог утилит установленной платформы (путь может отличаться в зависимости от версии платформы и ее разрядности):
cd /opt/1C/v8.3/i386/utils/
./config_server
Для 64-битной версии путь будет выглядеть так:
cd /opt/1C/v8.3/x86_64/utils/
./config_server
Эта утилита проверяет наличие в операционной системе всех ключевых библиотек, необходимых для полноценной работы сервера 1С: ImageMagick (FreeType, libgsf, glib, unixODBC). Если в выводе утилиты вы увидите статус "No" или "Not found" напротив пунктов, связанных с ImageMagick или Wand, это означает, что символические ссылки настроены неверно или пакеты не установлены.
Даже при полностью рабочей библиотеке ImageMagick формы могут выглядеть небрежно, если на сервере Linux отсутствуют стандартные шрифты Windows (такие как Arial, Tahoma, Times New Roman, Verdana). Разработчики конфигураций 1С по умолчанию проектируют интерфейсы именно под метрики этих шрифтов.
Если этих шрифтов в Linux нет, система заменяет их свободными аналогами (например, Liberation Sans). Но так как геометрические размеры букв и межстрочные интервалы у них отличаются, текст перестает помещаться в границы кнопок и полей ввода. Это приводит к наложению элементов друг на друга.
Давайте исправим это, установив шрифты Microsoft Core Fonts на сервер CentOS. Для этого выполним последовательность команд:
yum install -y epel-release
yum install -y curl cabextract xorg-x11-font-utils fontconfig
rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcorefonts-2.5-1.noarch.rpm
fc-cache -fv
После этого перезапустим службу сервера 1С, чтобы применить изменения шрифтовой подсистемы:
systemctl restart srv1cv83
Если формы отрисовываются корректно, но периодически возникает ошибка выполнения запроса POST к ресурсу /e1cib/logForm, это часто сигнализирует о нехватке оперативной памяти рабочему процессу rphost.
В 32-битных системах адресное пространство процесса жестко ограничено 2-3 гигабайтами. При открытии тяжелых, сильно кастомизированных управляемых форм сервер тратит значительные ресурсы на их рендеринг. Если лимит памяти превышается, процесс аварийно завершается операционной системой, обрывая соединение клиента.
Для решения этой проблемы мы рекомендуем выполнить следующие действия:
Стабильная и красивая отрисовка управляемых форм 1С на операционной системе CentOS складывается из трех ключевых факторов:
rphost успешно находят графические библиотеки в системе.Выполнив указанные шаги, вы раз и навсегда решите проблему "кривых" интерфейсов и обеспечите пользователям быструю и комфортную работу с базой данных в новом Linux-окружении.