Три круга ада или разворачиваем сервер 1С Ubuntu + PostgreSQL с поддержкой веб-клиента (Apache)
Начну с того, что лично я не люблю 1С и сори за то, что статья попала в разработку. Так же извиняюсь за неформальный подход к статье и ошибки оформления, устал писать документы формальным языком, поэтому подошел к данному процессу по иному + писал саму статью по ночам.
Возникла потребность развернуть клиент-серверную 1С с возможностью публикации на веб-сервер. Тему я эту затрагивал еще год назад, было интересно, как работает серверная 1С-ка, в общем уже тогда я столкнулся с кучей проблем, в связи с тем что по данной теме нет почти информации и много подводных камней, по типу: а сервер 1С должен быть такой же версии, как и платформа; а Postgres должен быть именно Pro и именно патченный. И все эти камни всплывали только тогда, когда я уже все настроил. Поэтому передо мной сейчас стоит 2 цели, довести начатое до конца и написать пошаговую инструкцию, как же это делать.а я же за ошибками не следил
На то что статья, наберет положительные эмоции не рассчитываю, ибо уже сказал к 1С испытываю только негатив и отвращение. Поехали...
Для начала, что нужно:
- Сервачек под линухом (у меня под это дело Ubuntu 22.04)
- PostgreSQL Pro (с патчами от 1С)
- Платформа 1С (Конечно лицензия, ни каких пираток; Учебка не умеет подключаться к серверу. Учесть, что версия 1С на Бубунте должна быть такой же, как и сама платформа)
- Прямые руки (хотя, если я смог со своими кривыми руками, то и у вас выйдет)
- Бубен или барабан (не заменимая вещь при работе с 1С)
Предварительная настройка Бубнты
Сразу после аренды сервака меняю локализацию самого сервака, что бы потом не танцевать с бубном вокруг Postgre и сервером 1C.
Выбираю ru_RU.UTF-8 UTF-8
Для корректной работы приложений необходимо установить шрифты из состава Microsoft Core Fonts:
Устанавливаю утилитку для работы с изображениями. В интрнетах и на фурумах пишут, что она 1С нужна.
Установка PostgreSQL Pro
Идем на
Выбираем там нужную нам ОС, выбираем версию Postgre и заполняем форму, на почту приходит инструкция по установке (на gmail письмо будет в спаме).
Я устанавливаю 13 версию, вот такими действиями:
1) Установка (под root)
1.1) Устанавливаем утилитку gnupg2 (без нее будет ошибка у 1С)
1.2) Запускаю скрипт, скаченный в пункте 1
2) Далее устанавливаем сам сервер:
3) Проверим состояние сервера Postgre:
Postgre активный и в норме, теперь надо его настроить:
Настройка PostgreSQL Pro
Добавляем службу в автозагрузку:
Сразу вхожу под новым узером postgres:
Задаю новый пароль:
Смотрю местонахождение hba_file:
Вижу, что все конфиги лежат в /var/lib/pgpro/1c-13/data/.
Настрою удаленное подключение к БД.
Сразу редачу pg_hba.conf через nano
Можно и vim редактировать или блокнотом, но я люблю nano.
Листаем вниз и добавляем строку.
Вот что вышло
Сохраняем(cntr+o) и закрываем (cntrl+x).
Открываем теперь postgresql.conf, он находиться в том же каталоге, что и hba_file
Ищем параметр listen_addresses, раскомментируем и задаем значение *
* по умолчанию, параметр закомментирован и настроен на прослушивание запросов только с локального сетевого интерфейса. В данном примере мы разрешили прослушивание запросов на всех IP-адресах (*), но, если требуется более безопасная настройка, можно просто перечислить последние через пробел.
Делаем рестарт postgrespro-1c-13 и проверяем статус
Статус сервиса активный, а значит все норм .
Открываем порты на Linux для удаленного доступа к серверу
У меня на Бубунте по умолчанию были все порты закрыты, так что открываем 5432 для БД; 1540 и 1541 для сервера 1С; 1560 — для запросов к базе данных (конфигарации) 1С. 443 + 80 добавил для апача (веб сервиса)
Потом я ребутнул сервак, что бы все сохранить и проверить, подниматься ли СУБД на автозапуске. После запуска статус службы - активна. А значит можно проверить удаленное подключение к БД. Открыл Dbeaver И подключусь к базе.
Я удивлен, но пока все нормально.
Установка дополнительных компонентов
Снова мне форумы сказали, что помимо шрифтов нужны доп. компоненты. И без них реально 1С сервер не работал, устанавливаем их (Вводить по строчке, там нужно согласия протыкать).
Тут я заметил, что клиент который у меня качался уже около часа перестал качаться и пошел спать (1С предназначена, что бы страдать. Не могло все идти так гладко. Если бы я знал что убью еще 2 дня я бы бросил это дело сразу).
Установка сервера 1С
Теперь нам необходимо скачать дистрибутив сервера с портала 1С. Для этого логинимся под действующей учетной записью на https://releases.1c.ru и скачиваем файл Технологическая платформа 1С:Предприятия (64-bit) для Linux. (На картинке версия не как у меня в статье, скриншоты не мои)
На сервере создам папку 1С.
Переносим скачанный архив .tar.gz в данную папку.
И сразу командой все распаковываем в текущую папку:
Выполняю ls, вижу что распокавались все пакеты из архива:
Далее я в тупую установил все deb пакеты (многие говорят, что есть какая то потребность устанавливать их по порядку определенному - но я ленив да и звучит это как бред):
Запускаем службу 1С и получаем статус OK:
Создадим символьную ссылку на службу srv1cv83 в /etc/init.d/. И добавим службу в автозагрузку:
Рестартуем службу и проверяем ее статус работы
Все супер, служба активна
Установка технологической платформы на клиент
Снова идем в https://releases.1c.ru и скачиваем файл Технологическая платформа 1С:Предприятия (64-bit) для своей ОС. (На картинке версия не как у меня в статье, скриншоты не мои, у меня старая версия просто потому, что она у меня была диске)
Внимание! Берем установщик именно полной технологической платформы. Ибо если у вас есть просто тонкий клиет - 1С скажет, что не может понять какой версии ваш сервер. При этом установщик платформы для клиента, должен совпадать с версией вашего сервера. У меня сервак 8.3.18.1208 и техплатформа под виндой тоже 8.3.18.1208.
Год назад я не знал, о данных нюансах и никто не писал о них, поэтому зафакапил все в последний момент и бросил это дурное дело. Так что советую не скипать это предупреждение.
Запускаем установщик. Из скачанного архива windows64full.... запускаем. setup.exe.
Внимание! В данном окне обязательно выбираем установку Администрирование сервера 1С:Предприятия. Остальное можно оставить по умолчанию, или ставить по вашим потребностям.
Делее прожимаем "далее", и оставляем все по умолчанию. После установки в меню пуск находим ссылку Регистрация утилиты администрирования серверов (версия) и запускаем ее от имени администратора (лично я в пуске нашел):
Открылась CMD и сразу закрылась, теперь у нас на компе есть доступ к панели Администрирования серверов 1С.
Ищем и запускаем утилиту Администрирование серверов 1С Предприятия:
В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers - выбираем: "Создать" -> "Центральный сервер 1С:Предприятие 8.3" - Пишем имя сервера 1С или его IP-адрес:
Пишем IP-адрес сервера (адрес бубунты, на которой крутиться наш сервак):
... и нажимаем OK. В панели управления появится подключение — переходим в раздел: "Кластеры" -> "Локальный кластер" -> кликаем правой кнопкой по Информационные базы: выбираем: "Создать" -> "Информационная база".
Заполняем параметры для создания новой базы:
* в данном примере нами были заполнены:
- Имя — задаем произвольное имя для подключения к базе.
- Сервер баз данных — имя или IP-адрес базы. Задаем ip, нашей бубенты, где крутиться сервак 1С.
- Тип СУБД — выбираем PostgreSQL.
- База данных — имя базы данных.
- Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
- Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
- Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.
База должна создастся, изначально я создал базу с именем Damo1 (накосячил с названием, ночь все таки) и сразу проверил, что она есть на сервере PostgreSQL. Посмотреть можно через DBeaver или PGAdmin.
Теперь запускаем 1С клиент и добавляем новую базу - при добавлении выбираем Добавление в список существующей информационной базы:
Указываем произвольное имя информационной базы, а также выбираем тип расположения базы На сервере 1С:Предприятия:
Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся, хотел бы я сказать - но увидел сообщение о том что моя лицензия (клиентская) протухла.
Написал другу у которого остались лишние лицензии, и собственно за помощь в настройке сервака (почему родилась эта статья), он мне дал заветный ключик (История о том, как Ваня потерял одно рабочее место). После проверки лицензии базка подключилась и в ней уже можно работать.
Написал модуль приложения для 1С и попытался запустить его, вроде работает. А вроде было предупреждение о том, что нет шрифта (я его ставил в самом начале)
А еще я познал новую боль - время отладки одной команды - заняло пару минут (1С испытывает мои нервы на прочность)
Заменил сообщить на ПоказатьОповещениеПользователя и пусто.
Мне не нравиться, что команда ПоказатьОповещениеПользователя("Привет, мир!",,"В самом деле привет!"); - не работает. Поэтому я снова на сервере переустановил шрифты (оказалось, что шрифты реально не были установлены, все таки кривые руки дают о себе знать)
Выполнил на Бубунте:
Запустил конфигурацию, сообщения - нет. Ребутнул Убунту - сообщения нет ). Перезапустил клиент - сообщения нет ). Сделал три удара в бубен - сообщения нет (обычно бубен с ошибками в 1С, магическим образом их решал)
Заменил ПоказатьОповещениеПользователя предупреждение, и о чудо есть сообщение - бубен помог.
Настройка web клиента на Apache
Дело за малым установить apache2 и опубликовать на web-сервер 1С
1) Коннектимся к Ubuntu
2) Вводи команду
3) Сразу apache в автозагрузку пихаем
4) Запускаем
5) Проверяем статус
Статус - активен. Все значит в норме
80 порт apache по умолчанию мы открыли в начале, значит переходим в браузеру по адресу сервака.
Еще надо 443 открыть!!! Тоже в начале открывал в пункте подготовки, но обязательно проверьте доступность 80 и 443 порта.
Видим страницу стартовую, значит все в норме. В остальные настройки apache лезть не буду ибо не хочу. Просто попытаюсь опубликовать имеющуюся конфигурацию внутрь, оставив все по умолчанию.
Попытаюсь, сейчас опубликовать конфигурацию через конфигуратор. Вкладка администрирование -> публикация на web-сервер.
Если у вас руки из правильного места растут, то вы увидите такое окно (Лично я его не увидел, если вы тоже идите дальше по статье):
Если же вы увидели это самое, заветное окно публикации базы в путь к веб-серверу пишите любую рандомную пустую папку. Я для этого в Temp создал пустую папку 1CServ и ее же указал. Жмякаем публикацию и у вас на сервере опубликуется база. Первоначально, я не увидел данное окно, поэтому пришлось потанцевать с бубном (если у вас все норм, можете не читать дальше. После публикации вы увидите, сообщение о том, что 1С надо перезапустить Apache согласитесь с этим и нажмите ОК. Потом проверяйте публикацию через браузер по адресу:
http://{domen}/demo
*Где {domen} - непосредственно домен вашего сервера, на котором стоит Бубунта или ее ip адрес.)
Я увидел такое окно:
День убил, на то что бы понять какого хрена 1С сервер, не видит веб сервер, который крутиться рядом с ним (ниже все исправляю).
Собственно вот диаграмма, как оно работает (должно работать):
Ну что же, раз 1С не видит Apache, то руками закинем (опубликуем) нашу готовую конфигурацию на веб-сервере (уметь это все равно будет полезно).
Ручная публикация базы готовой гонфигурации:
Создадим папку для vrd-файла:
Создадим файл конфигурации apache:
Переходим в каталог платформы:
Публикуем базу:
Перезагружаем настройки веб-сервера:
Подключаем демо конфигурацию:
Перезапускаем веб-сервер с применением изменений:
Теперь можно открыть конфигурацию в веб-браузере по её URL: http://{domen}/demo
*Где {domen} - непосредственно домен вашего сервера, на котором стоит Бубунта или ее ip адрес.
Видим окно 1С, все супер. Значит руки растут откуда надо ). Поздравляю у вас реально стальные нервы (А apache работает, как надо).
Далее я расскажу, почему же я не увидел то заветное окно в конфигураторе, через которое 1С может само опубликовать базу.
- Я забыл открыть порт 443 (это я исправил уже в начале статьи)
- У меня не было ssl сертификата (о том, как сделать самоподписывающийся сертификат написано нижен)
- Третье проблемой может стать, то что у вас незаданно доменное имя в hosts. (у меня нет такой проблемы, но как исправить я тоже покажу)
Делаем себе самоподписывающийся сертификат
Скопипастил отсюда (у меня по данной инструкции все заработало):
1. Требуется установить snapd:
2. Убедитесь, что ваша версия snapd обновлена, введя команду:
3. Установка бесплатного ssl-сертификата выполняется через Certbot. Если вы работаете на сервере, на котором ранее была установлена более старая версия Certbot.
Установить certbot
4. Затем для удобства установим симлинк:
Настройка веб-сервера для работы по HTTPS-протоколу выполнится автоматически.
Так как нам нужен сертификат на апач, выполняем именно эту команду:
Просит ввести email - вводим и жмем enter. Потом несколько раз соглашаемся с требованиями.
В конце выводиться просьба выбрать на какой домен выдается сертификат, если у вас нет домена пишем: {IP}.sslip.io
* Где {IP} - это адрес бубунты
Теперь на всякий случай я меняю дефолтную конфигурацию apache
Задаю параметр RewriteCond %{SERVER_NAME} ={IP}.sslip.io
* Где {IP} - это адрес бубунты
Вышло так:
Сохраняем файл. И перезапускаем apache.
Проверяем статус службы:
Указываем домен в файле hosts
На всяких форумах для дядь 1С-ников, написано что это тоже может стать причиной.
1) Открываем файл hosts
2) В первой строке вводим
* Где {IP} - это адрес бубунты
На всякий случай ребутнул сервак.
И снова сделал русную публикацию базы, что бы пересобрать файл конфигурации:Создадим файл конфигурации apache:
Переходим в каталог платформы:
Публикуем базу:
Рестартуем apache:
Итог
И так, потратив субботу я почти все настроил, потратив воскресенье я осознал свои ошибки и исправил их. Потратив еще одну ночь понедельника я внес все правки в статью и начал ее редачить. Ночью вторника закончил редачить статью и вот что вышло. Надеюсь она поможет кому нибудь. Советую никому не связываться с 1С, это было слишком мучительно.
я в этом ничего не понимаю, но прочла. хд очень подкупил ваш подход «сделаю полезное сквозь дебри ненависти»
Подход такой выбран из-за экономии. Своми руками = почти даром.
Хоть вы и не ожидали, но лайк)
Кстати, команды apt не обязательно вводить по одной. Достаточно указать все пакеты через пробел и использовать флаг -y, чтобы каждый раз не давать согласие на установку.
и все этом можно собрать в докер
Не так давно разбирался с похожим действием. Только еще публиковал сервисы и первичную аутентификацию в ЛК для одного решения на 1С
Требуется ли для вышеизложенного лицензия 1С-Сервер?
В статье написано же:
Разберу поподробнее:
У меня лицензии 1С сервера не было (сервер не подтверждал лицензии).
Была лицензия на самом толстом клиенте (зайдя через десктоп, я мог залить конфигурацию, и менять ее ну и пользоваться благами единой работы с базой)
Из минусов - из под браузера не открывалась конфигурация, т.к. сервер не давал подтверждение о лицензии.
Плюсы сервиса лицензирования на сервере Линукс (в статье не описано, как его ставить). Пользователю, при подключении к нашему серверу не надо вводить ключ лицензии (или вставлять флешку с ключем) - сервер сам отправляет информацию о лицензии. (Но я уже написал не мой вариант)