Переход на операционную систему Linux для работы с 1С часто сопровождается трудностями на начальных этапах. В данной статье мы подробно рассмотрим процесс развертывания платформы 1С:Предприятие 8.3 на дистрибутиве CentOS 7, разберем типичные ошибки при установке пакетов, настроим получение лицензий по сети и выполним публикацию информационной базы на веб-сервере Apache.
Одной из первых проблем, с которой сталкиваются администраторы, является попытка смешивания пакетов разной разрядности. В CentOS 7, которая является исключительно 64-битной системой, важно соблюдать единообразие устанавливаемых компонентов. Рассмотрим ситуацию, когда при установке 32-битного клиента (i386) возникают конфликты с уже установленными 64-битными общими компонентами (common).
Проанализируем типичную ошибку при выполнении команды установки:
yum localinstall 1C_Enterprise83-client-*.rpm
Ошибка: Пакет: 1C_Enterprise83-client-8.3.13-1690.i386
Необходимо: libstdc++.so.6(GLIBCXX_3.4.22)
Выясним причину этой ошибки: штатная библиотека libstdc++ в CentOS 7 версии 4.8.5 не содержит необходимых версий символов (GLIBCXX_3.4.20 и выше), которые требуются для работы современных 32-битных клиентов 1С. Кроме того, установка 32-битного клиента на 64-битную систему требует наличия всех соответствующих 32-битных зависимостей, что может привести к «замусориванию» системы.
Рекомендация: Если вы используете 64-битную CentOS, настоятельно рекомендуется использовать 64-битные пакеты 1С (x86_64). Это избавит вас от проблем с библиотеками и обеспечит нативную поддержку системы. Если же вам принципиально нужен 32-битный клиент (например, для совместимости со старыми внешними компонентами), вам придется установить огромное количество i686 библиотек вручную.
После успешной установки пакетов часто возникает проблема с поиском ключей защиты. В ОС Linux механизмы автоматического поиска HASP-ключей через широковещательные UDP-запросы часто работают некорректно. Рассмотрим, как правильно настроить доступ к ключам, если база файловая, а ключ находится на другом сервере в сети.
Многие пытаются решить проблему простым открытием порта в firewalld:
firewall-cmd --permanent --add-port=475/tcp
firewall-cmd --permanent --add-port=475/udp
firewall-cmd --reload
Однако даже с открытыми портами 1С может не видеть ключ. Проанализируем ситуацию: для стабильной работы в Linux необходимо явно указать адрес сервера лицензирования. Разберем создание «правильного» конфигурационного файла nethasp.ini. Мы должны создать или отредактировать этот файл (обычно он находится в /opt/1C/v8.3/x86_64/conf/ или /opt/1C/v8.3/i386/conf/).
Добавим в секцию [NH_COMMON] и [NH_TCPIP] следующие параметры:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес вашего сервера с ключами
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = Disabled
Использование этого метода позволяет 1С подключаться напрямую к серверу лицензирования, минуя нестабильный механизм широковещательного поиска. Это критически важно для Linux-инсталляций.
Теперь рассмотрим процесс публикации файловой информационной базы для работы через веб-браузер или тонкий клиент. Здесь часто совершается фатальная ошибка — попытка использовать 32-битный модуль 1С (wsap24.so) с 64-битным веб-сервером Apache.
Если в файле httpd.conf вы видите строку:
LoadModule _1cws_module "/opt/1C/v8.3/i386/wsap24.so"
а ваш Apache установлен из стандартных репозиториев CentOS (64-бит), то сервер не запустится с ошибкой синтаксиса. Выясним причину: 64-битный процесс не может загрузить 32-битную динамическую библиотеку.
Разберем правильный алгоритм публикации с использованием утилиты webinst:
cd /opt/1C/v8.3/x86_64/.
./webinst -apache24 -wsdir 'base' -dir '/var/www/html/base/' -connStr 'File="/pub/InfoBase/";' -confPath /etc/httpd/conf/httpd.conf
Важный момент: Обратите внимание на права доступа. Пользователь, под которым работает Apache (обычно это apache), должен иметь права на чтение и запись (rwx) ко всему каталогу с базой данных 1С (в нашем примере /pub/InfoBase/), а также к каталогу публикации /var/www/html/base/.
Даже если публикация прошла успешно, при попытке зайти в базу вы можете столкнуться с ошибкой HTTP: Not found или ошибками синтаксического анализа XML. В CentOS 7 основной причиной часто является работа системы безопасности SELinux.
Рассмотрим, как проверить влияние SELinux. Временно переведем систему в режим обучения:
setenforce 0
Если после этого 1С начала работать корректно, значит, необходимо настроить политики безопасности, а не отключать их полностью. Разберем необходимые команды для разрешения работы веб-сервера с сетью и файлами:
setsebool -P httpd_can_network_connect on
chcon -R -t httpd_sys_rw_content_t /pub/InfoBase/
После выполнения этих действий верните SELinux в активный режим: setenforce 1.
Для корректного отображения интерфейса (GUI) в Linux, особенно при формировании печатных форм, 1С требуются шрифты Microsoft Core Fonts. Без них вместо текста вы можете увидеть пустые квадраты. Проанализируем, как это исправить.
Вам необходимо установить пакет msttcorefonts. В стандартных репозиториях CentOS его нет, поэтому его установку обычно выполняют через репозиторий EPEL или путем сборки из rpm пакета. Также убедитесь, что установлены следующие библиотеки:
fontconfigfreetypelibgsfunixODBCСовместное выполнение этих шагов обеспечит стабильную работу платформы 1С на CentOS 7. Мы разобрали основные подводные камни: от архитектурного соответствия модулей до тонких настроек прав доступа и системы безопасности. Помните, что Linux требует более внимательного отношения к правам на файловую систему и явного указания параметров сети, чем среда Windows.