Статей на эту тему много, моя будет очередной.
Что имеем:
- Серверную железяку 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С:Предприятие 64-bit (для работы веб-интерфейса, необязательно)
- Установка 1С:Предприятие 32-bit
- Установка HASP
- Настройка веб-доступа (Apache 2.4)
- Настройка рабочего сервера
Что не вошло в статью:
Вот некоторые материалы, которые изучались для решения вопроса:
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 , чтобы на следующем пункте ничего не перезаписалось), и дальше будем делать че хотим.
- common – общая либа
- server – сервер
- client – толстый и тонкий клиент (нужен, например, если настраивается терминальный сервер)
- thin – тонкий клиент (не понадобится)
- ws – веб-сервер
- crs – хранилище конфигураций (не понадобится)
- nls – в случае использования языков, кроме русского (не понадобится)
1 2 3 |
$ dpkg -i 1c-enterprise83-common_8.3.12-1440_amd64.deb $ dpkg -i 1c-enterprise83-server_8.3.12-1440_amd64.deb $ dpkg -i 1c-enterprise83-ws_8.3.12-1440_amd64.deb |
Переименовываем:
1 |
$ cd /opt/1C/v8.3 | mv x86_64 x86_64_temp |
Удаляем, т.к. дальше 64-битные пакеты не понадобятся:
1 2 3 |
$ apt remove 1c-enterprise83-ws $ apt remove 1c-enterprise83-server $ apt remove 1c-enterprise83-common |
Еще раз, папка x86_64_temp с 64-битными либами нам понадобится позже на этапе публикации баз на веб-сервере apache.
2. Установка 1C:Предприятие 32-bit
1 2 |
$ dpkg --add-architecture i386 $ apt-get update |
dpkg: ошибка при обработке архива ... архитектура пакета (i386) не соответствует архитектуре системы (amd64)
1 2 3 4 |
$ dpkg -i 1c-enterprise83-common_8.3.12-1440_i386.deb $ dpkg -i 1c-enterprise83-server_8.3.12-1440_i386.deb $ dpkg -i 1c-enterprise83-ws_8.3.12-1440_i386.deb $ dpkg -i 1c-enterprise83-client_8.3.12-1440_i386.deb |
Библиотека | Имя загружаемой библ. | Версия | Назначение |
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С:
1 2 |
$ apt install imagemagick-6.q16:i386 $ apt install imagemagick:i386 |
UPDATE: Для платформы 8.3.14.* библиотека ImageMagick входит в состав дистрибутива платформы (источник).
* unixodbc – для использования внешних источников данных на стороне клиента:
1 |
$ apt install unixodbc:i386 |
* ttf-mscorefonts-installer – для установки нужно добавить ветку contrib в репозиторий:
1 2 3 4 |
$ sh -c 'echo "deb http://ftp.ru.debian.org/debian/ stretch contrib" > /etc/apt/sources.list.d/debian-stretch-contrib.list' $ apt update $ apt install ttf-mscorefonts-installer $ rm /etc/apt/sources.list.d/debian-stretch-contrib.list |
* 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
1 |
$ apt install libgsf-1-114:i386 |
* libwebkitgtk-1.0-0 – библиотека движка содержимого Web для GTK+ (подтянутся 146 библиотек:i386) – нужен для установки 1C:client
1 2 |
$ apt-get install libwebkitgtk-1.0-0:i386 # будут неудовлетворенные зависимости $ apt-get -f install # установить неудовлетворенные зависимости |
UPDATE: Для платформы 8.3.12.* нужен пакет libwebkitgtk-3.0-0 (источник)
1 2 |
$ apt install libwebkitgtk-3.0-0:i386 $ apt-get -f install |
* Для печатных форм со штрихкодами:
1 2 3 |
$ apt install libgd3:i386 $ apt install libzip4:i386 $ apt install libpng12-0:i386 |
* Остальные официально требуемые библиотеки:
1 2 3 4 |
$ apt install libfreetype6:i386 $ apt install libglib2.0-0:i386 $ apt install libkrb5-3:i386 $ apt install libgssapi-krb5-2:i386 |
Задаем владельца каталога /opt/1C (по-умолчанию root):
1 |
$ chown -R usr1cv8:grp1cv8 /opt/1C |
Если нужно переместить кластер в нестандартное расположение (по-умолчанию в /home/usr1cv8/.1cv8/1C/1cv8):
- а) поковыряться в конфиге (у меня чет не получилось):
1 |
$ nano /etc/init.d/srv1cv83 |
Устанавливаем параметр:
1 |
SRV1CV8_DATA=/cluster |
После изменения конфига нужно выполнить перезапуск юнита демона:
1 |
$ systemctl daemon-reload |
Задаем владельца каталога:
1 |
$ chown -R usr1cv8:grp1cv8 /cluster/1cv8 |
- ИЛИ б) сделать символьную ссылку:
1 2 3 4 |
$ cp -r /home/usr1cv8/.1cv8/1C/1cv8 /cluster $ rm -r /home/usr1cv8/.1cv8/1C/1cv8 $ ln -s /cluster/1cv8 /home/usr1cv8/.1cv8/1C/1cv8 $ chown -R usr1cv8:grp1cv8 /cluster/1cv8 |
Запустим, если еще не запущено (или перезапустим):
1 |
$ service srv1cv83 start |
1 |
$ service srv1cv83 status |
1 2 3 4 |
$ netstat -tlnp|grep 0.0.0.0:15 tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN |
1 2 3 4 |
$ ps -aux | grep 1c usr1cv8 ... /opt/1C/v8.3/i386/ragent -daemon usr1cv8 ... /opt/1C/v8.3/i386/rmngr -port 1541 -host HOST -range 1560:1591 -clstid ID usr1cv8 ... /opt/1C/v8.3/i386/rphost -range 1560:1591 -reghost HOST |
1 |
$ top -u usr1cv8 |
3. Установка HASP
1 2 3 |
$ cd <каталог с 1С-ным барахлом> $ wget ftp://ftp.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Debian/9/haspd_7.90-eter2debian_amd64.deb $ sudo dpkg -i haspd_7.90-eter2debian_amd64.deb |
А сейчас тссс…! Тихо! Настроенный сервер нужно же как-то прогнать, протестировать? При чем желательно в боевых условиях. А как запустить несколько баз в режиме Предприятия, когда лицензионный ключ вставлен в боевой сервер?
1 |
$ cp -a /opt/1C/v8.3/i386/backbas.so /opt/1C/v8.3/i386/backbas_origin.so |
1) скопировать backbus.so на винду и пропатчить с помощью 1c8_uni2patch_win.exe
1 |
1c8_uni2patch_win.exe backbas.so |
2) сгенерированный backbas.so скопировать обратно в /opt/1C/v8.3/i386/
4. Настройка веб-доступа (Apache 2.4)
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
1 |
$ cd /opt/1C/v8.3 | mv x86_64_temp x86_64 |
1) установить (если не установлено) apache
2) создать папки под базы, в которых будет лежать конфигурационный файл default.vrd:
1 |
$ mkdir /mnt/www/<dbFolderName> |
3) опубликовать базы на веб-сервере:
1 |
$ /opt/1C/v8.3/i386/webinst -<apacheVer> -wsdir <dbWebName> -dir /mnt/www/<dbFolderName> -connstr "Srvr=<serverAddr>;Ref=<db1CName>;" -confPath /etc/apache2/apache2.conf |
apacheVer
– используемая версия apacheserverAddr
– адрес сервераdbFolderName
– имя папки под базуdbWebName
– веб-имя базы, вводимое в адресной строкеdb1CName
– имя базы на сервере 1С
1 |
$ /opt/1C/v8.3/i386/webinst -apache24 -wsdir TradingBase -dir /mnt/www/TradingBase -connstr "Srvr=localhost;Ref=TradingBase;" -confPath /etc/apache2/apache2.conf |
4) После выполнения этой команды в /etc/apache2/apache2.conf добавятся блоки с настройками каждой базы:
1 2 3 4 5 6 7 8 9 |
# 1c publication Alias "/TradingBase" "/mnt/www/TradingBase/" <Directory "/mnt/www/TradingBase/"> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor "/mnt/www/TradingBase/default.vrd" </Directory> |
А в конце файла добавится важная строка:
1 |
LoadModule _1cws_module "/opt/1C/v8.3/i386/wsap24.so" |
в которой нужно изменить путь на папку с 64-битными либами:
1 |
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so" |
5) перезапустить apache
1 |
$ service apache2 start |
6) перезапустить 1С (это может и не понадобится)
1 |
$ service srv1cv83 restart |
В файлах 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
Ошибка веб-сервиса Error loading component pack
отличный короткий манула. но у меня снос лицухи так и не заработал…
вначали валились ошибки. а когда все же стартонул, то один хрен просит лицуху. не получается потестить ((
Спасибо!
По поводу лицухи – там все дело в backbus.so, нормально пропатчить у меня тоже не с первой попытки получилось.
Привет.
Но ведь в такой связке будет работать токний клент и толстый клиент. Веб ведь все равно не взлетит, т.к. он смотрит на не сломанные либы. Или я что-то не понимаю? 🙁
Проверка лицензии не связана с частью 1С, отвечающей за веб-доступ. Лицензия нужна для серверной либы, которая i386
Как так?:)
у меня тонкий и толстый открываются. Веб просит ключ.
Минт х64, сервер 1с х32, клиент х32, либы для веба из Вашего мануала, т.е. х64
Предполагаю, что если есть сетевой ключ, он оттуда у вас брался..
Хм. Вполне вероятно. В течении некоторого времени тестирования этой кухни у меня тоже все работало без кряка (и без ключа), в т.ч. и веб.
Этим 1С-ный механизм проверки лицензии на линухе меня тогда удивил, но вдаваться в подробности я не стал. Ключ стоял в windows сервере, и возможно, это и повлияло.
Кряка, на сколько я знаю, для x64 нет, так ведь?
Ага, именно так…
Жаль 🙁
Здравствуйте.
Возможно я не совсем правильно понял технологию установки, но вроде бы делал все как описано. А проблема вот в чем, когда пытаюсь опубликовать базу то получаю: bash: ./webinst: No such file or directory, тоесть его как бы нет хотя он есть, это тот что 32 бит, а 64 работает нормально, но ведь именно 32бит надо запускать для публикации.
И еще поясните манипуляции с переименованием папки x86-64.
Система Ubuntu 64
Заранее благодарен.
Добрый.. утро. Папку x86_64 я переименовывал, чтобы при накате 32-битной версии не перезатереть 64-е либы в этой папке. Но на самом деле в этом нет смысла, т.к. пути у них разные, и это надо вообще удалить из статьи.
По поводу “No such file or dir..”: может от матерится не на отсутствие webinst, а на отсутствие папки под базу, к примеру? (та, в которой будет лежать default.vrd)
Привет, после создания базы и входа в 1С выдает ошибку “Ошибка загрузки библиотеки libWand.so по причине:Библиотека не обнаружена.” подскажи где ее искать?
Привет, это библиотека imagemagick, я устанавливал 2 пакета, в статье указано.
Привет, так и не получается пропатчить backbas.so. ни линуксовой версией юнипатча2 ни виндовой. результат 1 – веб просит лицензию. Ubuntu 18.04.1 x64, 1C 8.3.12.1790 x32. все пакеты накатил, всё запущено корректно. Можете как-то прислать патченый backbas.so ? может у меня одного не прокатывает. или ревизия 1790 уже не патчится.
Привет, насколько мне известно, кряка для 64-битного backbas.so нету (в комментариях выше обсуждение). А у меня, судя по всему, веб работал без ключа, т.к. лицензия бралась по сети с другого работающего сервака. Напомнили мне, что нужно обновить статью, чтоб людей в заблуждение не вводил..
как решили проблему с клиентскими лицензиями в “тестовом режиме”?
Я временно использовал пропатченную платформу на сервере (кроме веб)
Привет, подскажите все сделал по инструкции но при заходе через браузер выдаёт сообщение “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 и на только что установленной, всё равно вылезает.
Спасибо.
Привет, у себя такой ошибки не припомню, и не гуглится. Сейчас редко ковыряю linux-сервак, поэтому слету не соображу. В разделе про установку веб все так же делали?
webinst для публикации запускали 32-битный? Исправляли путь для использования 64-битного wsap24.so апачем? Права на 1С-ные каталоги проверяли? У нас сейчас платформа тоже 8.3.13.1644 стоит, так что проблема не в ней.
День добрый, да все по инструкции, за исключением настройки кластера. Путь к wsap24.so исправил. Права usr1cv8 grp1cv8. Из нюансов сама база находится на win 2008, linux сервер нужен только для веб-сервисов. Но я думаю если бы проблема была на стыке linux-windows то вылезла она в момент подключения к базе, а не заходе через браузер. Единственное сначала пробовал 64х битную версию может от неё что-то осталось в системе. Сейчас попробую зачистить все кроме hasp`а и поставить по новой. А у Вас backbas.so патченый работает? Я для чистоты эксперимента воткнул сетевой ключ в linux сервер.
Смотрите, пакет ws должен быть той же разрядности, что и ОС (т.к. apache в этой системе будет той же разрядности, что и ОС). Т.е. в вашем случае если Debian стоит 64-bit, все 1С-ные пакеты нужно ставить тоже 64-bit (ws,server,common). Но если у вас лицензионный ключ в наличии только под 32-битный сервер 1С (который физически как я понял вы втыкнете на Windows машине с базами), то на Linux машине скорее всего будут проблемы с лицензией (т.к. ключ другой разрядности и кряка, на сколько я знаю, под 64-битный backbas нету). И в этом случае разве что или ставить Debian 32-bit, или поднимать веб-сервер на Windows тачке (от чего вы и пытались уйти).
Надеюсь, я вас правильно понял.
setenforce 0 решит вашу пооблему
Не совсем понял, как той-же разрядности, если мы ставим на 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, чтобы исключить вероятность несовместимости.
Я втупил и подумал, что на Linux вы по какой-то причине только веб компоненту хотите поднять, а сервер с базами на Windows.
Не понял на счет совместимости на платформе 1694.
Backbas со своей платформы 1644 сейчас скину.
Извиняюсь за молчание. К сожалению, файлик не помог. При подключении через браузер всё равно запрашивает ключ. Пока поднял веб-сервис на виндовой машине, с Linux`ом буду думать дальше. Спасибо за помощь.
Я в таких случаях сношу все и внимательно ставлю заново (если конечно время есть), плохо когда железяка побеждает(
🙂 Согласен, но ломать тестовый сервер из за одной 1с не хочется, сейчас соберу отдельную машинку и буду её пытать.
Мануал не читал, но вот за это:
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”
ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!
Рад, что помог!
Хорошая, просто великолепная статья. Я смог поставит на CentOS7 есть много доработок для установки в этой ОС. Но вопрос не понятно а существует вообще Консоль администрирования сервера 1С – я не нашел. Может кто подскажет как ее поставить. Ибо использовать для этой цели винду – не кошерно
Спасибо! По поводу консоли администрирования: на Linux год назад ничего gui-шного не было, и на сегодняшний день вроде так же. Первоначально писал скрипт-обертку вокруг консольной rac (ибо в исходном виде если ей пользоваться, то это будет не администрирование, а мучение), но плюнул и админил удаленно с винды. Сейчас беглый гуглеж выдал разве что приложение под Android DroidRAC2, ради интереса надо будет попробовать.
Появилась кое-какая информация:
https://gee12.space/administrirovanie-klastera-serverov-1s-na-linux/
Спасибо за статью, очень всё здорово, но у меня так в итоге и не заработало по толком негуглящейся причине.
Переходишь по сайту (или открываешь через сам 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
Есть у кого-нибудь мысли на этот счёт?
Всё, разобрался. Надо было в моём случае прописать в default.vrd строчку для файлового варианта
ib=”File="/var/www/html/base/main";Ref=main;”>
Я как раз на это место на скрине обратил внимание, но сейчас времени не было разобраться какая должна быть строка подключения для файловой базы. Хорошо, что разобрались.
Да, только с лицензией не разобрался в итоге. Ща пробую не 8.3.11 накатить, мб прокатит
Добрый день
У меня сервер 1с на Linux 32 bit
Версия 1C:Enterprise 8.3 (8.3.15.1656). Патченый, имеются клиентские лицензии на 20 человек. Все работает нормально.
Но вот незадача: при попытке подключения по web в строке запроса после имени базы добавляется еще локаль видимо, типа /uk_UA/ или /ru_UA/, само подключение с сервером срабатывает, появляется окно входа, выбираешь из списка клиента, вводишь пароль, открывается интерфейс, но пустой. Все, что можно сделать – это включить калькулятор или посмотреть About. “Информационная база: ” Т.е. как бы не находит информационной базы. То же самое происходит и при попытке подключиться тонким клиентом. Куда смотреть? По поводу лицензии: web ругался на лицензию пока в настройках базы не выставил “Сервер выдает лицензии” или как там точно. После этого проблем не стало. Сама база на postgres на другой машине.
Добрый день. Судя по всему, конфигурация вашей базы не поддерживает запуск в режиме Тонкий клиент (соответственно, и веб)! Точно такое же поведение наблюдал, когда попытался запустить ЗУП 2.5 по веб.
А за инфу по поводу “Сервер выдает лицензии” спасибо.
Добрый день
А это как то исправляется, не знаете? Может через конфигуратор 1с? Я в 1с совсем мало чего понимаю
Нужно обновить конфу (если, конечно, есть новые версии с поддержкой тонкого клиента). Глянуть что за конфа можно в режиме Конфигуратора/Предприятия, жмякнув на оранжевой кнопке “i”