Установка postgresql для 1с windows server 2019

Пошаговое руководство по установке и первичной настройке сервера 1С:Предприятия 8.3 версии 8.3.19.1229 в ОС Microsoft Windows Server 2019 Standard с использованием СУБД PostgreSQL-11.7-5-1C и системы защиты HASP (USB-ключа).

Подготовка

Запускаем службу Вторичный вход в систему и в свойствах выбираем Запускать автоматически

# services.msc

На машинах, где будет установлено 1С-Предприятие, открываем в блокноте с правами администратора сервера файл C:\Windows\System32\drivers\etc\hosts и допишем в нём:

192.168.1.15	SRV15
  • 192.168.1.15 — IP-адрес сервера
  • SRV15 — имя хоста сервера

Скачиваем с официального ресурса 1С https://releases.1c.ru/ платформу 1c-enterprise-8.3 full (текущую версию) и СУБД postgresql-11.7-5.1C-x64 (или текущую версию).

Установка и настройка СУБД postgresql-11.7-5.1C

Запускаем дистрибутив postgresql-11.7-5.1C(x64) для установки

устанавливаем как сервис и при необходимости меняем пути

инициализируем кластер и устанавливаем пароль для пользователя postgres

Запускаем службу: Пуск — PostgreSQL 11.7-5.1C(x64) — Start Service

Распаковываем архив и в нём запускаем setup.exe

Для установки сервера выбрать компоненты

  • Сервер 1С:Предприятия 8
  • Администрирование сервера 1С:Предприятия
  • Сервер хранилища конфигураций 1С:Предприятия
  • Дополнительные функции администрирования
  • Контроль целостности
  • Интерфейсы на различных языках: Английский и Русский

Выбираем язык интерфейса — Русский

Устанавливаем сервер как сервис и создадим пользователя USR1CV8 и пароль к нему

Устанавливаем драйвер аппаратных ключей защиты

и завершаем установку.

Настройка сервера 1С:Предприятие 8.3

После установки запускаем сервер: Пуск — 1С Предприятие 8 (x86-64) — Запуск сервера x86-64

Регистрирует утилиту администрирования серверов: Пуск — 1С Предприятие 8 (x86-64) — Регистрация утилиты администрирования серверов x86-64

Запускаем консоль администратора: Пуск — 1С Предприятие 8 (x86-64) — Администрирование серверов 1С Предприятия x86-64

на пункте Central 1C:Enterprise 8.3 servers жмём правой кнопкой мыши — Создать — Центральный сервер 1С:Предприятия 8.3

Вводим имя сервера и, если необходимо, описание

Теперь сервер отображается в консоли

Создадим информационную базу

Пропишем имя ИБ, описание, адрес сервера БД: localhost (если сервер развёрнут на той же машине, что и СУБД), имя БД, пользователя postgres и пароль, а также отметим чек-бокс Создать базу данных в случае её отсутствия

и информационная база появилась в оснастке консоли

Теперь вставляем USB-ключ HASP и на всякий случай перезагрузим машину.

Установка и настройка клиента 1С:Предприятие 8.3

Распаковываем архив и в нём запускаем setup.exe

Будут отмечены компоненты:

  • 1С:Предприятие 8
  • Интерфейсы на различных языках — Английский и Русский

Этого вполне достаточно.

Будет создан ярлык 1С Предприятие. Запускаем его и сразу будет предложено добавить информационную базу

Соглашаемся.

Выбираем существующую информационную базу

Выберем тип расположения — На сервере 1С:Предприятия.

Заполним: Кластер серверов: SRV15, Имя информационной базы: db_1c (то же, что и было добавлено в консоли администрирования)

В Версию 1С:Предприятия впишем 8.3, в Разрядность64 (x86_64)

и информационная база появится в списке

Заключение

Если при установке и настройке вышеперечисленных пунктов не возникало никаких сообщений об ошибках, значит настройка прошла корректно. Но нельзя забывать о лицензии — это USB-ключ аппаратной защиты HASP. При работе в 1С-Предприятии его наличие обязательно.

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

1С тормозит. Корову можно кормить топовыми процессорами, SSD и немеряным количеством оперативки, но гепардом она всё равно не станет. Этому есть несколько причин:

  • Транзакционная модель, от этого в финансах не уйти. Транзакция сидит на транзакции и транзакцией погоняет. Опять же, транзакции подразумевают блокировки, пока блокировка не будет снята, объект не станет доступным другим пользователям.
  • Доступность среды разработки. Куча разработчиков сидят, что-то там программируют. Бесконечные циклы, утечки памяти, перерасход ресурсов, кривые руки и непонимание того, что они делают. Ладно бы это делалось централизованно, но сколько 1С серверов, столько и разработчиков. Одну и ту же задачу можно решить разными способами, зачастую решение задачи оказывается не самым оптимальным. В итоге мы слышим: «Это железо тормозит!» «Это база тормозит!»
  • Временные таблицы. Весь 1С построен на временных таблицах. На каждый чих создаётся временная таблица, с которой проводятся операции, на них даже индексы строятся. И если БД не может правильно обрабатывать временные таблицы, то успеха не будет. Table Scan — не самая быстрая операция.
  • Неправильные настройки сервера БД. Кривые настройки — такой же результат.

Сегодня будем настраивать PostgreSQL 11.9 на сервере Windows Server 2019.

Что лучше: MSSQL или PostgreSQL?

Сложно сказать. С одной стороны, крутые исследователи заявляют о том, что правильно настроенный PostgreSQL выигрывает у MSSQL:

https://infostart.ru/1c/articles/962876/

И тут я такой: «А если поднять у MSSQL tempdb в RAM диск?» И снова становится непонятно. Но понятно одно, MSSQL стоит денег, а PostgreSQL бесплатный.

Итак, тестовый стенд (или правильнее сказать, реальный?):

  • Сервер, виртуальный, операционная система Windows Server 2019 Standard, триальная.
  • CPU: 16 ядер
  • ОЗУ: 64 ГБ
  • Диск SSD, отдельный для БД.
  • Размер базы: 50 Гб
  • 1С 8.3 и PostgreSQL 11.9-1.1C вместе на одном сервере
  • 50 аккаунтов пользователей 1С в настоящее время

По хорошему, мух следует отделять от котлет. И разносить 1С и БД на разные серверы. Однако, на практике, часто бывает иначе. Сервер имеется один, на нём размещают и базу и сервер 1С. И это не просто предположение, вчера привезли новый сервер и поставили задачу: установить Windows, MSSQL и 1С. Всё на одну машину. Но это немного другая история, не связанная с текущей.

Как разделить ресурсы между 1С и PostgreSQL?

Очень просто. 50 пользователей 1С работают в разное время, создают 3-4 рабочих процесса и забирают примерно 8-12 Гб ОЗУ. Оперативку я мысленно разделил так: 75% (48 Гб) отдаём PostgreSQL, 25% (16 Гб) отдаём 1С.

Следовательно, для настроек PostgreSQL я исхожу из цифр:

  • CPU: 16 ядер
  • ОЗУ: 48 ГБ
  • Диск: SSD
  • Количество пользователей 1С: 100 (с расчётом на будущее)

Далее RAM — это 48 Гб, которые выделены для PostgreSQL.

Полезные ссылки

https://pgtune.leopard.in.ua/

https://infostart.ru/public/554213/

http://www.gilev.ru/postgresql/

Настройка PostgreSQL 11.9

Основной файл настроек PostgreSQL — postgresql.conf. Приступим.

Сеть

max_connections = 100

Максимальное количество одновременных подключений к БД. Я просто установил в два раза больше, чем текущее количество 1С пользователей. К базе ещё подключается пользователь для мониторинга и администраторы. Если будет не хватать, то можно потом изменить параметры.

Память

shared_buffers = 12GB

Количество памяти, выделенное для кэша страниц. Рекомендуется от 1/8 до 1/4 RAM. Вычисляю: 48 Гб / 4 = 12 Гб.

maintenance_work_mem = 2024MB

Лимит памяти для внутренних обслуживающих задач. Рекомендуется 1/4 RAM. Однако, при увеличении больше 2024MB служба PostgreSQL не запускается.

effective_cache_size = 36GB

Кэш файловой системы. Планировщик исходя из этого параметра принимает решение об использовании больших индексов (IndexScan), и это хорошо. Рекомендуется RAM — shared_buffers. Вычисляю: 48 Гб — 12 Гб = 36 Гб.

work_mem = 2024MB

Лимит памяти для обработки одного запроса. При превышении этого объёма сервер начинает использовать временные файлы на диске. Рекомендуется от 1/32 до 1/16 RAM. Однако, при увеличении больше 2024MB служба PostgreSQL не запускается.

temp_buffers = 2024MB

Буфер под временные объекты, например, для временных таблиц. Рекомендуется 1/20 RAM. Однако, при увеличении больше 2024MB служба PostgreSQL не запускается.

Процессор

max_worker_processes = 16

Максимальное число фоновых процессов. Зависит от количества выделенных для PostgreSQL ядер CPU. По калькулятору.

max_parallel_workers = 8

Задаёт максимальное число рабочих процессов, которое система сможет поддерживать для параллельных запросов. Рекомендуют равным max_worker_processes, однако в этом случае какой-то «толстый» запрос может сожрать все потоки и другим не достанется. Использую половину процессоров.

max_parallel_workers_per_gather = 8

Задаёт максимальное число рабочих процессов, которые могут запускаться одним узлом Gather илиGather Merge. Не более max_parallel_workers, задал по максимуму.

max_parallel_maintenance_workers = 4

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

max_files_per_process = 1000

Задаёт максимальное число файлов, которые могут быть одновременно открыты каждым процессом. Значение по умолчанию — 1000 файлов.

autovacuum_max_workers = 4

Задаёт максимальное число процессов автоочистки (не считая процесс, запускающий автоочистку), которые могут выполняться одновременно. Чем больше запросов записи, тем больше процессов. Если база только для чтения, то достаточно одного процесса.

Диск

fsync = on​​​​​​

Если параметр fsync включён, то при выполнении операции COMMIT данные сразу переписываются из кэша операционной системы на диск, тем самым гарантируется целостность данных при возможном аппаратном сбое. При этом снижается производительность операций записи на диск, поскольку при этом не используются возможности отложенной записи данных операционной системы. Данный параметр можно отключать только при наличие аппаратного RAID контроллера с кэшем в режиме write-back и батарейкой для гарантированной записи данных при отключении питания.

#effective_io_concurrency = 2

Задаёт допустимое число параллельных операций ввода/вывода, которое говорит PostgreSQL о том, сколько операций ввода/вывода могут быть выполнены одновременно. Для магнитных носителей хорошим начальным значением этого параметра будет число отдельных дисков, составляющих массив RAID 0 или RAID 1, в котором размещена база данных. Для RAID 5 следует исключить один диск (как диск с чётностью). У меня один диск, поэтому у меня данный параметр закомментирован.

wal_sync_method = open_datasync

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

  • open_datasync – запись данных методом open() с параметром O_DSYNC,
  • fdatasync – вызов метода fdatasync() после каждого commit,
  • fsync_writethrough – вызывать fsync() после каждого commit игнорирую паралельные процессы,
  • fsync – вызов fsync() после каждого commit,
  • open_sync – запись данных методом open() с параметром O_SYNC.

Выбор метода зависит от операционной системы под управлением, которой работает PostgreSQL. Для Windows рекомендуется open_datasync. Для Linux — fdatasync.

#checkpoint_segments = 32

В версии PostgreSQL 11.9 не используется, поэтому у меня данный параметр закомментирован. Данный параметр определяет количество сегментов (каждый по 16 МБ) лога транзакций между контрольными точками. В зависимости от объема данных установите этот параметр в диапазоне от 12 до 256 сегментов и, если в логе появляются предупреждения (warning) о том, что контрольные точки происходят слишком часто, постепенно увеличивайте его. Можно установить в 32 (если у вас PostgreSQL поддерживает этот параметр) и дальше смотреть предупреждения в логе.

checkpoint_completion_target = 0.9

Часть интервала контрольной точки. Рекомендуется максимальное значение 0.9.

wal_buffers = 16MB

PostgreSQL сначала пишет в буферы, а затем эти буферы сбрасываются в WAL файлы на диск. По молчанию 16MB.

min_wal_size = 4GB

Минимальный размер WAL файла. Установил чуть больше, чем предложил калькулятор.

max_wal_size = 16GB

Максимальный размер WAL файла. Рекомендуется от 2 * min_wal_size до 4 * min_wal_size.

autovacuum = on

Включение автоочистки.

bgwriter_delay = 20ms

Время сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.

bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400

Параметры, управляющие интенсивностью записи фонового процесса записи. За один цикл bgwriter записывает не больше, чем было записано в прошлый цикл, умноженное на bgwriter_lru_multiplier, но не больше чем gwriter_lru_maxpages.

Параметры, управляющие интенсивностью записи фонового процесса записи.

synchronous_commit = off

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

commit_delay = 1000

Пауза в микросекундах перед собственно выполнением сохранения WAL.

commit_siblings = 5

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

Оптимизатор запросов

default_statistics_target = 300

Количество записей, просматриваемых при сборе статистики по таблицам. Рекомендуется для 1С от 1000 до 10000. Я поставил 300, если будут зависания, параметр можно увеличить.

from_collapse_limit = 20

Задаёт максимальное число элементов в списке FROM, до которого планировщик будет объединять вложенные запросы с внешним запросом. При меньших значениях сокращается время планирования, но план запроса может стать менее эффективным.

join_collapse_limit = 6

Задаёт максимальное количество элементов в списке FROM, до достижения которого планировщик будет сносить в него явные конструкции JOIN (за исключением FULL JOIN). Рекомендуется 1, но сложные запросы с большим количеством соединений и источников данных станут надолго зависать. Поэтому ставлю чуть меньше значения по умолчанию — 6.

seq_page_cost = 0.1

Задаёт приблизительную стоимость последовательного чтения одной страницы с диска. Для NVMe дисков рекомендуется 0.1. Для HDD 1.5 — 2.0. Для SSD 1.1 — 1.3. Можно посмотреть характеристики ваших дисков.

random_page_cost = 0.4

Задаёт приблизительную стоимость случайного чтения одной страницы с диска. Рекомендуется ставить чуть больше чем seq_page_cost.

cpu_operator_cost = 0.00025

Задаёт приблизительную стоимость обработки оператора или функции при выполнении запроса. Рекомендуется 0.00025.

online_analyze.table_type = 'temporary'

Типы таблиц, для которых выполняется немедленный анализ:

  • all (все),
  • persistent (постоянные),
  • temporary (временные),
  • none (никакие).

При возникновении проблем с производительностью выполнения регламентных операций можно включить сбор статистики для всех таблиц: all.

online_analyze.threshold = 50

Минимальное число изменений строк, после которого может начаться немедленный анализ.

online_analyze.scale_factor = 0.1

Процент от размера таблицы, при котором начинается немедленный анализ.

online_analyze.min_interval = 10000

Минимальный интервал времени между вызовами ANALYZE для отдельной таблицы (в миллисекундах).

online_analyze.verbose = off

Отключаем подробные сообщения расширения online_analyze.

online_analyze.local_tracking = off

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

plantuner.fix_empty_table = on

plantuner будет обнулять число страниц/кортежей в таблице, которая не содержит никаких блоков в файле.

enable_nestloop = off

Отключает использование планов соединения с вложенными циклами.

enable_mergejoin = off

Отключает использование планов соединения слиянием.

Сбор статистики

track_counts = on

Включает сбор статистики активности в базе данных. Этот параметр по умолчанию включён, так как собранная информация требуется автоочистке.

standard_conforming_strings = off

Разрешить использовать символ «\» для экранирования.

escape_string_warning = off

Не выдавать предупреждение об использовании символа «\» для экранирования.

shared_preload_libraries = 'online_analyze, plantuner'

Библиотеки, которые будут загружаться при запуске сервера.

online_analyze.enable = on

Анализ статистики временных таблиц.

PostgreSQL

max_locks_per_transaction = 256

Этот параметр управляет средним числом блокировок объектов, выделяемым для каждой транзакции.

ssl = off

Шифрование. Если сеть защищена, то отключаем. Если 1С и PostgreSQL находятся на одном сервере — тем более отключаем.

Прошёл месяц

Сначала были какие-то ошибки в логах postgresql, но они были связаны с процессом разработки. Месяц — полёт нормальный.

Содержание:

1.      Установка и настройка сервера взаимодействия 1С

2.      Настройка сервера системы взаимодействия на WSS подключение

3.      Установка и настройка облачного хранилища файлов MinIO

4.      Настройка сайта для подключения внешних пользователей системы

5.      Подключение системы взаимодействия к платформе 1С: Предприятие  

1.      Установка и настройка сервера взаимодействия 1С

Первым делом, требуется скачать и установить необходимые дистрибутивы:

1.      Postgresql версии 12 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads;

2.      Liberica Full JDK 11-ой версии https://releases.1c.ru/version_files?nick=Liberica11FullJDK&ver=11.0.12%2b7;

3.      Утилита Openssl https://slproweb.com/download/Win64OpenSSL-3_0_9.msi;

4.      Сервер взаимодействия 1С и обработка CollaborationSystemRegister для регистрации сервера взаимодействия 1С https://releases.1c.ru/version_files?nick=CollaborationSystem&ver=23.0.23.

Стоит отметить, что для каждой версии платформы, должна устанавливаться совместимая версия сервера взаимодействия 1С. В моём случае, установлена версия платформы 1С: Предприятие 8.3.23, поэтому должен устанавливаться сервер взаимодействия версии 23.0.23.

Установка postgresql, liberica jdk и openssl проста и не требует подробного разъяснения. Отмечу лишь пару моментов, а именно:

1)     Выбор директории при openssl- установке

2)     Необходимость запомнить пароль, указываемый для postgres пользователя, во время установки posgtresql

Установка сервера взаимодействия

Чтобы установить сервер взаимодействия 1С, необходимо распаковать дистрибутив из архива и запустить установочный файл 1ce-installer. В открывшемся окне нужно указать директорию, где будет располагаться сервер взаимодействия 1С и все его компоненты, а затем нажать “Установить”

Далее установщик выведет сообщение об успешном завершении инсталляции, нажмём “Готово” для выхода из программы установки

После установки дистрибутивов, необходимо добавить пути к liberika jdk и openssl в переменную среды Path

Также в Windows переменную Path следует добавлять путь к утилите ring, но у меня она добавилась автоматически.

Проверим, что все компоненты сервера взаимодействия установились корректно, отправив в cmd команду:

ring

Должны отобразиться 3 компонента: Сервер взаимодействия, Elasticsearch и Hazelcast.

Создание и настройка базы cs_db в postgresql

Перед выполнением настройки сервера взаимодействия 1C, необходимо создать и настроить базу cs_db в postgresql.

Для создания базы, потребуется воспользоваться программой pgAdmin 4, она устанавливается вместе с postgresql и позволяет работать с СУБД в графическом интерфейсе.

При первом запуске, необходимо установить pgAdmin- пароль

Далее необходимо раскрыть ниспадающий список вкладки “Servers” и подключиться к серверу PostgreSQL 12, введя пароль пользователя postgres, указанный во время установки postgresql

Создадим пользователя cs_user для работы с базой cs_db, нажав ПКМ на вкладке “Login/Group Roles” и выбрав пункты “Create” – “Login/Group Role”

Во вкладке “General” введём имя пользователя

Перейдём во вкладку “Definition”, где укажем пароль для пользователя cs_user

Во вкладке “Privileges” укажем необходимые права, после чего сохраним настройки нажав на “Save”

Создадим базу cs_db для работы с сервером взаимодействия 1С, нажав ПКМ на вкладке “Databases” и выбрав пункты “Create” – “Database”

 

Введём имя базы во вкладке “General” и сохраним изменения нажав на “Save”

Подключим расширение uuid-ossp, нажав ПКМ на базе cs_db и выбрав пункт “Query Tool”. В открывшемся редакторе введём следующий запрос:

CREATE EXTENSION
IF NOT EXISTS «uuid-ossp»

Отправим запрос, нажав на клавишу F5.

Настройка сервера взаимодействия 1С

Создадим директории и службы сервера взаимодействия, введя в командной строке следующие команды:

ring hazelcast instance
create —dir C:\cs\hc_instance

ring hazelcast
—instance hc_instance service create –stopped

ring elasticsearch
instance create —dir C:\cs\es_instance

ring elasticsearch
—instance es_instance service create —stopped

ring cs instance create
—dir C:\cs\cs_instance

ring cs —instance
cs_instance service create —stopped

Осуществим настройку JDBC драйверов postgresql с помощью следующих команд:

ring
cs —instance cs_instance jdbc pools —name common set-params —url
jdbc:postgresql://localhost:5432/cs_db?currentSchema=public

ring
cs —instance cs_instance jdbc pools —name common set-params —username
cs_user

ring
cs —instance cs_instance jdbc pools —name common set-params —password <пароль_пользователя_cs_user>

ring
cs —instance cs_instance jdbc pools —name privileged set-params —url
jdbc:postgresql://localhost:5432/cs_db?currentSchema=public

ring
cs —instance cs_instance jdbc pools —name privileged set-params —username
cs_user

ring
cs —instance cs_instance jdbc pools —name privileged set-params —password <пароль_пользователя_cs_user>

Настроим WebSocket протокол:

ring cs
—instance cs_instance websocket set-params —hostname <доменное_имя>

ring cs
—instance cs_instance websocket set-params —port <порт_сервера_взаимодействия>

“Не забывайте создавать правила для всех указываемых портов в брандмауэре Windows”

Настроим каталог для хранения бэкапов:

ring cs —instance
cs_instance backup set-params —storage C:\cs\cs_instance\dumps 

Теперь необходимо запустить службы сервера взаимодействия с помощью команд:

ring
hazelcast —instance hc_instance service start

ring
elasticsearch —instance es_instance service start

ring
cs —instance cs_instance service start

Либо можно сделать это через диспетчер задач, из подменю “Службы”

После настройки сервера взаимодействия 1С, необходимо инициализировать базу данных cs_db, сделать это можно с помощью следующей команды:

curl
-Sf -X POST -H «Content-Type: application/json» -d «{ \»url\»
: \»jdbc:postgresql://localhost:5432/cs_db\», \»username\»
: \»cs_user\», \»password\» : \»<пароль пользователя cs_user>\», \»enabled\»
: true }» -u admin:admin

Пример успешного ответа:

{«id»:»4efdace4-6c60-414e-95cb-19b8dd39b6ff»,»url»:»jdbc:postgresql://localhost:5432/cs_db»,»username»:»cs_user»,»password»:»********»,»lastUsedAt»:null,»enabled»:true,»deleted»:false}

Проверим, что сервер взаимодействия 1С работает с помощью команды:

curl
http://localhost:8087/rs/health

Если всё установлено и настроено корректно, получим следующий ответ:

{«status»:»UP»,»mainDbOk»:true,»allShardsOk»:true,»hazelcast»:{«available»:true,»members»:[«127.0.0.1:5701″]},»elasticsearchOk»:true,»mediaClusterOk»:false,»mediaServers»:{},»pushOk»:false}

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


2.      Настройка сервера системы взаимодействия на WSS подключение

Если подключение к базе осуществляется через https, то и сервер взаимодействия должен работать по защищённому WSS протоколу.

Для настройки WSS подключения, требуется создать хранилище ключей Java KeyStore (JKS) и поместить туда сертификат, оформленный на доменное имя сервера, на котором располагается сервер взаимодействия 1С.

Сертификат можно приобрести или воспользоваться утилитой win-acme, чтобы получить бесплатный SSL сертификат letsencrypt. Для реализации этого метода, требуется создать виртуальный хост, прослушивающий стандартный порт http 80, я создал его с помощью стандартного веб-сервера IIS от Microsoft.

Создание виртуального хоста в веб-сервере IIS

Первым делом, необходимо создать директорию сайта в каталоге веб-сервера IIS C:\inetpub\wwwroot\доменное_имя

Затем, в директории сайта создадим файл index.html и добавим в него следующее содержимое:

<html>

    <head>

        <title>доменное_имя</title>

    </head>

    <body>

        <h1>Welcome to the
club buddy!</em> </h1>

    </body>

</html>    

Возвращая простую html страничку, можно будет убедиться в том, что сайт работает.

Для того, чтобы создать виртуальный хост, требуется открыть диспетчер служб IIS и добавить веб-сайт, нажав ПКМ на пункте “сайты”

Далее, необходимо заполнить окно создания веб-сайта следующим образом и нажать “ОК”

Теперь проверим работу сайта, введя имя домена в адресной строке, или нажав кнопку “обзор веб-сайта” на панели действий IIS

Если всё настроено корректно, сайт вернёт созданную нами html страницу.

Получение сертификата с помощью утилиты win-acme         

После завершения настройки виртуального хоста, можно приступать к получению сертификата. Скачаем утилиту win-acme по ссылке https://www.win-acme.com/.

После скачивания, необходимо распаковать архив с программой в удобное место. Лично я распаковал win-acme в корневой каталог IIS, создав там папку letsencrypt

Запустим файл wacs.exe от имени администратора и выберем пункт “Create certificate (full options)”, введя “M” в консоли приложения

Выберем пункт “Read bindings from IIS”, чтобы вывести список сайтов из IIS

 

Далее приложение предложит выбрать сайт из списка или ввести его вручную

 

Выберем пункт “Pick *all* bindings”, чтобы выбрать все привязки

 

Подтвердим выбор, нажав на клавишу “y”, а затем проигнорируем предложение ввести дополнительное имя, нажав на “Enter”

 

Далее выберем пункт “Single certificate”, чтобы создать единый сертификат

Выберем пункт “[http] Save verification files on (network) path”, после чего введём путь к сайту, чтобы создать там файлы для подтверждения владения доменом

Далее приложение предложит выбрать тип ключа, нам нужен “RSA key”

Выберем пункт “PEM encoded files”

 

Введём путь, где будут храниться файлы сертификата. Я указал путь C:\Certificates

 

Выберем пункт “Type /paste in console”, и введём в консоли приложения пароль для закрытого ключа.

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

Далее приложение спросит, нужно ли сохранить сертификат в другом формате, выберем пункт “ No (additional) store steps”, чтобы оставить только ранее выбранный формат сертификата

 

На следующем шаге также откажемся от дополнительных действий, выбрав пункт “No (additional) installation steps”

Наконец получим сообщение об успешном создании сертификата

 

Настройка WSS подключения

Файлы сертификата были сохранены по указанному при создании пути C:\Certificates

Для того, чтобы импортировать файлы chain.pem и key.pem в хранилище ключей JKS, необходимо объединить их в единый файл формата PKCS12. Сделаем это с помощью ранее установленной утилиты openssl.

Откроем командную строку и введём следующие команды:

openssl
pkcs12 -export -in C:\Certificates\koderline-dev.ru-chain.pem -inkey C:\Certificates\koderline-dev.ru-key.pem
-out C:\cs\cs_instance\data\security\pkcs.p12 -name letsencrypt

«При вводе первой команды,
потребуется указать пароль от закрытого ключа, а затем задать пароль для файла pkcs.p12»

keytool
-importkeystore -destkeystore
C:\cs\cs_instance\data\security\websocket-keystore.jks -srckeystore
C:\cs\cs_instance\data\security\pkcs.p12 -srcstoretype PKCS12 -alias
letsencrypt

«При вводе второй, сначала
указываем пароль от файла pkcs.p12, а затем задаём пароль от хранилища JKS»

Первой командой мы объединили файлы сертификата в единый файл pkcs.p12, а второй создали хранилище ключей JKS, сразу импортировав в него получившийся файл.

Настроим сервер взаимодействия на WSS подключение с помощью команд:

ring cs —instance
cs_instance websocket set-params —wss true

ring cs —instance
cs_instance websocket set-params —keystore-path C:\cs\cs_instance\data\security\websocket-keystore.jks

ring cs —instance
cs_instance websocket set-params —keystore-password <пароль_JKS>

ring cs —instance
cs_instance websocket set-params —keystore-format JKS

Теперь подключение сервера взаимодействия 1С будет осуществляться через защищённый WSS протокол.


3.      Установка и настройка облачного хранилища файлов MinIO

Для добавления функционала обмена файлами, необходимо настроить облачное хранилище Amazon S3 MinIO, и подключить его к серверу взаимодействия 1С.

Установка хранилища файлов MinIO

Откроем PowerShell от имени администратора и по очереди введём следующие команды:

Invoke-WebRequest
-Uri «
https://dl.min.io/server/minio/release/windows-amd64/minio.exe»
-OutFile «C:\Data\minio.exe»

setx
MINIO_ROOT_USER <логин_minio>

setx
MINIO_ROOT_PASSWORD <пароль_minio>

C:\Data\minio.exe
server С:\Data —console-address «:9001»

Чтобы запуск MinIO осуществлялся автоматически, необходимо установить его как службу. Для этого скачаем архив minio-service-master.zip по следующей ссылке https://github.com/minio/minio-service, после чего распакуем его, и скопируем файл install-service.ps1 из папки windows в каталог C:\Data, где установлен сервер MinIO.

Откроем PowerShell и установим службу сервера MinIO с помощью команды:

С:\Data\install-service.ps1    

Откроем каталог с установленным сервером MinIO и отредактируем файл minio-service.xml:

<service>

  <id>MinIO</id>

  <name>MinIO</name>

  <description>MinIO is a
high performance object storage server</description>

 
<executable>minio.exe</executable>

  <env
name=»MINIO_ROOT_USER» value=»логин_minio»/>

  <env
name=»MINIO_ROOT_PASSWORD» value=»пароль_minio»/>

    <arguments>server
C:\Data</arguments>

 
<logmode>rotate</logmode>

</service>

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

Настройка сервера MinIO на SSL подключение

Для того, чтобы включить режим SSL подключения для MinIO, необходимо скопировать файлы сертификата chain.pem и key.pem в каталог C:\Users\имя_пользователя\.minio\certs и переименовать их следующим образом:

chain.pem — public.crt

key.pem — private.key

    

Отредактируем файл minio-service.xml:

<service>

  <id>MinIO</id>

  <name>MinIO</name>

  <description>MinIO is a
high performance object storage server</description>

 
<executable>minio.exe</executable>

  <env
name=»MINIO_ROOT_USER» value=»логин_minio»/>

  <env
name=»MINIO_ROOT_PASSWORD» value=»пароль_minio»/>

<env name=»MINIO_CERT_PASSWD»
value=»пароль_закрытого_ключа_сертификата»/>

  <arguments>server C:\Data —address «:порт_minio»</arguments>

 
<logmode>rotate</logmode>

</service>    

В конфигурационный файл сервера была добавлена переменная MINIO_CERT_PASSWD, где задаётся пароль от закрытого ключа для созданного ранее сертификата, и параметр —address для аргумента server, чтобы явно указать порт подключения для сервера MinIO.

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

Чтобы назначить пользователя, от которого будет запускаться сервис, необходимо перейти в свойства службы MinIO и, во вкладке “Вход в систему”, выбрать нужную учётную запись

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

Подключение хранилища файлов MinIO к серверу взаимодействия

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

Введём в адресной строке браузера адрес подключения к хранилищу MinIO:

https://<доменное_имя>:<порт_minio>

Авторизуемся с помощью заданных при установке данных, которые также были указаны в переменных MINIO_ROOT_USER и MINIO_ROOT_PASSWORD конфигурационного файла minio-service.xml

Перейдём в раздел “Buckets” и выберем пункт “Create Bucket”. В поле “Bucket Name” укажем имя контейнера cs-bucket, после чего нажмём “Create Bucket” для завершения создания

После создания, необходимо зайти в параметры контейнера и изменить права доступа на “public”

Теперь можно подключить MinIO к серверу взаимодействия. На портале ИТС предлагается сделать это с помощью утилиты curl

Но у меня подключить хранилище таким образом не получилось, я сделал это по аналогии с добавлением расширения uuid-ossp, т.е. отправил следующий SQL запрос в базу cs_db:

INSERT INTO
public.storage_server (id, type, base_url, container_url, container_name,
region, access_key_id, secret_key, signature_version, is_deleted, upload_limit,
download_limit, file_size_limit, created_at, updated_at, cdn_url, cdn_key_id,
cdn_secret_key, state, cdn_enabled, path_style_access_enabled, bytes_to_keep,
days_to_keep, pricing_url, api_type, storage_type, files_to_keep)

VALUES(

uuid_generate_v4(),
‘AMAZON’, ‘https://<доменное_имя>:<порт_minio>’,’https://
<доменное_имя>:<порт_minio>/cs-bucket’,

‘cs-bucket’,

»,

‘логин_ minio’,

‘пароль_minio’,

‘V2’, false,
1073741824, 1073741824, 1048576000, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL,
NULL, NULL, ‘ACTIVE’, false, true, 0, 3200,
NULL,’AMAZON’,’DEFAULT’,1073741824);

Теперь в системе взаимодействия доступен функционал обмена файлами.  


4.      Настройка сайта для подключения внешних пользователей системы

Для добавления в обсуждения внешних пользователей, необходимо настроить специальный сайт, который устанавливается вместе с сервером взаимодействия и находится по следующему пути C:\Program Files\1C\1CE\components\1c-cs-site-0.2.11-x86_64. Настроим его с помощью веб-сервера IIS и импортируем созданный ранее сертификат, чтобы подключение осуществлялось по https.

Кроме файлов сертификата в pem-формате, утилита win-acme создаёт единый сертификат в pfx формате, и размещает его по следующему пути: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates, я импортировал в IIS именно его.

Для импорта сертификата pfx в IIS, необходим пароль от сертификата. Чтобы узнать его, запустим утилиту win-acme и выберем пункт “Manage renewals”

Далее выберем пункт “Show details for the renewal”, чтобы отобразить детальную информацию об обновляемых сертификатах

Скопируем и сохраним пароль из поля “.pfx password”

 

На начальной странице сервера в IIS перейдём во вкладку “Сертификаты сервера”, а затем выберем пункт “Импортировать” на панели действий IIS

Заполним окно импорта, указав путь и пароль от сертификата, а также хранилище, в котором будет располагаться сертификат, после чего нажмём “OK”

Создадим сайт по аналогии с виртуальным хостом, заполнив поля следующим образом

Из отличий можно увидеть другое имя сайта. Его, как и порт 9999, можно задавать по желанию, физический путь указан до каталога сайтом 1c-cs-site-0.2.11-x86_64, выбран протокол подключения https и импортированный ранее сертификат.

Проверим работу сайта, введя имя домена с указанным портом в адресной строке, или нажав кнопку ”обзор веб-сайта” на панели действий в IIS

Должна вернуться html страница сайта 1c-cs-site-0.2.11-x86_64.

Отредактируем файл config.json, который находится в каталоге сайта 1c-cs-site-0.2.11-x86_64, указав адрес подключения сервера взаимодействия в поле “serverURL”

{

            «serverURL»: «wss://<доменное_имя>:<порт_сервера_взаимодействия>»,

            «VAPIDPublicKey»: «****************************************************************»


Суть проделанных действий состоит в том, что веб-сервер, при запросе на адрес https://<доменное_имя>:<порт_сайта>, должен отдать index.html сайта 1c-cs-site-0.2.11-x86_64 просто как статику, после чего index.html запустится в браузере пользователя и на базе адреса сервера взаимодействия в config.json сам установит соединение с сервером взаимодействия 1С.

Подключим сайт к серверу взаимодействия:

ring cs —instance 
cs_instance  site set-params
—public-url https://<доменное_имя>:<порт_сайта>

Теперь в системе взаимодействия доступна функция добавления в обсуждения внешних пользователей. 

5.      Подключение системы взаимодействия к платформе 1С: Предприятие

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

Откроем приложение 1С, перейдём во вкладку “Сервис и настройки”, затем выберем ”Файл” – “Открыть”

Откроем обработку CollaborationSystemRegister, а затем выполним подключение, заполнив поля следующим образом

В случае, если WSS подключение не настраивалось, указываем WS протокол для подключения.

Если всё установлено и настроено корректно, получим сообщение об успешной регистрации системы взаимодействия.

 

Специалист компании «Кодерлайн»

Артем Слатин

PostgreSQL — система управления базами данных с открытым исходным кодом, которая объединяет возможности объектно-ориентированных и реляционных подходов к хранению данных. Она обладает высокой мощностью и расширяемостью, а также поддерживает множество функций и возможностей. PostgreSQL поддерживает множество функций, включая поддержку транзакций, поддержку хранимых процедур и триггеров, полнотекстовый поиск, геопространственные данные, JSON и многое другое. PostgreSQL также обеспечивает высокую производительность и надежность, благодаря своей архитектуре и технологиям многопоточности. Установка PostgreSQL не является сложной задачей и следуя приведенным ниже шагам вы сможете успешно установить её самостоятельно.

Загрузка установочного дистрибутива

Первым шагом в установке PostgreSQL является загрузка установочного файла. Вы можете загрузить установочный файл с официального сайта «www.postgresql.org/download/windows», выбрав соответствующую версию для вашей операционной системы.

Запуск установки

После загрузки установочного файла запустите его. При запуске установки вы увидите окно приветствия, где нужно нажать кнопку «Next».

Запуск установки PostgreSQL 15

Скриншот №1. Запуск установки PostgreSQL 15

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

На следующем экране вы должны выбрать директорию, в которую будет установлен PostgreSQL. По умолчанию директория установки – “C:\Program Files\PostgreSQL\”, но вы можете изменить ее на любую другую директорию.

Выбор места расположения файлов для установки

Скриншот №2. Выбор места расположения файлов для установки

Выбор компонентов

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

  • непосредственно саму СУБД;
  • графическую утилиту администрирования pgAdmin 4;
  • утилиты администрирования через командную строку.

Выбор компонентов для установки

Скриншот №3. Выбор компонентов для установки

Установка параметров

На следующем экране нужно ввести пароль для учетной записи по умолчанию PostgreSQL. Этот пароль будет использоваться для доступа к базе данных PostgreSQL.

Установка пароля пользователя администратора СУБД

Скриншот №4. Установка пароля пользователя администратора СУБД

Кроме пароля инсталлятор спросит, на каком порту будет работать приложение, а также локаль, всё оставим по умолчанию :

Выбор порта для работы приложения

Скриншот №5. Выбор порта для работы приложения
Выбор локали
Скриншот №6. Выбор локали

Запуск установки

После того как вы ввели все необходимые параметры, нажмите кнопку «Next». Установка PostgreSQL может занять некоторое время, в зависимости от технических характеристик сервера.

Screenshot-08

Скриншот №7. Начало установки

Завершение установки

После завершения установки вы увидите окно с сообщением об успешной установке PostgreSQL. Нажмите кнопку «Finish», чтобы закрыть установщик.

Завершение мастера установки

Скриншот №8. Завершение мастера установки

Проверка работоспособности

После успешной установки PostgreSQL можно проверить работу базы данных, запустив графическую утилиту PgAdmin 4. Выбираем из списка наш сервер и вводим пароль от пользователя администратор, который придумали ранее при установке:

Подключение к локальному серверу СУБД

Скриншот №9. Подключение к локальному серверу СУБД

Если все настроено правильно, вы увидите список объектов на локальном сервере. Теперь можно сделать SQL-запрос для вывода установленной версии. Для этого правой кнопкой мыши кликнем по БД postgres и выберем инструмент «Query Tool».
В правой части экрана в поле «Query» вводим:

SELECT version();

И нажимаем «Run». В результате получим примерно как на скрине ниже:

Запрос к БД postgres

Скриншот №10. Запрос к БД postgres

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

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

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

Актуальность использования СУБД PostgreSQL для 1С особенно набирает обороты в последнее время, поскольку не требуется приобретать лицензии MS SQL.

Рассмотрим архитектурное решение, когда СУБД вынесена на отдельную машину, а сервер 1С находится на Windows Server.

Данное архитектурное решение было выбрано по причине того, что обмен между БД настроен через COM-компонент. Если сервер 1С переносить на Linux, то требуется также перенастраивать обмен, который в нашем решении не требуется.

В первую очередь требуется выбрать дистрибутив, на котором будем устанавливать СУБД. Мы выбрали Debian 11.

Минимальные системные требования для установки Postgres Pro, создания кластера баз данных и запуска сервера:

  • Процессор с частотой 1 ГГц.
  • 1 ГБ ОЗУ.
  • 1 ГБ свободного дискового пространства.

Для вспомогательных компонентов или данных потребуется дополнительное дисковое пространство.

Для того чтобы Postgres Pro работал с сервером 1С требуется установить locale ru_RU.UTF-8. Вводим команду:

# dpkg-reconfigure locales

Выбираем пробелом ru_RU.UTF-8 UTF-8 и нажимаем “Enter”. Перезагружаем сервер.

Установка Postgres Pro для работы с 1С

Для работы с 1С существует несколько редакций PostgreSQL, наиболее известные это от компании Postgres Pro и так же от самой 1С.

У нас будет установка Postgres Pro.

  • Заходим на сайт 1c.postgres.ru.
  • Отвечаем на 3 вопроса и в конце заполняем свой e-mail, куда вышлют инструкцию по установки.
  • Вводим команды:
# wget https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh
# apt-get install postgrespro-1c-14
# systemctl status postgrespro-1c-14.service

Проверяем статус Postgres Pro, он должен быть установлен и запущен.

Окно nginx

Рисунок 1 — Успешно запущенная Postgres Pro

Настройка PostgreSQL для работы с 1С

После успешной установки, мы должны настроить СУБД для работы 1С. В первую очередь задаем пароль для внутреннего пользователя Postgres, чтобы подключаться к БД с 1С сервера.

# sudo -u postgres psql -U postgres -c "alter user postgres with password 'postgrespwd';"
ALTER ROLE

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

По умолчанию, под статистику выделяется 25 мегабайт дискового пространства. Мы выделим 256 мегабайт памяти, чтобы был запас.

Создаем директорию, куда будем добавлять виртуальный диск:

# mkdir /var/lib/pgsql_tmp
 # chown postgres:postgres  /var/lib/pgsql_tmp/

Добавляем в /etc/fstab в конец строчку:

tmpfs /var/lib/pgsql_tmp tmpfs     size=256M,uid=postgres,gid=postgres 0 0

Монтируем диск в систему:

# mount /var/lib/pgsql_tmp

Идем в конфиг БД /var/lib/pgpro/1c-14/data/postgresql.conf и меняем параметр:

stats_temp_directory = '/var/lib/pgsql_tmp'

После успешной настройки перезагружаем службу:

# systemctl restart postgrespro-1c-14.service

Подключение информационной базы 1С к серверу PostgreSQL

Заходим на сервер, где расположена консоль администрирования сервера 1С.

Правой кнопкой мыши нажать на “Информационные базы (Далее ИБ)” > “Создать” > “ИБ”. Заполняем поля:

  • Имя — Test (Как будет называться ИБ).
  • Сервер баз данных: 192.168.74.128 (Адрес нашего сервера postgresql).
  • Тип СУБД: PostgreSQL.
  • База данных: Test (как будет называться БД в СУБД).
  • Пользователь сервера БД: postgres.
  • Пароль пользователя БД: postgrespwd.
  • Если базы нет, то еще поставить “Создать базу данных с случае ее отсутствия”.

Подключаем ИБ для запуска 1С:Предприятия. Заходим в 1С:Предприятие, нажимаем “Добавить”. Ставим “Добавление в список существующей ИБ”. Указываем наименование ИБ. Ставим “На сервере 1С:Предприятия”.

  • Кластер серверов: localhost (Адрес где находится сервер 1С).
  • Имя ИБ: Test (Имя которое мы задавали в оснастке).

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

Мы провели успешно установку сервера PostgreSQL на Debian 11.

  • Установка windows 10 на hp probook 4520s
  • Установка pop os рядом с windows 10
  • Установка web сервера на windows server 2019
  • Установка ubuntu server рядом с windows
  • Установка windows 10 на gpt диск с uefi с флешки