Три круга ада или разворачиваем сервер 1С Ubuntu + PostgreSQL с поддержкой веб-клиента (Apache)

Начну с того, что лично я не люблю 1С и сори за то, что статья попала в разработку. Так же извиняюсь за неформальный подход к статье и ошибки оформления, устал писать документы формальным языком, поэтому подошел к данному процессу по иному + писал саму статью по ночам.

Возникла потребность развернуть клиент-серверную 1С с возможностью публикации на веб-сервер. Тему я эту затрагивал еще год назад, было интересно, как работает серверная 1С-ка, в общем уже тогда я столкнулся с кучей проблем, в связи с тем что по данной теме нет почти информации и много подводных камней, по типу: а сервер 1С должен быть такой же версии, как и платформа; а Postgres должен быть именно Pro и именно патченный. И все эти камни всплывали только тогда, когда я уже все настроил. Поэтому передо мной сейчас стоит 2 цели, довести начатое до конца и написать пошаговую инструкцию, как же это делать.а я же за ошибками не следил

На то что статья, наберет положительные эмоции не рассчитываю, ибо уже сказал к 1С испытываю только негатив и отвращение. Поехали...

Для начала, что нужно:

  1. Сервачек под линухом (у меня под это дело Ubuntu 22.04)
  2. PostgreSQL Pro (с патчами от 1С)
  3. Платформа 1С (Конечно лицензия, ни каких пираток; Учебка не умеет подключаться к серверу. Учесть, что версия 1С на Бубунте должна быть такой же, как и сама платформа)
  4. Прямые руки (хотя, если я смог со своими кривыми руками, то и у вас выйдет)
  5. Бубен или барабан (не заменимая вещь при работе с 1С)

Предварительная настройка Бубнты

Сразу после аренды сервака меняю локализацию самого сервака, что бы потом не танцевать с бубном вокруг Postgre и сервером 1C.

sudo dpkg-reconfigure locales

Выбираю ru_RU.UTF-8 UTF-8

Рисунок 1. Смена локализации

Для корректной работы приложений необходимо установить шрифты из состава Microsoft Core Fonts:

sudo apt install ttf-mscorefonts-installer fontconfig

Устанавливаю утилитку для работы с изображениями. В интрнетах и на фурумах пишут, что она 1С нужна.

sudo apt install imagemagick curl

Установка PostgreSQL Pro

Идем на

Выбираем там нужную нам ОС, выбираем версию Postgre и заполняем форму, на почту приходит инструкция по установке (на gmail письмо будет в спаме).

Я устанавливаю 13 версию, вот такими действиями:

1) Установка (под root)

wget https://repo.postgrespro.ru/1c-13/keys/pgpro-repo-add.sh

1.1) Устанавливаем утилитку gnupg2 (без нее будет ошибка у 1С)

apt-get install gnupg2

1.2) Запускаю скрипт, скаченный в пункте 1

sh pgpro-repo-add.sh

2) Далее устанавливаем сам сервер:

apt-get install postgrespro-1c-13

3) Проверим состояние сервера Postgre:

systemctl status postgrespro-1c-13

Postgre активный и в норме, теперь надо его настроить:

Рисунок 2. Статус postgrespro-1c-13

Настройка PostgreSQL Pro

Добавляем службу в автозагрузку:

systemctl enable postgrespro-1c-13

Сразу вхожу под новым узером postgres:

sudo -u postgres psql

Задаю новый пароль:

\password postgres

Смотрю местонахождение hba_file:

SHOW hba_file; -- Выдал ответ: --------------------------------------- /var/lib/pgpro/1c-13/data/pg_hba.conf (1 row)

Вижу, что все конфиги лежат в /var/lib/pgpro/1c-13/data/.

Настрою удаленное подключение к БД.

Сразу редачу pg_hba.conf через nano

Можно и vim редактировать или блокнотом, но я люблю nano.

nano /var/lib/pgpro/1c-13/data/pg_hba.conf

Листаем вниз и добавляем строку.

host all all all password

Вот что вышло

Рисунок 3. Пример pg_hba.conf

Сохраняем(cntr+o) и закрываем (cntrl+x).

Открываем теперь postgresql.conf, он находиться в том же каталоге, что и hba_file

nano /var/lib/pgpro/1c-13/data/postgresql.conf

Ищем параметр listen_addresses, раскомментируем и задаем значение *

* по умолчанию, параметр закомментирован и настроен на прослушивание запросов только с локального сетевого интерфейса. В данном примере мы разрешили прослушивание запросов на всех IP-адресах (*), но, если требуется более безопасная настройка, можно просто перечислить последние через пробел.

Рисунок 4. Пример postgresql.conf

Делаем рестарт postgrespro-1c-13 и проверяем статус

systemctl restart postgrespro-1c-13 systemctl status postgrespro-1c-13

Статус сервиса активный, а значит все норм .

Рисунок 5. Статус сервиса postgresql

Открываем порты на Linux для удаленного доступа к серверу

У меня на Бубунте по умолчанию были все порты закрыты, так что открываем 5432 для БД; 1540 и 1541 для сервера 1С; 1560 — для запросов к базе данных (конфигарации) 1С. 443 + 80 добавил для апача (веб сервиса)

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 5432 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 5432 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 443 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 1540:1541 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 1560 -j ACCEPT

Потом я ребутнул сервак, что бы все сохранить и проверить, подниматься ли СУБД на автозапуске. После запуска статус службы - активна. А значит можно проверить удаленное подключение к БД. Открыл Dbeaver И подключусь к базе.

Я удивлен, но пока все нормально.

Рисунок 6. Тест соединения к СУБД

Установка дополнительных компонентов

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

sudo apt-get install imagemagick sudo apt-get install unixodbc sudo apt-get install libgsf-1-114 sudo apt-get update

Тут я заметил, что клиент который у меня качался уже около часа перестал качаться и пошел спать (1С предназначена, что бы страдать. Не могло все идти так гладко. Если бы я знал что убью еще 2 дня я бы бросил это дело сразу).

Установка сервера 1С

Теперь нам необходимо скачать дистрибутив сервера с портала 1С. Для этого логинимся под действующей учетной записью на https://releases.1c.ru и скачиваем файл Технологическая платформа 1С:Предприятия (64-bit) для Linux. (На картинке версия не как у меня в статье, скриншоты не мои)

Рисунок 7. Скачивание технологической платформы 1С

На сервере создам папку 1С.

mkdir 1c cd 1c

Переносим скачанный архив .tar.gz в данную папку.

И сразу командой все распаковываем в текущую папку:

tar xzvf deb64_8_3_18_1208.tar.gz

Выполняю ls, вижу что распокавались все пакеты из архива:

Рисунок 8. deb пакеты распаккованого архива deb64_8_3_18_1208.tar.gz

Далее я в тупую установил все deb пакеты (многие говорят, что есть какая то потребность устанавливать их по порядку определенному - но я ленив да и звучит это как бред):

sudo apt install ./*.deb

Запускаем службу 1С и получаем статус OK:

/opt/1cv8/x86_64/8.3.18.1208/srv1cv83 start
Рисунок 9. Запуск службы srv1cv83

Создадим символьную ссылку на службу srv1cv83 в /etc/init.d/. И добавим службу в автозагрузку:

ln -s /opt/1cv8/x86_64/8.3.18.1208/srv1cv83 /etc/init.d/srv1cv83 /lib/systemd/systemd-sysv-install enable srv1cv83

Рестартуем службу и проверяем ее статус работы

systemctl restart srv1cv83 systemctl status srv1cv83

Все супер, служба активна

Рисунок 9. Статус службы srv1cv83

Установка технологической платформы на клиент

Снова идем в https://releases.1c.ru и скачиваем файл Технологическая платформа 1С:Предприятия (64-bit) для своей ОС. (На картинке версия не как у меня в статье, скриншоты не мои, у меня старая версия просто потому, что она у меня была диске)

Внимание! Берем установщик именно полной технологической платформы. Ибо если у вас есть просто тонкий клиет - 1С скажет, что не может понять какой версии ваш сервер. При этом установщик платформы для клиента, должен совпадать с версией вашего сервера. У меня сервак 8.3.18.1208 и техплатформа под виндой тоже 8.3.18.1208.

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

Рисунок 10. Скачивание технологической платформы под Шиндовс

Запускаем установщик. Из скачанного архива windows64full.... запускаем. setup.exe.

Внимание! В данном окне обязательно выбираем установку Администрирование сервера 1С:Предприятия. Остальное можно оставить по умолчанию, или ставить по вашим потребностям.

Рисунок 11. Установка клиента платформы 1С: Предприятия

Делее прожимаем "далее", и оставляем все по умолчанию. После установки в меню пуск находим ссылку Регистрация утилиты администрирования серверов (версия) и запускаем ее от имени администратора (лично я в пуске нашел):

Рисунок 12. Регистрация утилиты администрирования

Открылась CMD и сразу закрылась, теперь у нас на компе есть доступ к панели Администрирования серверов 1С.

Ищем и запускаем утилиту Администрирование серверов 1С Предприятия:

Рисунок 13. Утилита для администрирования серверов 1С

В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers - выбираем: "Создать" -> "Центральный сервер 1С:Предприятие 8.3" - Пишем имя сервера 1С или его IP-адрес:

Рисунок 14. Подключение к центральному серверу

Пишем IP-адрес сервера (адрес бубунты, на которой крутиться наш сервак):

Рисунок 15. Подключение к новому центральному серверу

... и нажимаем OK. В панели управления появится подключение — переходим в раздел: "Кластеры" -> "Локальный кластер" -> кликаем правой кнопкой по Информационные базы: выбираем: "Создать" -> "Информационная база".

Рисунок 16. 

Заполняем параметры для создания новой базы:

Рисунок 16. Создание новой информационной базы на сервере

* в данном примере нами были заполнены:

  • Имя — задаем произвольное имя для подключения к базе.
  • Сервер баз данных — имя или IP-адрес базы. Задаем ip, нашей бубенты, где крутиться сервак 1С.
  • Тип СУБД — выбираем PostgreSQL.
  • База данных — имя базы данных.
  • Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
  • Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
  • Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.

База должна создастся, изначально я создал базу с именем Damo1 (накосячил с названием, ночь все таки) и сразу проверил, что она есть на сервере PostgreSQL. Посмотреть можно через DBeaver или PGAdmin.

Рисунок 17. Создание новой информационной базы на сервере

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

Рисунок 18. Добавление уже существующей бащы в платформу

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

Рисунок 19. Подключаемся к серверу

Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся, хотел бы я сказать - но увидел сообщение о том что моя лицензия (клиентская) протухла.

Рисунок 20. Получение лицензии

Написал другу у которого остались лишние лицензии, и собственно за помощь в настройке сервака (почему родилась эта статья), он мне дал заветный ключик (История о том, как Ваня потерял одно рабочее место). После проверки лицензии базка подключилась и в ней уже можно работать.

Рисунок 21. Успешный вход в конфигарацию новой базы на сервере

Написал модуль приложения для 1С и попытался запустить его, вроде работает. А вроде было предупреждение о том, что нет шрифта (я его ставил в самом начале)

Рисунок 22. Сообщение 

А еще я познал новую боль - время отладки одной команды - заняло пару минут (1С испытывает мои нервы на прочность)

Заменил сообщить на ПоказатьОповещениеПользователя и пусто.

Мне не нравиться, что команда ПоказатьОповещениеПользователя("Привет, мир!",,"В самом деле привет!"); - не работает. Поэтому я снова на сервере переустановил шрифты (оказалось, что шрифты реально не были установлены, все таки кривые руки дают о себе знать)

Выполнил на Бубунте:

apt-get -y install ttf-mscorefonts-installer fc-cache –fv

Запустил конфигурацию, сообщения - нет. Ребутнул Убунту - сообщения нет ). Перезапустил клиент - сообщения нет ). Сделал три удара в бубен - сообщения нет (обычно бубен с ошибками в 1С, магическим образом их решал)

Заменил ПоказатьОповещениеПользователя предупреждение, и о чудо есть сообщение - бубен помог.

Рисунок 23. Предупреждение пользователя

Настройка web клиента на Apache

Дело за малым установить apache2 и опубликовать на web-сервер 1С

1) Коннектимся к Ubuntu

2) Вводи команду

apt-get install apache2

3) Сразу apache в автозагрузку пихаем

systemctl enable apache2

4) Запускаем

systemctl start apache2

5) Проверяем статус

systemctl start apache2

Статус - активен. Все значит в норме

Рисунок 24. Состояние службы apache

80 порт apache по умолчанию мы открыли в начале, значит переходим в браузеру по адресу сервака.

Еще надо 443 открыть!!! Тоже в начале открывал в пункте подготовки, но обязательно проверьте доступность 80 и 443 порта.

Рисунок 25. Стартовая страница apache

Видим страницу стартовую, значит все в норме. В остальные настройки apache лезть не буду ибо не хочу. Просто попытаюсь опубликовать имеющуюся конфигурацию внутрь, оставив все по умолчанию.

Попытаюсь, сейчас опубликовать конфигурацию через конфигуратор. Вкладка администрирование -> публикация на web-сервер.

Если у вас руки из правильного места растут, то вы увидите такое окно (Лично я его не увидел, если вы тоже идите дальше по статье):

Рисунок 26. Окно публикации базы на веб сервер

Если же вы увидели это самое, заветное окно публикации базы в путь к веб-серверу пишите любую рандомную пустую папку. Я для этого в Temp создал пустую папку 1CServ и ее же указал. Жмякаем публикацию и у вас на сервере опубликуется база. Первоначально, я не увидел данное окно, поэтому пришлось потанцевать с бубном (если у вас все норм, можете не читать дальше. После публикации вы увидите, сообщение о том, что 1С надо перезапустить Apache согласитесь с этим и нажмите ОК. Потом проверяйте публикацию через браузер по адресу:

http://{domen}/demo
*Где {domen} - непосредственно домен вашего сервера, на котором стоит Бубунта или ее ip адрес.)

Я увидел такое окно:

Рисунок 27. Ошибка веб-клиент недоступен

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

Собственно вот диаграмма, как оно работает (должно работать):

Рисунок 28. Даиграмма взаимодействия клиента с кластером серверов и веб-сервера

Ну что же, раз 1С не видит Apache, то руками закинем (опубликуем) нашу готовую конфигурацию на веб-сервере (уметь это все равно будет полезно).

Ручная публикация базы готовой гонфигурации:

Создадим папку для vrd-файла:

mkdir -p /var/www/1c/demo

Создадим файл конфигурации apache:

touch /etc/apache2/conf-available/demo.conf

Переходим в каталог платформы:

cd /opt/1cv8/x86_64/8.3.18.1208

Публикуем базу:

./webinst -apache24 -wsdir demo -dir '/var/www/1c/demo' -connstr 'Srvr="localhost";Ref="Demo1";' -confPath /etc/apache2/conf-available/demo.conf

Перезагружаем настройки веб-сервера:

systemctl reload apache2

Подключаем демо конфигурацию:

a2enconf demo

Перезапускаем веб-сервер с применением изменений:

systemctl restart apache2

Теперь можно открыть конфигурацию в веб-браузере по её URL: http://{domen}/demo

*Где {domen} - непосредственно домен вашего сервера, на котором стоит Бубунта или ее ip адрес.

Видим окно 1С, все супер. Значит руки растут откуда надо ). Поздравляю у вас реально стальные нервы (А apache работает, как надо).

Далее я расскажу, почему же я не увидел то заветное окно в конфигураторе, через которое 1С может само опубликовать базу.

  1. Я забыл открыть порт 443 (это я исправил уже в начале статьи)
  2. У меня не было ssl сертификата (о том, как сделать самоподписывающийся сертификат написано нижен)
  3. Третье проблемой может стать, то что у вас незаданно доменное имя в hosts. (у меня нет такой проблемы, но как исправить я тоже покажу)

Делаем себе самоподписывающийся сертификат

Скопипастил отсюда (у меня по данной инструкции все заработало):

1. Требуется установить snapd:

sudo apt install snapd

2. Убедитесь, что ваша версия snapd обновлена, введя команду:

sudo snap install core; sudo snap refresh core

3. Установка бесплатного ssl-сертификата выполняется через Certbot. Если вы работаете на сервере, на котором ранее была установлена более старая версия Certbot.

sudo apt remove certbot

Установить certbot

sudo snap install --classic certbot

4. Затем для удобства установим симлинк:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Настройка веб-сервера для работы по HTTPS-протоколу выполнится автоматически.

Так как нам нужен сертификат на апач, выполняем именно эту команду:

sudo certbot --apache

Просит ввести email - вводим и жмем enter. Потом несколько раз соглашаемся с требованиями.

В конце выводиться просьба выбрать на какой домен выдается сертификат, если у вас нет домена пишем: {IP}.sslip.io

* Где {IP} - это адрес бубунты

Теперь на всякий случай я меняю дефолтную конфигурацию apache

nano /etc/apache2/sites-available/000-default.conf

Задаю параметр RewriteCond %{SERVER_NAME} ={IP}.sslip.io

* Где {IP} - это адрес бубунты

Вышло так:

Рисунок 29. Файл 000-default.conf

Сохраняем файл. И перезапускаем apache.

sudo systemctl restart apache2

Проверяем статус службы:

sudo systemctl status apache2

Указываем домен в файле hosts

На всяких форумах для дядь 1С-ников, написано что это тоже может стать причиной.

1) Открываем файл hosts

nano /etc/hosts

2) В первой строке вводим

127.0.0.1 {IP}.sslip.io

* Где {IP} - это адрес бубунты

На всякий случай ребутнул сервак.

И снова сделал русную публикацию базы, что бы пересобрать файл конфигурации:Создадим файл конфигурации apache:

touch /etc/apache2/conf-available/demo.conf

Переходим в каталог платформы:

cd /opt/1cv8/x86_64/8.3.18.1208

Публикуем базу:

./webinst -apache24 -wsdir demo -dir '/var/www/1c/demo' -connstr 'Srvr="localhost";Ref="Demo1";' -confPath /etc/apache2/conf-available/demo.conf

Рестартуем apache:

sudo systemctl restart apache2

Итог

И так, потратив субботу я почти все настроил, потратив воскресенье я осознал свои ошибки и исправил их. Потратив еще одну ночь понедельника я внес все правки в статью и начал ее редачить. Ночью вторника закончил редачить статью и вот что вышло. Надеюсь она поможет кому нибудь. Советую никому не связываться с 1С, это было слишком мучительно.

0
8 комментариев
Написать комментарий...
Аня-Кристина

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

Ответить
Развернуть ветку
Denis
Автор

Подход такой выбран из-за экономии. Своми руками = почти даром.

Ответить
Развернуть ветку
Ilya

Хоть вы и не ожидали, но лайк)
Кстати, команды apt не обязательно вводить по одной. Достаточно указать все пакеты через пробел и использовать флаг -y, чтобы каждый раз не давать согласие на установку.

Ответить
Развернуть ветку
OmManiPadmeHum

и все этом можно собрать в докер

Ответить
Развернуть ветку
МихаилSadMadСинельников

Не так давно разбирался с похожим действием. Только еще публиковал сервисы и первичную аутентификацию в ЛК для одного решения на 1С

Ответить
Развернуть ветку
Nikolas Lavrentiev

Требуется ли для вышеизложенного лицензия 1С-Сервер?

Ответить
Развернуть ветку
Denis
Автор

В статье написано же:

Разберу поподробнее:
У меня лицензии 1С сервера не было (сервер не подтверждал лицензии).
Была лицензия на самом толстом клиенте (зайдя через десктоп, я мог залить конфигурацию, и менять ее ну и пользоваться благами единой работы с базой)

Из минусов - из под браузера не открывалась конфигурация, т.к. сервер не давал подтверждение о лицензии.

Плюсы сервиса лицензирования на сервере Линукс (в статье не описано, как его ставить). Пользователю, при подключении к нашему серверу не надо вводить ключ лицензии (или вставлять флешку с ключем) - сервер сам отправляет информацию о лицензии. (Но я уже написал не мой вариант)

Ответить
Развернуть ветку
Denis
Автор

Т.е. что бы эта балалайка работала верно.
Нужно:
1. Лицензия на толстом клиенте (лицензия по железу). Тогда можно и к серверу на котором нет лицензии коннект сделать
Или
2. Лицензия на сервере.

Ответить
Развернуть ветку
5 комментариев
Раскрывать всегда