Ставим 1С 8.3 32-bit на Debian 9 64-bit

Статей на эту тему много, моя будет очередной.

Что имеем:

  • Серверную железяку Dell: Intel Xeon E5-2670 2.60ГГц x 2, 64Гб ОЗУ, SSD диски
  • Серверную 32-разрядную лицензию 1С
  • Не самые прямые руки(но жить можно)

Что хотим:

  • ОС Debian 9 64-bit
  • 1C:Предприятие 8.3.12.1440 32-bit в клиент-серверном режиме
  • СУБД PostgreSQL 9.6
  • веб-доступ по Apache 2.4
  • доступ в терминальном режиме
  • и чтоб все это работало

Порядок действий:

  1. Установка 1С:Предприятие 64-bit (для работы веб-интерфейса, необязательно)
  2. Установка 1С:Предприятие 32-bit
  3. Установка HASP
  4. Настройка веб-доступа (Apache 2.4)
  5. Настройка рабочего сервера

Что не вошло в статью:

  1. Установка PostgreSQL 9.6
  2. Администрирование кластера серверов 1С
  3. Настройка терминального сервера

Вот некоторые материалы, которые изучались для решения вопроса:
1С:Предприятие 8.3 на Linux
Установка 1С Сервер 8.3.7 (i386 и x64) и PostgreSQL 9.4.x x64 на Ubuntu Server 14.04 x64
Публикация базы 1С на веб-сервере Apache на сервере Linux
Решение проблем при использовании “1c предприятие” 8.2 в Linux
Типовые ошибки установки сервера 1С:Предприятие и PostgreSQL на платформе Linux
Установка 32-разрядного сервера 1С:Предприятие в Linux x64 архитектуры – отличная статья, да и вообще база знаний

UPDATE:

Как сообщают тут, где-то начиная с релиза 8.3.13 в схеме работы 1C сервера 32-bit и веб-сервера Apache 64-bit, которая описана в статье (и работает, по крайней мере на платформе 8.3.13.1644), перестала работать программная защита 1С (и в комментариях, кстати, жаловались).

“Если стоит задача использовать один и тот же Linux сервер для хостинга i386 сервера приложений 1С и публикации информационной базы в Интернет на x64 Apache, то имеет смысл виртуализировать Apache в docker.”


1. Установка 1C:Предприятие 64-bit

Если доступ к базам по вебу не нужен, этот пункт пропускаем.

Начнем с конца. Для работы баз по веб-интерфейсу нужны либы от 64-битной версии платформы. Поэтому накатим ее, на всякий случай сохраним папку с либами отдельно (например в /opt/1C/v8.3/x86_64_temp , чтобы на следующем пункте ничего не перезаписалось), и дальше будем делать че хотим.

Качаем .deb архивчики с releases.1c.ru, распаковываем и что мы видим:
  • common – общая либа
  • server – сервер
  • client – толстый и тонкий клиент (нужен, например, если настраивается терминальный сервер)
  • thin – тонкий клиент (не понадобится)
  • ws – веб-сервер
  • crs – хранилище конфигураций (не понадобится)
  • nls – в случае использования языков, кроме русского (не понадобится)
Сейчас нам нужны будут только 64-битные пакеты common, server и ws. Ставим:

Переименовываем:

Удаляем, т.к. дальше 64-битные пакеты не понадобятся:

Еще раз, папка  x86_64_temp с 64-битными либами нам понадобится позже на этапе публикации баз на веб-сервере apache.


2. Установка 1C:Предприятие 32-bit

Для начала включаем поддержку архитектуры i386 и обновляем список пакетов:
Если это не сделать, то при установке следующих пакетов выпала бы такая ошибка:
dpkg: ошибка при обработке архива ... архитектура пакета (i386) не соответствует архитектуре системы (amd64)
 
Сейчас нам нужны будут 32-битные пакеты common, server, ws и самый геморройный client. Качаем, распаковываем и ставим:
 
Особенности работы в Linux (выдержка из справки 1C):
Для корректной работы платформы 1С:Предприятия в Linux требуются шрифты из состава Microsoft Core Fonts.
Для работы некоторых функций 1С:Предприятия 8 в Linux могут потребоваться следующие библиотеки:
Библиотека Имя загружаемой библ. Версия Назначение
ImageMagick libMagickWand,  
или libWand, 
или libMagickWand-6.Q16
6.2.8 и выше, если 
не планируется
работать с 
географической 
схемой;
Для работы сервера 1С:Предприятия в управляемом режиме;
При использовании на сервере объектов Диаграмма, ГрафическаяСхема, ТабличныйДокумент
При использовании на сервере метода ПолучитьКартинку() объектов Диаграмма, ДиаграммаГанта, Дендрограмма, СводнаяДиаграмма;
FreeType libfreetype 2.1.9 и выше Для работы сервера 1С:Предприятия в управляемом режиме;
При использовании на сервере объектов Диаграмма, ГрафическаяСхема, ТабличныйДокумент;
при использовании метода ПолучитьКартинку() объектов Диаграмма, ДиаграммаГанта, Дендрограмма, СводнаяДиаграмма;
Сохранение в PDF
Libgsf libgsf-1 1.10.1 и выше Экспорт/импорт в формат XLS
Glib libglib-2.0 2.12.4 и выше Экспорт/импорт в формат XLS
UnixOdbc libodbc 2.2.11 и выше Работа с внешними источниками данных
Kerberos libkrb5 1.4.2 и выше Аутентификация средствами ОС
GSS-API Kerberos libgssapi_krb5 1.4.2 и выше Аутентификация средствами ОС
GoodLuckAPI libluck-7 7.7.7 и выше Для увеличения вероятности сделать все верно с 1 раза и не накосячить

Вспомогательные пакеты для 1С:

* imagemagick (для libWand.so)

UPDATE: Для платформы 8.3.14.* библиотека ImageMagick входит в состав дистрибутива платформы (источник).

* unixodbc – для использования внешних источников данных на стороне клиента:

* ttf-mscorefonts-installer – для установки нужно добавить ветку contrib в репозиторий:

* libgsf-1-114 (в том числе установится libgsf-1-common) – без этой либы возможна ошибка:

/opt/1C/v8.3/i386/ragent: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

* libwebkitgtk-1.0-0 – библиотека движка содержимого Web для GTK+ (подтянутся 146 библиотек:i386) – нужен для установки 1C:client

UPDATE: Для платформы 8.3.12.* нужен пакет libwebkitgtk-3.0-0 (источник)

* Для печатных форм со штрихкодами:

* Остальные официально требуемые библиотеки:

Задаем владельца каталога /opt/1C (по-умолчанию root):

Если нужно переместить кластер в нестандартное расположение (по-умолчанию в /home/usr1cv8/.1cv8/1C/1cv8):

  • а) поковыряться в конфиге (у меня чет не получилось):

Устанавливаем параметр:

После изменения конфига нужно выполнить перезапуск юнита демона:

Задаем владельца каталога:

  • ИЛИ б) сделать символьную ссылку:

Запустим, если еще не запущено (или перезапустим):

Сделаем простую проверку запуска сервиса:
Проверим открылись ли порты (нужен пакет net-tools):
Проверим какие процессы 1С запущены:
Какие процессы от имени пользователя 1С запущены (должны быть как минимум ragent, rmngr и rphost):

3. Установка HASP

Нужно для работы с USB-ключом лицензии сервера 1С. Устанавливал от компании Etersoft:

А сейчас тссс…! Тихо! Настроенный сервер нужно же как-то прогнать, протестировать? При чем желательно в боевых условиях. А как запустить несколько баз в режиме Предприятия, когда лицензионный ключ вставлен в боевой сервер?

1) тестировать на выходных
2) выгнать всех менеджеров из баз к е#еням собачим
3) пропатчить настроенный сервак
 
Думаю, выбор очевиден. Это 2!
Но не в этой жизни 🙁
 
К сожалению, веб-компоненту не получится пропатчить, т.к. она 64-битная (в комментариях к статье есть обсуждение). В остальном:
0) сохранить исходный backbas.so из каталога  /opt/1C/v8.3/i386/, чтобы потом можно было вернуть все обратно

1) скопировать backbus.so на винду и пропатчить с помощью 1c8_uni2patch_win.exe

2) сгенерированный backbas.so скопировать обратно в /opt/1C/v8.3/i386/ 

UPDATE:
Оказывается, что 32-разрядный сервер 1С, установленный в Linux, не проверяет ключ защиты или код активации при подключении к нему до 5-ти пользователей. Эту информацию подкинули в этой статье, спасибо. Сам столкнулся с этим подарком от 1С.

4. Настройка веб-доступа (Apache 2.4)

Вот тут будет довольно интересно. Установлен у нас будет 1С-сервер 32-бита, а apache мы будем скармливать либы от дистрибутива 64-бита (установленные на 1 шаге), иначе будет вот такая ошибка:
apache2: Syntax error on line 239 of /etc/apache2/apache2.conf: Cannot load /opt/1C/v8.3/i386/wsap22.so into server: /opt/1C/v8.3/i386/wsap22.so: wrong ELF class: ELFCLASS32
 
Переименуем каталог обратно в x86_64 (можно и не переименовывать, главное использовать верный путь далее в пункте 4):

1) установить (если не установлено) apache

2) создать папки под базы, в которых будет лежать конфигурационный файл default.vrd:

3) опубликовать базы на веб-сервере:

где:
apacheVer – используемая версия apache
serverAddr – адрес сервера
dbFolderName – имя папки под базу
dbWebName – веб-имя базы, вводимое в адресной строке
db1CName – имя базы на сервере 1С
У меня все 3 имени совпадают.
Пример:

4) После выполнения этой команды в /etc/apache2/apache2.conf  добавятся блоки с настройками каждой базы:

А в конце файла добавится важная строка:

в которой нужно изменить путь на папку с 64-битными либами:

5) перезапустить apache

6) перезапустить 1С (это может и не понадобится)

В файлах default.vrd может понадобиться настроить список используемых веб-сервисов. Мне, например, пригодилось для настройки обмена между базами на разных серверах.

Возможные ошибки:

Ошибка:
apache2: Syntax error on line 240 of /etc/apache2/apache2.conf: Cannot load /opt/1C/v8.3/x86_64/wsap22.so into server: /opt/1C/v8.3/x86_64/wsap22.so: undefined symbol: ap_rputs
Решение:
Используется не та версия apache (например, стоит apache24, а опубликована база с параметром -apache22)
 
Ошибка в браузере:
Ошибка веб-сервиса Error loading component pack
Решение:
Установлены не все либы 1С для apache (например, 1c-enterprise82-server)

3. Настройка рабочего сервера

Т.к. используем 32-разрядный сервер, то у нас имеется ограничение по памяти на рабочие процессы сервера (rphost). На практике было так: если сжираемая рабочим процессом память приближалась к 4Гб, то он зависал (и его приходилось убивать по PID).
Но можно настроить сервер, чтобы он использовал ограниченное количество баз/соединений на рабочий процесс.
На данный момент проще всего настроить сервер 1С с помощью Windows-GUI-утилиты администрирования сервера.
 
Свойства рабочего сервера:
UPDATE:
В связи с новыми правилами лицензирования 1С:Предприятия 8, начиная с версий платформы 8.3.12.1852, 8.3.13.1791 и 8.3.14.1592 параметр “Количество ИБ на процесс” можно менять только при использовании лицензии КОРП. Т.е. или покупаем лицензию КОРП и устанавливаем параметр как хотим (и другие параметры тоже), или устанавливаем параметры в значения по-умолчанию.
Благо, параметр “Количество соединений на процесс” оставили в покое (можно менять и на лицензии ПРОФ).

40 thoughts on “Ставим 1С 8.3 32-bit на Debian 9 64-bit

  1. отличный короткий манула. но у меня снос лицухи так и не заработал…
    вначали валились ошибки. а когда все же стартонул, то один хрен просит лицуху. не получается потестить ((

    1. Спасибо!
      По поводу лицухи – там все дело в backbus.so, нормально пропатчить у меня тоже не с первой попытки получилось.

  2. Привет.

    Но ведь в такой связке будет работать токний клент и толстый клиент. Веб ведь все равно не взлетит, т.к. он смотрит на не сломанные либы. Или я что-то не понимаю? 🙁

    1. Проверка лицензии не связана с частью 1С, отвечающей за веб-доступ. Лицензия нужна для серверной либы, которая i386

      1. Как так?:)
        у меня тонкий и толстый открываются. Веб просит ключ.

        Минт х64, сервер 1с х32, клиент х32, либы для веба из Вашего мануала, т.е. х64

        1. Хм. Вполне вероятно. В течении некоторого времени тестирования этой кухни у меня тоже все работало без кряка (и без ключа), в т.ч. и веб.
          Этим 1С-ный механизм проверки лицензии на линухе меня тогда удивил, но вдаваться в подробности я не стал. Ключ стоял в windows сервере, и возможно, это и повлияло.
          Кряка, на сколько я знаю, для x64 нет, так ведь?

  3. Здравствуйте.
    Возможно я не совсем правильно понял технологию установки, но вроде бы делал все как описано. А проблема вот в чем, когда пытаюсь опубликовать базу то получаю: bash: ./webinst: No such file or directory, тоесть его как бы нет хотя он есть, это тот что 32 бит, а 64 работает нормально, но ведь именно 32бит надо запускать для публикации.
    И еще поясните манипуляции с переименованием папки x86-64.
    Система Ubuntu 64
    Заранее благодарен.

    1. Добрый.. утро. Папку x86_64 я переименовывал, чтобы при накате 32-битной версии не перезатереть 64-е либы в этой папке. Но на самом деле в этом нет смысла, т.к. пути у них разные, и это надо вообще удалить из статьи.
      По поводу “No such file or dir..”: может от матерится не на отсутствие webinst, а на отсутствие папки под базу, к примеру? (та, в которой будет лежать default.vrd)

  4. Привет, после создания базы и входа в 1С выдает ошибку “Ошибка загрузки библиотеки libWand.so по причине:Библиотека не обнаружена.” подскажи где ее искать?

    1. Привет, это библиотека imagemagick, я устанавливал 2 пакета, в статье указано.

  5. Привет, так и не получается пропатчить backbas.so. ни линуксовой версией юнипатча2 ни виндовой. результат 1 – веб просит лицензию. Ubuntu 18.04.1 x64, 1C 8.3.12.1790 x32. все пакеты накатил, всё запущено корректно. Можете как-то прислать патченый backbas.so ? может у меня одного не прокатывает. или ревизия 1790 уже не патчится.

    1. Привет, насколько мне известно, кряка для 64-битного backbas.so нету (в комментариях выше обсуждение). А у меня, судя по всему, веб работал без ключа, т.к. лицензия бралась по сети с другого работающего сервака. Напомнили мне, что нужно обновить статью, чтоб людей в заблуждение не вводил..

  6. Привет, подскажите все сделал по инструкции но при заходе через браузер выдаёт сообщение “1C:Enterprise 8 application error:
    Error loading component backbas”. ОС Debian 8, ставил 1c-enterprise83-server_8.3.13-1644_i386.deb (+ws и common), haspd-modules_7.60-eter1debian_i386.deb, haspd_7.60-eter1debian_i386.deb. Пробовал и ломать backbas.so и на только что установленной, всё равно вылезает.
    Спасибо.

    1. Привет, у себя такой ошибки не припомню, и не гуглится. Сейчас редко ковыряю linux-сервак, поэтому слету не соображу. В разделе про установку веб все так же делали?
      webinst для публикации запускали 32-битный? Исправляли путь для использования 64-битного wsap24.so апачем? Права на 1С-ные каталоги проверяли? У нас сейчас платформа тоже 8.3.13.1644 стоит, так что проблема не в ней.

      1. День добрый, да все по инструкции, за исключением настройки кластера. Путь к wsap24.so исправил. Права usr1cv8 grp1cv8. Из нюансов сама база находится на win 2008, linux сервер нужен только для веб-сервисов. Но я думаю если бы проблема была на стыке linux-windows то вылезла она в момент подключения к базе, а не заходе через браузер. Единственное сначала пробовал 64х битную версию может от неё что-то осталось в системе. Сейчас попробую зачистить все кроме hasp`а и поставить по новой. А у Вас backbas.so патченый работает? Я для чистоты эксперимента воткнул сетевой ключ в linux сервер.

        1. Смотрите, пакет ws должен быть той же разрядности, что и ОС (т.к. apache в этой системе будет той же разрядности, что и ОС). Т.е. в вашем случае если Debian стоит 64-bit, все 1С-ные пакеты нужно ставить тоже 64-bit (ws,server,common). Но если у вас лицензионный ключ в наличии только под 32-битный сервер 1С (который физически как я понял вы втыкнете на Windows машине с базами), то на Linux машине скорее всего будут проблемы с лицензией (т.к. ключ другой разрядности и кряка, на сколько я знаю, под 64-битный backbas нету). И в этом случае разве что или ставить Debian 32-bit, или поднимать веб-сервер на Windows тачке (от чего вы и пытались уйти).
          Надеюсь, я вас правильно понял.

  7. Не совсем понял, как той-же разрядности, если мы ставим на 64х битный debian 32х битный 1с? Мне кажется серверная платформа не видит сетевые ключи, не могли бы скинуть на почту backbas файл?
    Сейчас после переустановки перестал автоматом запускаться ragent, при старте сервера 1с пишет:
    srv1cv83[955]: Starting 1C:Enterprise 8.3 server: Error: service failed to start!
    srv1cv83[955]: FAILED.
    Права на папку с 1С, пользователя и группы 1С.
    Попробую установить новую платформу 1694, чтобы исключить вероятность несовместимости.

    1. Я втупил и подумал, что на Linux вы по какой-то причине только веб компоненту хотите поднять, а сервер с базами на Windows.
      Не понял на счет совместимости на платформе 1694.
      Backbas со своей платформы 1644 сейчас скину.

  8. Извиняюсь за молчание. К сожалению, файлик не помог. При подключении через браузер всё равно запрашивает ключ. Пока поднял веб-сервис на виндовой машине, с Linux`ом буду думать дальше. Спасибо за помощь.

    1. Я в таких случаях сношу все и внимательно ставлю заново (если конечно время есть), плохо когда железяка побеждает(

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

  10. Мануал не читал, но вот за это:

    4) После выполнения команды в /etc/apache2/apache2.conf добавится строка:
    LoadModule _1cws_module “/opt/1C/v8.3/i386/wsap24.so”
    в которой нужно изменить путь на папку с 64-битными либами:
    LoadModule _1cws_module “/opt/1C/v8.3/x86_64/wsap24.so”

    ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!

  11. Хорошая, просто великолепная статья. Я смог поставит на CentOS7 есть много доработок для установки в этой ОС. Но вопрос не понятно а существует вообще Консоль администрирования сервера 1С – я не нашел. Может кто подскажет как ее поставить. Ибо использовать для этой цели винду – не кошерно

    1. Спасибо! По поводу консоли администрирования: на Linux год назад ничего gui-шного не было, и на сегодняшний день вроде так же. Первоначально писал скрипт-обертку вокруг консольной rac (ибо в исходном виде если ей пользоваться, то это будет не администрирование, а мучение), но плюнул и админил удаленно с винды. Сейчас беглый гуглеж выдал разве что приложение под Android DroidRAC2, ради интереса надо будет попробовать.

  12. Спасибо за статью, очень всё здорово, но у меня так в итоге и не заработало по толком негуглящейся причине.
    Переходишь по сайту (или открываешь через сам 1С базу на веб-сервере) и пишет “Информационная база не обнаружена”
    https://b.radikal.ru/b21/1907/6d/6d5219790481.jpg

    Сутки бьюсь уже. Все настройки проверял, всё пробовал: права, фаервол, параметры внутри конфига апача, конфиг default.vrd, нихрена не помогает. Сама база (файлики 1cv8.cd и так далее – просто создал её тупо через клиент 1С и указал путь) лежат в папке main. Конфиги на скрине, расположение папки и её путь тоже.
    https://a.radikal.ru/a27/1907/85/4d4dc694ea1c.jpg

    Есть у кого-нибудь мысли на этот счёт?

    1. Всё, разобрался. Надо было в моём случае прописать в default.vrd строчку для файлового варианта
      ib=”File="/var/www/html/base/main";Ref=main;”>

      1. Я как раз на это место на скрине обратил внимание, но сейчас времени не было разобраться какая должна быть строка подключения для файловой базы. Хорошо, что разобрались.

        1. Да, только с лицензией не разобрался в итоге. Ща пробую не 8.3.11 накатить, мб прокатит

  13. Добрый день
    У меня сервер 1с на Linux 32 bit
    Версия 1C:Enterprise 8.3 (8.3.15.1656). Патченый, имеются клиентские лицензии на 20 человек. Все работает нормально.
    Но вот незадача: при попытке подключения по web в строке запроса после имени базы добавляется еще локаль видимо, типа /uk_UA/ или /ru_UA/, само подключение с сервером срабатывает, появляется окно входа, выбираешь из списка клиента, вводишь пароль, открывается интерфейс, но пустой. Все, что можно сделать – это включить калькулятор или посмотреть About. “Информационная база: ” Т.е. как бы не находит информационной базы. То же самое происходит и при попытке подключиться тонким клиентом. Куда смотреть? По поводу лицензии: web ругался на лицензию пока в настройках базы не выставил “Сервер выдает лицензии” или как там точно. После этого проблем не стало. Сама база на postgres на другой машине.

    1. Добрый день. Судя по всему, конфигурация вашей базы не поддерживает запуск в режиме Тонкий клиент (соответственно, и веб)! Точно такое же поведение наблюдал, когда попытался запустить ЗУП 2.5 по веб.
      А за инфу по поводу “Сервер выдает лицензии” спасибо.

      1. Добрый день
        А это как то исправляется, не знаете? Может через конфигуратор 1с? Я в 1с совсем мало чего понимаю

        1. Нужно обновить конфу (если, конечно, есть новые версии с поддержкой тонкого клиента). Глянуть что за конфа можно в режиме Конфигуратора/Предприятия, жмякнув на оранжевой кнопке “i”

  14. Уведомление: File open error unipatch

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *