Какие особенности и подводные камни нас ждут при миграции сервера 1С:Предприятие на Linux?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← К списку

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

Мы рассмотрим подробнее, на что следует обратить внимание, какие изменения потребуются в коде и архитектуре, а также как избежать распространенных проблем.

1. Общая совместимость и причины перехода на Linux

Начнем с хороших новостей: платформа 1С:Предприятие, начиная с версии 8.3.х, полностью поддерживает работу как серверной, так и клиентской части на Linux. В современных релизах эта поддержка стабильна и полнофункциональна. Среди поддерживаемых дистрибутивов Linux — Ubuntu, Debian, CentOS, а также отечественные дистрибутивы, такие как Astra Linux, РЕД ОС и Альт Сервер.

Почему же компании выбирают Linux для 1С?

  1. Сокращение затрат: Linux-системы и многие СУБД (например, PostgreSQL) являются бесплатными, что позволяет существенно снизить расходы на лицензирование операционных систем и баз данных.
  2. Гибкость и масштабирование: Linux предоставляет широкие возможности для автоматизации с помощью скриптов, а также интеграции с современными технологиями, такими как Docker, Kubernetes и Ansible, что упрощает масштабирование и управление инфраструктурой.
  3. Безопасность: Linux традиционно считается более безопасной операционной системой при правильной настройке.
  4. Импортозамещение: В условиях текущих требований, переход на отечественное ПО и ОС на базе Linux является стратегически важным шагом.

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

2. Ограничения COM-объектов и интеграция с внешними системами

Один из самых важных моментов, который мы должны учесть при переходе на Linux, это отсутствие поддержки технологии COM. Технология COM (Component Object Model) является специфичной для операционных систем Windows и не работает в Linux-среде.

Что это значит для нас?

Как решить эту проблему?

Нам необходимо переработать все участки кода, завязанные на COM, используя кроссплатформенные механизмы платформы 1С:Предприятие:

  1. Файловый обмен: Для обмена данными с другими системами или формирования документов используйте файловый обмен в форматах XML, JSON, CSV.
  2. Веб-сервисы и HTTP-сервисы: Это современные и кроссплатформенные способы интеграции. Мы можем настроить обмен данными через HTTP-запросы или SOAP-протокол.
  3. Шина данных: Для сложных интеграционных сценариев рассмотрите использование шины данных.
  4. Внешние компоненты: Если без внешних компонентов не обойтись, их следует разрабатывать с использованием технологии Native API, которая позволяет создавать кроссплатформенные компоненты.
  5. Альтернативы MS Office: Если пользователи работают непосредственно на сервере, рассмотрите возможность использования альтернативных офисных пакетов, таких как LibreOffice, или перепишите интеграции с использованием веб-сервисов.

3. Особенности файловой системы и работы с путями

Еще одно фундаментальное отличие Linux от Windows, которое мы должны принять во внимание, это организация файловой системы. На форуме упоминается: "Самое главное отличие линукса от винды / и \".

Основные отличия:

Как адаптировать код?

Для кроссплатформенной работы с файлами и путями мы рекомендуем использовать специальные функции платформы 1С:Предприятие:

  1. Функции для получения стандартных каталогов: Вместо жестко заданных путей используйте функции, которые возвращают пути к системным каталогам, зависящим от ОС:
    • РабочийКаталогДанныхПользователя()
    • КаталогДокументов()
    • КаталогВременныхФайлов()
    • КаталогПрограммы()
  2. Функции для работы с путями:
    • ПолноеИмяФайла(): объединяет путь и имя файла.
    • РазложитьПолноеИмяФайла(): разбивает полное имя файла на составляющие.
    • ИмяВременногоФайла(): создает уникальное имя временного файла.
  3. Файловые маски: Для корректной работы с файловыми масками, такими как *.* (в Windows означает все файлы, а в Linux * — все файлы), следует использовать функции:
    • ПолучитьМаскуВсеФайлы()
    • ПолучитьМаскуВсеФайлыКлиента()
    • ПолучитьМаскуВсеФайлыСервера()

Пример адаптации пути:

Вместо:


ПутьКФайлу = "C:\temp\Отчет.xlsx";

Используйте:


ПутьКФайлу = КаталогВременныхФайлов() + "Отчет.xlsx";

4. Миграция баз данных: с MS SQL на PostgreSQL

Переход с Microsoft SQL Server на PostgreSQL является очень частым шагом при миграции сервера 1С на Linux. PostgreSQL — это мощная, надежная и бесплатная СУБД с открытым исходным кодом, предлагающая высокую производительность и гибкость.

Особенности миграции:

  1. Инструменты 1С: 1С выпустила специальную утилиту для упрощения перехода с MS SQL на PostgreSQL, начиная с релиза 8.3.23. Это значительно облегчает процесс. На форуме отмечается: "1С выпустила инструмент для скульного перехода MSSQL->PgSQL".
  2. Отсутствие обратной миграции: Важно понимать, что обратный переход с PostgreSQL на MSSQL обычно не поддерживается штатными средствами 1С. Если базу PostgreSQL развернуть на MSSQL через стандартную выгрузку/загрузку (DT-файл), она "дико тормозит", как это было отмечено на форуме.
  3. Особенности DT-файлов: На форуме также упоминается, что "Невозможность выгрузки/загрузки через DT это отдельная трабла". Это может означать, что для очень больших баз или специфических конфигураций могут возникать проблемы с использованием стандартных DT-файлов для миграции между разными СУБД.
  4. "Кривые" запросы: Запросы, которые могли нормально работать на MS SQL, могут значительно замедляться на PostgreSQL. Особенно это касается виртуальных таблиц 1С, таких как СрезПоследних(), на больших периодических регистрах сведений. Нам следует быть готовыми к аудиту и оптимизации таких запросов.

Процесс миграции и оптимизация:

Процесс миграции требует тщательного планирования:

  1. Анализ и планирование: Оцените текущую базу данных, объем работ, риски.
  2. Тестовая среда: Обязательно создайте тестовую среду для миграции, тестирования совместимости и производительности.
  3. Резервное копирование: Перед началом миграции обязательно сделайте полную резервную копию данных.
  4. Оптимизация PostgreSQL: После миграции базы данных 1С, особенно больших объемов, может потребоваться тонкая настройка параметров PostgreSQL для достижения оптимальной производительности. Рекомендуем разносить СУБД и базу данных по разным дискам. Важные параметры для настройки PostgreSQL включают max_connections, shared_buffers, work_mem и maintenance_work_mem.
  5. Обучение: Для углубленного изучения PostgreSQL в контексте 1С, рекомендуем ознакомиться с курсом по PostgreSQL на портале разработчиков 1С.

5. Организация удаленного доступа

При переходе на Linux мы должны пересмотреть подход к удаленной работе с 1С. Традиционный RDP (Remote Desktop Protocol), который ассоциируется с Windows, не является оптимальным решением для Linux.

Рекомендуемые подходы:

  1. Веб-клиент 1С: На форуме советуют: "забудь про РДП. Намного лучше под вэб работать". Это наиболее предпочтительный и современный способ работы. Веб-доступ к 1С можно настроить через веб-сервер Apache или Nginx в Linux, что хорошо автоматизируется и обеспечивает кроссплатформенность для пользователей.
  2. VPN-соединение: Для безопасного удаленного доступа всегда рекомендуется использовать VPN-соединение. Оно обеспечивает шифрование трафика и значительно повышает безопасность работы с сервером. "Если на серваке нет белого IP, то через ВПН. Тоже неплохо работает."
  3. XRDP (как альтернатива RDP): Если RDP всё же необходим, существуют реализации терминальных серверов на Linux, такие как XRDP, которые позволяют подключаться по протоколу RDP. Однако при использовании XRDP на Linux могут возникать проблемы с переключением языков, скоростью отрисовки и общей стабильностью по сравнению с нативным RDP на Windows.

6. Производительность и администрирование

Производительность 1С на Linux с PostgreSQL может быть сопоставима или даже превосходить Windows-аналоги при правильной настройке. Однако это требует внимания к деталям.

Что нам следует учесть:

  1. Тонкая настройка: На форуме справедливо отмечается: "Если пользователей больше 50, то по идее может потребоваться, более тонкая настройка, на которую админы обычно кладут болт, при тормозах будете кивать друг на друга". Это означает, что стандартной установки может быть недостаточно.
  2. Настройки ОС:
    • Отключите режимы энергосбережения на процессоре.
    • Рассмотрите отключение технологии HyperThreading на процессоре для стабильной производительности.
  3. Настройки СУБД (PostgreSQL):
    • Тонко настройте параметры конфигурационного файла postgresql.conf.
    • Разнесите СУБД и данные базы по разным физическим или логическим дискам для повышения производительности ввода-вывода.
  4. Настройки сервера 1С:
    • Настройте параметры запуска рабочих процессов 1С, например, количество соединений на процесс и объем памяти.
    • Для крупных инсталляций рассмотрите разделение нагрузки, вынося "тяжелые" сеансы (регламентные задания, построение отчетов) на отдельный рабочий сервер.
    • Разнесение сервера 1С и сервера СУБД на разные физические или виртуальные машины также может значительно улучшить производительность.
  5. Квалификация администраторов: Для крупных и высоконагруженных систем может потребоваться более тонкая настройка, чем обычно выполняют системные администраторы. Убедитесь, что у вас есть специалисты с достаточной квалификацией или привлекайте экспертов.

7. Другие важные аспекты

Помимо вышеперечисленного, есть еще несколько важных моментов, на которые мы должны обратить внимание:

Переезд сервера 1С на Linux — это комплексный проект, который требует внимательного планирования и учета множества нюансов. Мы рассмотрели основные аспекты, которые помогут вам успешно провести эту миграцию. Удачи в ваших проектах!

← К списку