В современной ИТ-инфраструктуре часто возникает задача кроссплатформенного взаимодействия. Типичный сценарий: сервер управления базами данных (СУБД) работает на Microsoft SQL Server под управлением Windows, а сервер приложений 1С планируется запустить на Linux (например, CentOS или Ubuntu) для экономии на лицензиях или по соображениям безопасности. Однако при такой настройке системные администраторы часто сталкиваются с ошибкой: "Неверные или отсутствующие параметры соединения с информационной базой".
В данной статье мы подробно разберем, почему возникает эта проблема, какие версии платформы 1С поддерживают такую связку и как правильно настроить компоненты системы для стабильной работы.
Проанализируем ситуацию, с которой столкнулся автор темы. Использование платформы версии 8.3.18.1208 на CentOS при попытке достучаться до MS SQL на Windows приводило к ошибке соединения. Основная причина кроется в архитектурных ограничениях старых релизов платформы 1С. Долгое время компания 1С официально заявляла, что рабочие серверы под управлением Linux не могут взаимодействовать с СУБД Microsoft SQL Server. Это было связано с отсутствием необходимых механизмов проброса запросов через специфические драйверы в среде Linux.
Рассмотрим важный исторический момент: до версии 8.3.20 использование MS SQL Server в качестве СУБД было возможно только в том случае, если сервер приложений 1С также работал на Windows. Если вы используете релизы веток 8.3.17, 8.3.18 или 8.3.19, попытка подружить Linux и MS SQL закончится неудачей, как и произошло у автора обсуждения.
Начиная с версии 8.3.20, разработчики 1С реализовали долгожданную поддержку Microsoft SQL Server для серверов приложений, работающих на Linux. Это в корне меняет ситуацию. Если перед вами стоит задача запустить именно такую связку, первым делом необходимо обновить платформу до актуальных релизов (например, ветки 8.3.22, 8.3.23 или выше).
Разберем по шагам, что необходимо сделать на стороне Linux-сервера для работы с MS SQL:
msodbcsql17 или msodbcsql18.ras или ragent, имеет доступ к библиотекам драйвера.Важно помнить, что при добавлении информационной базы в консоли администрирования на Linux-сервере, крайне рекомендуется использовать SQL-авторизацию. Windows-аутентификация в среде Linux требует сложной настройки Kerberos и интеграции в домен Active Directory, что часто становится источником дополнительных ошибок. При необходимости удобного управления базами через RAS можно воспользоваться консолью администрирования серверов 1С.
В ходе обсуждения участники затронули вопрос надежности конкретных сборок. Версия 8.3.18.1208, упоминаемая автором, признана сообществом крайне неудачной из-за проблем с безопасностью и стабильностью рабочих процессов rphost. Рассмотрим рекомендации по выбору версий:
8.3.17.1851.8.3.21.1622.Зачастую Linux внедряется только ради использования веб-сервера Apache, так как он считается более гибким и производительным для публикации баз 1С, чем IIS. Проанализируем ситуацию: если ваша цель — организовать веб-доступ и интеграцию (например, с Битрикс24), вам необязательно переносить сам сервер приложений 1С на Linux.
Рассмотрим оптимальную архитектуру в этом случае:
COM-объектами.Apache и тонкий клиент (или компоненты публикации).В файле публикации default.vrd на Linux-сервере вы просто указываете адрес Windows-сервера 1С. Таким образом, запросы от веб-клиентов или внешних систем (Битрикс24) будут приходить на Apache (Linux), а затем перенаправляться на стабильный сервер 1С (Windows). Это избавляет от необходимости решать проблемы несовместимости СУБД и ОС.
Даже если вы успешно соедините 1С на Linux с базой на MS SQL, нужно учитывать специфические ограничения платформы. Проанализируем их подробнее, чтобы они не стали сюрпризом после запуска системы в эксплуатацию:
1. Отказ от COM-объектов. В среде Linux функция Новый COMОбъект(...) не работает. Если ваша конфигурация использует интеграции через COM (например, загрузка данных из Excel-файлов старым способом или специфические драйверы оборудования), код будет выдавать ошибку. Посмотрим на пример кода, который придется переписывать:
// Этот код НЕ БУДЕТ работать на Linux-сервере
Попытка
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("На сервере Linux это не сработает!");
КонецПопытки;
Вместо этого следует использовать встроенные средства 1С для работы с файлами (ЧтениеExcel) или библиотеки, работающие напрямую с форматами файлов.
2. Работа со шрифтами. При генерации печатных форм на сервере Linux часто «едет» верстка. Это происходит потому, что в Linux нет стандартных шрифтов Windows (Arial, Times New Roman). Обязательно установите пакет msttcorefonts на ваш CentOS-сервер, иначе PDF-документы будут выглядеть некорректно.
3. Использование Kerberos. Если вы все же решили использовать доменную авторизацию в связке Linux-Windows, приготовьтесь к настройке keytab-файлов. Это сложный процесс, требующий синхронизации времени между серверами и правильной настройки SPN (Service Principal Name).
Подведем итог. Если вы столкнулись с невозможностью подключения сервера 1С на CentOS к MS SQL, у вас есть три пути:
PostgreSQL, который является «родным» для Linux и отлично работает с любой версией платформы 1С.