Уровень сложности
Средний
Время на прочтение
22 мин
Количество просмотров 3.6K
-
Будь проще и люди к тебе потянуться. СУБД с человеческим лицом?
-
Почему не все дистрибутивы Postgres одинаково полезны для 1С
-
Подготовка для Windows. Установка locale
-
Установка VCRUNTIME
-
Отключение борьбы за экономию.
-
Собственно инсталляция.
-
Инициализация кластера — лучше через initdb
-
Настраиваем доступность по сети и первый старт.
-
Настройка кластера Postgres под 1С.
-
Настройки Postgres.conf для профиля OLTP нагрузки
-
Параметры связанные сеансами и соединениями.
-
shared_buffers = 12 020MB -
max_files_per_process = 10 000 -
max_parallel_workers_per_gather = 0 -
temp_tablespaces = 'ssd_temp' -
Параметры журнала предзаписи (WAL)
-
Параметры планировщика
-
Параметры автовакуума и сбора статистики.
-
Использование символа \ для экранирования.
-
Параметры для мониторинга
-
-
Скрипт установки более агрессивных настроек
И это все?
Будь проще и люди к тебе потянуться. СУБД с человеческим лицом?
Большинство любят смотреть картинки, а не читать книги, а тем более руководства. Здесь нет ничего плохого, если картинка быстро и сразу доносит необходимую информацию. Однако развертывание Postgres, напоминает нам о прошлом, о котором я читал только в книгах. Прошлое когда ИТ инфраструктура была настолько дорогая, квалифицированных специалистов было больше чем машин. Все крутились вокруг очередной суперЭВМ или стояли в очереди на сеанс машинного времени.
Microsoft SQL Server уже показал хороший пример системного ПО для человека, хотя его внутреннюю архитектуру трудно ставить в пример как Oracle. Машин стало больше чем квалифицированных специалистов и как бы пора меняться.
Действия по данной инструкции — могла бы сделать программа инсталляции запросив лишь профиль нагрузки (например OLTP ), а дальше уже по параметрам оборудования
-
Провести настройку окружения.
-
Показать лог установки
При таком подходе руководства могли бы пригодится только для творческого тюнинга, планов развертывания, но не рутинной работы.
Дистрибутивы от release.1c.ru и 1c.postgrespro.ru такого не делают, только в PostgresPro выставили некоторые рекомендуемые параметры 1С. Как результат, мы не увидим лучшие практики и каждый пойдет настраивать Postgres в меру своего понимания, поскольку документация Postgres написана для всех случаев, а не для OLTP приложений
Ситуация вряд ли будет быстро меняться, поскольку санкции это хороший стимул жрать кактус, тем более в ИТ за сложность и платят.
Замечу, что Postgres ставят не только администраторы, но и программисты для создания локальных баз разработки, создания внешних схем данных и так далее.
Здесь все изложено для жесткого OLTP, которое создает платформа 1С, независимо от талантов программиста 1С. Те кто не верит, что 1С может быть жестким OLTP почитайте простой тест тут Концепция ORM как двигатель прогресса – выявит слабое место Вашей СУБД . В этом тесте только запись, без конкурентных блокировок. А когда идет запись в регистр с итогами все еще веселее.
Изложение идет на примере Windows , но установка параметров справедлива и для Unix. В данной части внимание уделено базовой настройке, позволяющей переварить нагрузку при параллельной записи данных и дать 1С возможность приемлемо работать на Postgres. Остальные вопросы как блокировки, большие запросы на чтение, тюнинг индексов, безопасность имеет смысл обсуждать, когда оптимизирован самый ресурсоемкий процесс в OLTP
Почему не все дистрибутивы Postgres одинаково полезны для 1С
Допускаю, что на просторах интернета есть сборка и дистрибутив Postgres, который большую часть работы по установке сделает за Вас, но в 1С мы ограничены двумя бесплатными дистрибутивами и вот почему.
Поиск по слову 1С:Предприятие в документации PostgresPro выдаст следующие ссылки
Postgres Pro Standard: Документация: 16: F.30. mchar — дополнительные типы данных для совместимости с Microsoft SQL Server: Компания Postgres Professional
«Этот модуль был разработан для улучшения поддержки системы 1С:Предприятие, самой популярной в России CRM и ERP‑платформы.
Он содержит реализацию типов MCHAR и MVARCHAR, которые с точностью до ошибок совместимы с типами MS SQL CHAR и VARCHAR, соответственно.»
Postgres Pro Standard: Документация: 16: F.20. fulleq — дополнительный оператор равенства для совместимости с Microsoft SQL Server: Компания Postgres Professional
«Модуль fulleq предоставляет дополнительный оператор равенства для совместимости с Microsoft SQL Server.
Этот модуль требуется для поддержки системы 1С:Предприятие.»
Postgres Pro Standard: Документация: 16: 13.3. Явные блокировки: Компания Postgres Professional
«Кроме того, для поддержки системы 1С:Предприятие реализованы ещё два режима блокировок. Эти режимы не конфликтуют ни с какими режимами, описанными выше. Их можно использовать, но лучше вместо них применять рекомендательные блокировки, которые предоставляют ту же функциональность.»
И наконец самое известное:
Postgres Pro Standard: Документация: 16: F.18. fasttrun — транзакционно‑небезопасная функция для усечения временных таблиц: Компания Postgres Professional
«Модуль fasttrun предоставляет транзакционно‑небезопасную функцию для усечения временных таблиц, предотвращающую разрастание каталога pg_class.
Этот модуль требуется для поддержки системы 1С:Предприятие.
Операция быстрого усечения не является транзакционной, так что её действие нельзя отменить и оно немедленно становится видимым во всех сеансах независимо от уровня изоляции.»
Это только только то, что изложено в документации Postgres pro. При запросах на поддержку — 1С поддерживает только дистрибутив Postgres собственной сборки (а это не тоже самое, что 1c.postgrespro.ru)
Как следствие при всем богатстве выбора другие альтернативы потребуют от Вас глубокое погружение в Postgres.
Подготовка для Windows. Установка locale
Формально установка Postgres состоит из установки исполняемых файлов и создания кластера Postgres. При создании кластера (initdb) можно установить необходимые locale вручную если прочитать большое руководство PostgreSQL: Документация: 15: 24.3. Поддержка кодировок: Компания Postgres Professional, и точно знать что Вы хотите. Но есть более простой путь.
Для аккаунта под которым ведется установка Postgres.
1) Установите РФ или Ваш регион в Region, Region format
2) И на всякий случай Russia в non-Unicode programs.
Такие же установки нужно сделать под аккаунтом с которым будет работать сервис Postgres.
Initdb в этом случае сможет выбрать правильную комбинацию для locale.
Установка VCRUNTIME
По каким то причинам дистрибутив 1С не проверяет установку VCRUNTIME, как следствие, приходится его устанавливать вручную, иначе при старте будет ошибка:
Установить можно отсюда Download Visual Studio Tools – Install Free for Windows, Mac, Linux (microsoft.com).
Отключение борьбы за экономию
Борьба за экономию электричества настолько слишком глубоко засела в серверах и на уровне операционной системы, и на уровне виртуализации и на уровне Bios. Все это нужно отключить иначе у Вас будет периодически просаживаться производительность. Как это случается можно почитать тут: 1C MSSQL Против Матрицы виртуализации — Перезагрузка.
Собственно инсталляция
При инсталляции рекомендую указать только каталоги, а галочку «Установить как сервис» снять. Включение ее приведет к инициализации кластера и заодно сервиса с минимальными параметрами. На моей среде она корректно не работала, а сделать тоже из командной строки несложно и гораздо наглядней:
Без флага «Установить как сервис» установка фактически произведет разворачивание файлов в каталог Postgres. Вообще инструкция у 1С еще проще Глава 3. Установка компонентов системы:: Клиент‑серверный вариант. Руководство администратора:: 1С:Предприятие 8.3.23. Документация (1c.ru).
Инициализация кластера – лучше через initdb
Кластер баз данных представляет собой набор баз, управляемых одним экземпляром работающего сервера. Очень похож на Instance MS SQL Server.
Инициализация кластера идет через initdb.exe
Подробное описание параметров команды можно прочитать тут PostgreSQL: Документация: 15: initdb: Компания Postgres Professional.
На этом этапе мы укажем каталоги для системных баз данных и для <транзакционных логов> журнала предзаписи, именно на этом этапе удобней всего разнести их по разным дискам и именно на этом этапе можно понять какие проблемы есть при создании кластера:
D:\PostgresSQL\15_3\bin>initdb.exe —auth=md5 —encoding=UTF8 —username=»postgres» —pgdata=»D:\PostgresSQL\15_3\data» —waldir=»D:\PostgresSQL\15_3\wal» —pwprompt
The files belonging to this database system will be owned by user «my1cuser».
This user must also own the server process.
The database cluster will be initialized with locale «Russian_Russia.1251».
The default text search configuration will be set to «russian».
Data page checksums are disabled.
Enter new superuser password:
fixing permissions on existing directory D:/PostgresSQL/15_3/data … ok
fixing permissions on existing directory D:/PostgresSQL/15_3/wal … ok
creating subdirectories … ok
selecting dynamic shared memory implementation … windows
selecting default max_connections … 100
selecting default shared_buffers … 128MB
selecting default time zone … America/Los_Angeles
creating configuration files … ok
running bootstrap script … ok
performing post-bootstrap initialization … ok
syncing data to disk … ok
Success. You can now start the database server using:
На этом этапе можно часто столкнутся с проблемами настройки прав (а unix там особенно нужно быть внимательным к owner каталогов). Чтобы работать без проблем, рекомендую устанавливать Postgres под тем аккаунтом — под которым он будет.
Сделать аккаунт, под которым работает Postgres как owner и не забыть про наследование [Solved] «Failed to Enumerate Objects in the Container» Windows 10 /11 Error (thegeekpage.com).
Настраиваем доступность по сети и первый старт
Отключаем временно Windows Firewall , чтобы проще искать проблемы.
Для разрешения всех коннектов прописать в pg_hba.conf следующее:
host all all 0.0.0.0/0 md5
а в postgres.conf нужно раскомментировать:
listen_addresses = '*'
В данном случае нам нужно просто проверить работоспособность кластера, а не закрутить побольше гаек в безопасности.
Сначала проверяем запуск
pg_ctl -D "D:\PostgresSQL\15_3\data" -l "D:\PostgresSQL\15_3\trace\logfile.txt" start
Если в D:\PostgresSQL\15_3\trace\logfile.txt нет ошибок, можно Вас поздравить.
Пути и каталоги нужно указывать те, которые на сервере.
Даже если старт успешен сразу — нужно проверить что
netstat -aon | find "LISTENING" | find ":5432"
Показывает:
TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING 14712
TCP [::]:5432 [::]:0 LISTENING 14712
На windows ipv6 сейчас приоритетный протокол, и это может влиять на коннект по ipv4. Я предпочитаю использовать ipv4, если нет необходимости использовать ipv6.
Если все стартует хорошо можно зарегистрировать 1С как сервис, для удобной перезагрузки сервера.
pg_ctl register -D "D:\PostgresSQL\15_3\data" -l "D:\PostgresSQL\15_3\trace\logfile.txt" -N PostgresSQLMain
Не забудьте в сервисе поставить LogOn под доменным пользователем (можно через параметры -U -P но почему то пароль не ставился), и Delayed start для надежности.
Далее проверяем как все стартовало
pg_ctl status -D "D:\PostgresSQL\15_3\data"
pg_ctl: server is running (PID: 6088)
d:/Postgres/15_3/bin/postgres.exe "-D" "D:\PostgresSQL\15_3\data"
Настройка кластера Postgres под 1С
Для удобства лучше установить PGAdmin на ПК администратора, чтобы видеть кластер визуально.
При установке с сайта внимательно смотрите на версию Windows — новые версии PgAdmin требуют новых версий Windows Download (pgadmin.org).
Теперь можно выполнить настройки согласно Глава 3. Установка компонентов системы:: Клиент‑серверный вариант. Руководство администратора:: 1С:Предприятие 8.3.23. Документация (1c.ru).
Для нормальной работы 1С нужно создать.
Обязательные tablespace v81c_index, v81c_data .
Tablespace для временных файлов ssd_temp лучше выделять отдельно и на быстрых дисках.
Вообще — учитывая огромное количество файлов, создаваемых Postgres — чем больше вы их разведете по дискам, тем лучше.
CREATE TABLESPACE ssd_temp
OWNER postgres
LOCATION 'D:\PostgresSQL\15_3\data\pg_ssdtemp';
ALTER TABLESPACE ssd_temp
OWNER TO postgres;
CREATE TABLESPACE v81c_data
OWNER postgres
LOCATION 'D:\PostgresSQL\15_3\data\pg_1cdata';
ALTER TABLESPACE v81c_data
OWNER TO postgres;
CREATE TABLESPACE v81c_index
OWNER postgres
LOCATION 'D:\PostgresSQL\15_3\data\pg_1cindex';
ALTER TABLESPACE v81c_index
OWNER TO postgres;
Настройки Postgres.conf для профиля OLTP нагрузки
В postgres.conf параметров, влияющих на поведение Postgres больше, чем переключателей в кабине самолета. Плохая новость — в вышеуказанных дистрибутивах большинство их закомментировано (применяются значения по умолчанию). Самое интересное, что в дистрибутиве 1С НЕ установлены даже те, которые требует поставить (либо не менять) сама 1С, согласно своей же документации.
Настройки PostgreSQL для работы с 1С:Предприятием:: PostgreSQL:: Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 (1c.ru)
Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2:: PostgreSQL:: Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 (1c.ru)
В дистрибутиве postgrespro часть этих параметров установлено, что показывает другое отношение к продукту. Здесь я собрал то, что считаю необходимым для OLTP, конечно сколько бы параметров не установил, все равно кажется что список неполный.
Ниже приведены рекомендуемые для OLTP параметры, но прежде чем сделать Copy‑Paste нужно пересчитать их в зависимости (здесь параметры выставлены для баз от 2 до 5 терабайт)
А) Числа коннектов.
Б) Количества IOPS, которая выдает Ваша дисковая подсистема.
В) И размера таблиц (у меня они могут быть до терабайта, поэтому какие то значения могут показаться большими).
Как Postgres работает с коннектами — описано тут Postgres Pro Enterprise: Документация: 15: 53.2. Как устанавливаются соединения: Компания Postgres Professional.
«Postgres Pro реализует простую клиент‑серверную модель по схеме „процесс для пользователя“. В такой схеме один клиентский процесс подключается к одному отдельному серверному процессу. Так как мы не знаем заранее, сколько подключений будет, нам нужен „главный процесс“, который будет запускать новый процесс при каждом запросе подключения».
С точки зрения 1С каждое активное соединение породит дополнительный процесс на Postgres. Если Вы запустите 20 фоновых заданий 1С это породит 20 процессов на Postgres. Не надо соединение 1С с количеством rphost на сервере, ведь один rphost 1С может обслуживать много соединений.
Все это нужно учитывать для расчета потребления памяти на процесс.
Для удобства прилагаю файл postgres.conf.
Подробные описания можно найти тут PostgreSQL: Документация: 15: Глава 20. Настройка сервера: Компания Postgres Professional. Ниже только комментарии.
Параметры связанные сеансами и соединениями
max_connections = 500
Определяет максимальное число одновременных подключений к серверу БД. Помните — любое фоновое задание 1С или открытый сеанс это уже connection.
temp_buffers = 128MB
Задаёт максимальный объём памяти, выделяемой для временных буферов в каждом сеансе. Эти существующие только в рамках сеанса буферы используются исключительно для работы с временными таблицами. Для 1С это маштабируется на количество сеансов и фоновых заданий. 1С интенсивно использует временные таблицы, поэтому значение по умолчанию 8 мегабайт для нее слишком мало. Даже если Вы явно их не используете в 1С , любая запись в регистр их будет использовать пример Compare by Statements.
row_security = off
«В дополнение к стандартной системе прав SQL, управляемой командой GRANT, на уровне таблиц можно определить политики защиты строк, ограничивающие для пользователей наборы строк, которые могут быть возвращены обычными запросами или добавлены, изменены и удалены командами, изменяющими данные. Это называется также защитой на уровне строк (RLS, Row-Level Security».
Поскольку у 1С есть свой механизм RLS , очевидно что она рекомендует не пользоваться аналогом в Postgres.
Ssl = off
В документации 1С считают, что этот параметр может вызвать повышенный расход CPU . Склонность postgres к большему расходу CPU, чем MS SQL это проверенный факт. Но насколько будет влияние данного параметра это интересный повод для теста или сколько стоит безопасность.
work_mem = 128MB # min 64kB
«Задаёт базовый максимальный объём памяти, который будет использоваться во внутренних операциях при обработке запросов (например, для сортировки или хеш-таблиц), прежде чем будут задействованы временные файлы на диске».
Важный параметр, от которого зависит скорость работы и расход памяти в зависимости от активных сеансов.
max_locks_per_transaction = 1000
Значение рекомендовано в документации 1С, значение по умолчанию слишком маленькое 64.
«В общей таблице блокировок может храниться max_locks_per_transaction объектов (например, таблиц) для каждого серверного процесса или подготовленной транзакции, таким образом, в любой момент времени может быть заблокировано не больше этого числа различных объектов. Этот параметр ограничивает среднее число блокировок объектов, используемых каждой транзакцией, отдельные транзакции могут заблокировать и больше объектов, если все они умещаются в таблице блокировок»
shared_buffers = 12020MB
Задаёт объём памяти, который будет использовать сервер баз данных для буферов в разделяемой памяти. Поскольку значение по умолчанию 128 мегабайт, очевидно нужно устанавливать свое.
«Существуют варианты нагрузки, при которых эффективны будут и ещё большие значения shared_buffers, но так как PostgreSQL использует и кеш операционной системы, выделять для shared_buffers более 40% ОЗУ вряд ли будет полезно. При увеличении shared_buffers обычно требуется соответственно увеличить max_wal_size, чтобы растянуть процесс записи большого объёма новых или изменённых данных на более продолжительное время».
max_files_per_process = 10000
В любой типовой конфигурации 1С больше тысячи таблиц, а в Postgres на каждую таблицу будет несколько файлов.
max_parallel_workers_per_gather = 0
Значение 0 отключает параллельное выполнение запросов. Не все запросы хорошо распараллеливаются. В OLTP это только создаст лишнюю нагрузку сервер Postgres, который и так склонен к большему использованию CPU чем MS SQL – проверено тут Postgres как предчувствие. Вычисляем процент импортозамещения в режиме Highload от 1С . Если очень хочется попробовать 1С рекомендует включать параллелизм только в одном случае Настройка параметра Max degree of parallelism при выполнении реструктуризации информационной базы :: MS SQL Server :: Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8 (1c.ru) . Оптимизированный механизм реструктуризации поддерживается в Postgres, поэтому это может помочь.
temp_tablespaces = 'ssd_temp'
Поскольку работа с временными таблицами в Postgres реализована неэффективно – единственный вариант сгладить — вынести функционал на SSD либо RAM диск. По этому поводу есть хорошая статья от конкурентов 1С PostgreSQL и временные таблицы , но помните, что RAM диск должен иметь хорошую реализацию по многопоточности, иначе все повиснет на одном ядре. В этом случае лучше найти быстрый SSD серверного класса, поскольку реализация дисковых подсистем это учитывает.
Параметры журнала предзаписи (WAL)
В документации Postgres периодически попадаются глубокие описания PostgreSQL: Документация: 15: 30.1. Надёжность. Журнал предзаписи: Компания Postgres Professional , которые не встретишь даже у Oracle. Рекомендую почитать первоисточник, для понимания как все работает.
Для OLTP с записью в несколько потоков нужно synchronous_commit = off это сразу расширит бутылочное горлышко, которым является журнал предзаписи, он же transaction log в MS SQL, он же Redo log в Oracle.
Польза просчитана и доказана тут на примере MS SQL Delayed durability поможет вашему ORM увеличить производительность на 50% и более, если Вы только будете использовать … и 1С крайне рекомендует для Postgres в своей документации. Данный параметр не следует путать с fsync, который выключать опасно для базы. synchronous_commit = off при жестком сбое может привести к потере последних зафиксированных транзакций, но база останется в целостности в отличии от игр с fsync.
commit_delay = 1000 Взят из рекомендаций 1С.
«Параметр commit_delay добавляет паузу перед собственно выполнением сохранения WAL. Эта задержка может увеличить быстродействие при фиксировании множества транзакций, позволяя зафиксировать большее число транзакций за одну операцию сохранения WAL, если система нагружена достаточно сильно и за заданное время успевают зафиксироваться другие транзакции».
Параллельно рекомендуется commit_siblings=5, но он и так в этом значении по умолчанию
max_wal_size = 4GB
min_wal_size = 2GB
«Пока WAL занимает на диске меньше этого объёма, старые файлы WAL в контрольных точках всегда перерабатываются, а не удаляются. Это позволяет зарезервировать достаточно места для WAL, чтобы справиться с резкими скачками использования WAL, например, при выполнении больших пакетных заданий».
Поэтому значения по умолчанию 1гб и 80мб слишком маленькие для нагруженной OLTP
checkpoint_timeout = 15min
Checkpoint
«это точки в последовательности транзакций, в которых гарантируется, что файлы с данными и индексами были обновлены всей информацией записанной перед контрольной точкой. Во время контрольной точки, все «грязные» страницы данных, находящиеся в памяти, сохраняются на диск, а в файл журнала записывается специальная запись контрольной точки».
Чтобы понять как он связан с фиксацией транзакций и записью WAL, нужно прочитать PostgreSQL : Документация: 15: 30.5. Настройка WAL : Компания Postgres Professional . По умолчанию checkpoint_timeout =5 минут, но он так же срабатывает при приближении к пределу max_wal_size, если это имеет место раньше. Я предпочитаю ориентироваться на max_wal_size , а не на время.
Параметры планировщика
Результат установки параметров этого раздела самый неочевидный, поскольку они больше рекомендательные для планировщика, а что он решит в итоге будет зависеть множества факторов (документация, акуальность статистики, работа autovacuum, ошибки релиза). Кроме того, влияние их можно проверить только на отдельных запросах, операциях. Для оценки их влияния нужна группа синтетических тестов, где видно, что улучшение одних тестов, не приводит к деградации других.
effective_cache_size = 36060MB # 75% of RAM
В разных источниках рекомендуют effective_cache_size либо 50%-75% Ram либо RAM- shared_buffers . Документация большей ясности не добавила, почитайте сами.
from_collapse_limit = 8
join_collapse_limit = 8
Это достаточно важный параметр для 1С . В 1С почти всегда делается либо СрезПоследних для периодических регистров сведений, либо запросы по итогам. Даже если Вы явно не делаете Join при срезе последних, внутри платформы Join происходит . А если кто-то любит делать так Документ.Контрагент.ИНН, чтобы добраться нужных реквизитов, все усугубится. Для понимания лучше прочитать этот раздел PostgreSQL : Документация: 15: 14.3. Управление планировщиком с помощью явных предложений JOIN : Компания Postgres Professional.
random_page_cost = 1.4
random_page_cost забавный параметр, который 1С рекомендует подкрутить random_page_cost = 1.5–2.0 для RAID, 1.1–1.3 для SSD. Причем меня смущает такая точность, когда значение по умолчанию 4.0 и как пишут в документации.
«Таким образом, можно считать, что значение по умолчанию моделирует ситуацию, когда произвольный доступ в 40 раз медленнее последовательного, но 90% операций произвольного чтения удовлетворяются из кеша».
А если часть базы на SSD, а часть на HDD? Вопрос философский.
По такой логике остается только выбрать 1.4 , а влияния других значений в тесте на запись я не заметил.
Есть параметры которые 1С не рекомендует отключать, например, PostgreSQL : Документация: 15: 20.7. Планирование запросов Генетический оптимизатор : Компания Postgres Professional geqo, geqo_threshold.
Параметры автовакуума и сбора статистики
Параметры по умолчанию для автовакуума и статистики сразу влияют на производительность в 1С если Вы подвигаете итоги вперед назад, либо будете использовать текущие итоги. Также он влияет на запись в регистры и чем они больше тем существенней.
Обратите внимание, что запуск автовакуума это комплекс действий, не ограниченный очисткой от «мертвых» кортежей. Хорошее описание тут PostgreSQL: Документация: 15: 25.1. Регламентная очистка: Компания Postgres Professional.
-
Для высвобождения или повторного использования дискового пространства, занятого изменёнными или удалёнными строками.
-
Для обновления статистики по данным, используемой планировщиком запросов PostgreSQL.
-
Для обновления карты видимости, которая ускоряет сканирование только индекса.
-
Для предотвращения потери очень старых данных из-за зацикливания идентификаторов транзакций или мультитранзакций.
Проведенный для 1С тест показывает, что автовакуум нужно настраивать индивидуально для каждой таблицы регистров бухгалтерии и накопления и без использования процентов.
Как эффективно настроить autovacuum в Postgres для 1С
Но в типовых конфигурациях 1С больше тысячи таблиц, и для (справочников, небольших регистров сведений, бизнес процессов и метаданных с небольшой нагрузкой) удобней использовать и общие параметры.
maintenance_work_mem = 128MB # min 1MB
« Задаёт максимальный объём памяти для операций обслуживания БД, в частности VACUUM, CREATE INDEX и ALTER TABLE ADD FOREIGN KEY. »
max_parallel_maintenance_workers = 8
«Задаёт максимальное число рабочих процессов, которые могут запускаться одной служебной командой. В настоящее время параллельные процессы может использовать только CREATE INDEX при построении индекса-B-дерева и VACUUM без указания FULL».
Учитывая, что даже в типовых конфигурациях любят писать данные сразу в несколько регистров, автовакуум тоже нужно распараллеливать. Значение нужно подбирать учитывая количество ядер которые это будут обслуживать.
Устанавливания этот параметр нужно проверить ограничители сверху (по умолчанию 
autovacuum_max_workers = 8
«Задаёт максимальное число процессов автоочистки (не считая процесс, запускающий автоочистку), которые могут выполняться одновременно».
Для понимания этих параметров нужно почитать статью Как эффективно настроить autovacuum в Postgres для 1С . А устанавливать их обязательно, потому что значения по умолчанию слишком большие даже для маленьких баз.
autovacuum_vacuum_scale_factor = 0.01
«Задаёт процент от размера таблицы, который будет добавляться к autovacuum_vacuum_threshold при выборе порога срабатывания команды VACUUM. Значение по умолчанию — 0.2 (20% от размера таблицы)».
autovacuum_analyze_scale_factor = 0.005
«Задаёт процент от размера таблицы, который будет добавляться к autovacuum_analyze_threshold при выборе порога срабатывания команды ANALYZE. Значение по умолчанию — 0.1 (10% от размера таблицы)».
autovacuum_naptime = 20s # time between autovacuum runs
Задаёт минимальную задержку между двумя запусками автоочистки для отдельной базы данных. При запуске он проверяет, что порог очистки = базовый порог очистки + коэффициент доли для очистки * количество кортежей и при превышении, которого срабатывает автовакуум. Достижение порога очистки само по себе не инициирует процесс чистки.
vacuum_cost_limit = 800 # 100* autovacuum_max_workers
«Во время выполнения команд VACUUM и ANALYZE система ведёт внутренний счётчик, в котором суммирует оцениваемую стоимость различных выполняемых операций ввода/вывода. Когда накопленная стоимость превышает предел (vacuum_cost_limit), процесс, выполняющий эту операцию, засыпает на некоторое время (vacuum_cost_delay). Затем счётчик сбрасывается и процесс продолжается».
Ну и конечно autovacuum = on дожно быть включено (установлен по умолчанию), но чтобы автоочистка работала, нужно также включить track_counts.
Важно! В документации написано что
«Автоочистка не обрабатывает временные таблицы. Поэтому очистку и сбор статистики в них нужно производить с помощью SQL‑команд в обычном сеансе».
Видимо поэтому 1С сейчас постоянно делает analyze при работе с временными таблицами независимо от ее размера и это занимает больше 30% времени при тесте на оборотном регистре сведений. SQL команды можно посмотреть SQL DML при записи в оборотный регистр.
За автообновление статистики отвечает параметр online_analyze.enable, который 1С рекомендует устанавливать в off.
Я лично не проверял, что 1С делает везде (во всех компонентах ORM) analyze для временных таблиц, а не только при записи в регистры, поскольку это требует длительного тестирования. В 1С временные таблицы также широко используются при работе с пакетами запросов, а недавно добавилась возможность добавление записей во временные таблицы через 1С. Поэтому я оставляю эти параметры в On только для временных таблиц Postgres Pro Standard: Документация: 15: F.31. online_analyze: Компания Postgres Professional Если у Вас есть другая подтвержденная информация — делитесь. Параметры ставлю менее агрессивные чем для автовакуума, поскольку в 1С данные во временные таблицы добавляются как результат запроса, а не мелкими порциями.
online_analyze.threshold = 50
online_analyze.scale_factor = 0.1
online_analyze.enable = on
online_analyze.verbose = off
online_analyze.min_interval = 10000
online_analyze.table_type = 'temporary'
online_analyze.local_tracking = on
plantuner.fix_empty_table = on
Использование символа \ для экранирования
В документации 1С просят устанавливать вот такие параметры, подробности в документации Postgres
escape_string_warning = off
standard_conforming_strings = off
#log_timezone = 'Europe/Moscow'
Параметры для мониторинга
В отличии от Microsoft и Oracle в Postgres хороший мониторинг из коробки не идет. Достаточно попробовать получить качественную статистику ожиданий и все станет понятно тут Как в postgres получить качественную статистику ожиданий? — Хабр Q&A (habr.com).
Гораздо лучше обстоят дела в Postgres pro Enterprise ( см pgpro_pwr) . Но и там сбор данных для мониторинга скриптом может съесть ресурсы на простом скрипте, как описано тут Postgres бесплатный сыр или ступенька к Enterprise версии поэтому применяйте его осмотрительно.
А в обычной версии остается использовать только следующие пакеты (online_analyze это другое , описан выше).
#shared_preload_libraries = 'online_analyze, plantuner,pg_stat_statements,pg_wait_sampling'
shared_preload_libraries = 'online_analyze, plantuner,pg_stat_statements'
track_activities = on
#track_activity_query_size = 1024 # (change requires restart)
track_counts = on
track_io_timing = on
track_wal_io_timing = on
track_functions = all # none, pl, all
stats_fetch_consistency = none
Скрипт установки более агрессивных настроек
В данной статье Как эффективно настроить autovacuum в Postgres для 1С | 1CUnlimited | Дзен (dzen.ru) на нагрузочном тесте было доказано, что указания уровней срабатывания autovacuum в процентах для больших таблиц указывать неэффективно.
Выход простой — установить абсолютные значения срабатывания для наиболее нагруженных таблиц.
do $$
<<first_block>>
declare
gettable RECORD;
begin
-- get the number of films or tablename like '%accrg%' or tablename like '%accumrg%'
FOR gettable IN select tablename from pg_tables where tablespace ='v81c_data' and (tablename like '%inforg%' or tablename like '%accrg%' or tablename like '%accumrg%' ) ORDER BY tablename
LOOP
-- display a message
raise notice 'Process table %', gettable.tablename;
EXECUTE 'ALTER TABLE ' || quote_ident(gettable.tablename) ||' SET (autovacuum_enabled = on, autovacuum_vacuum_scale_factor = 0, autovacuum_vacuum_threshold = 2000, autovacuum_analyze_scale_factor =0 , autovacuum_analyze_threshold = 2000 )' ;
--EXECUTE 'select tablename, tableowner from pg_tables where tablename=$1' INTO gettable USING gettable.tablename;
-- raise notice 'Process table %', gettable.tableowner;
END LOOP;
end first_block $$;
Это не значит что автовакуум будет срабатывать каждые 2000 записей, это значит что он будет срабатывать каждые autovacuum_naptime = 20s, если количество измененных записей превысит 2000.
У Postgres богатый язык скриптов и очень удобный как можно увидеть из примера.
И это все?
Как ни пиши инструкцию, всегда найдется повод ее дополнить. Необходимый минимум для OLTP получился не таким уж и маленьким. Не случайно администратор СУБД это отдельная профессия, и судя по росту нагрузок, она такой и останется тем более 24×7 в эпоху тотального интернета уже необходимость, маленький RTO уже необходимость.
Конечно не освещено много других тем, например блокировки. Просто настройка СУБД должна сразу исключать узкие места на которых возможны появления ожиданий или излишний расход ресурсов.
-
Параметры влияющие на дисковую подсистему.
-
Параметры влияющие на кэширование и использование памяти.
-
Параметры влияющие на работу отдельных процессов Postgres.
-
Далее можно переходить к параметрам влияющим на блокировки, эффективного использования ресурсов, балансировки нагрузки, тюнинг индексов, планировщика и …
До новых встреч на нашем канале t.me/Chat1CUnlimited
Установка сервера 1С + PostgreSQL на Linux Ubuntu


Можно значительно сократить затраты на программное обеспечение, установив сервер 1С на Linux. В данной инструкции мы рассмотрим процесс настройки сервера 1C 8.3 на Ubuntu 18.04 или 20.04 с сервером баз данных (не файловый вариант). В качестве СУБД мы будем использовать PostgreSQL (на примере версий 10, 12 и 13).
Выбор операционной системы должен, в первую очередь, базироваться на основе официальных системных требованиях. Прежде чем сделать окончательный выбор, ознакомьтесь с ними.
Подготовка сервера к работе
Имя сервера
Настройка сетевого экрана
Установка и запуск PostgreQL
Подготовка сервера к установке
Установка и настройка PostgreSQL Pro для 1С
Использование СУБД версии 10
Использование СУБД версии 12
После установки PostgreSQL
Пароль
Запуск
Запрет обновлений PostgreSQL
Установка и запуск сервера 1С
Настройка сервера и подключение к базе
Установка и запуск HASP Licence manager
Перенос базы со старой 1С
Публикация на веб-сервере
Обновление сервера 1С
Подготовка системы
Задаем имя сервера
Чтобы сервер 1С мог запуститься без ошибки, необходимо ему задать корректное имя:
hostnamectl set-hostname server1C.dmosk.ru
Если данное имя не зарегистрировано в DNS, прописываем соответствие в файле hosts:
vi /etc/hosts
192.168.1.11 server1C.dmosk.ru
Настройка брандмауэра
Для корректной работы сервера, необходимо открыть порты:
- 1540 и 1541 для сервера 1С.
- 1560 — запросы к базе данных.
По умолчанию, в Ubuntu действует разрешающая политика и настройка брандмауэра не требуется. В противном случае, вводим команды:
iptables -I INPUT 1 -p tcp —dport 1540:1541 -j ACCEPT
iptables -I INPUT 1 -p tcp —dport 1560 -j ACCEPT
И сохраняем правила с помощью iptables-persistent:
apt-get install iptables-persistent
netfilter-persistent save
Установка PostgreSQL
Как было сказано выше, мы задействуем СУБД PostgreSQL. Для 1С требуется специальная сборка postgresql, которая может быть установлена из специального дистрибутива или от поставщика 1С. Рассмотрим установку версий Postgres Pro 13, а также обычные версии PostgreSQL 10 и 12.
Подготовка к установке СУБД
Настраиваем локаль, введя команду:
dpkg-reconfigure locales
В открывшемся окне выбираем локаль ru_RU.UTF-8 UTF-8:
Нажимаем OK. В следующем окне также выбираем ru_RU.UTF-8:
… и нажимаем OK.
* Если мы устанавливали русскую версию Linux, возможно, данные настройки уже будут выставлены. Так или иначе, стоит в этом убедиться.
Дальшейшие наши действия зависят от выбранной версии PostgreSQL.
PostgreSQL Pro для 1С
Для работы 1С рекомендуется установить специальный выпуск PostgreSQL Pro. Она также может быть загружена и установлена бесплатно.
Переходим на страницу 1c.postgres.ru — проходим 3 шага мастера, выбрав нужную версию Postgresql и Ubuntu:
После заполняем форму для получения инструкции по установке СУБД:
На указанную почту придет инструкция по установке PostgreSQL.
Пример установки PostgreSQL Pro 13. Скачиваем скрипт для установки репозитория:
curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pg1c-13/keys/pgpro-repo-add.sh
Устанавливаем gnupg2:
apt-get install gnupg2
* без данного пакета при попытке установить репозиторий мы получим ошибку:
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
Error adding key.
Запускаем скачанный скрипт:
sh pgpro-repo-add.sh
Запускаем установку СУБД:
apt-get install postgrespro-1c-13
Разрешаем автозапуск:
systemctl enable postgrespro-1c-13
Остановим сервис:
systemctl stop postgrespro-1c-13
Удаляем содержимое каталога data:
rm -rf /var/lib/pgpro/1c-13/data/*
* в противном случае, при попытке инициализировать базу мы получим ошибку Data directory /var/lib/pgpro/1c-13/data is not empty!
Инициализируем базу:
/opt/pgpro/1c-13/bin/pg-setup initdb —tune=1c —locale=ru_RU.UTF-8
Запускаем сервис postgrespro:
systemctl start postgrespro-1c-13
Установка PostgreSQL 10 от 1С
Сначала устанавливаем компоненты, необходимые для установки СУБД из пакетов.
wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
dpkg -i libicu55_55.1-7_amd64.deb
* libicu55 — Unicode-компоненты для интернационализации.
Теперь устанавливаем postgresql-common:
apt-get install postgresql-common
* postgresql-common позволяет одновременную установку нескольких версий PostgreSQL.
Устанавим пакет libssl:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb
* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.
dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb
Переходим к установки самой СУБД. 10-я версия PostgreSQL может быть установлена из дистрибутива, полученного от 1С (в личном кабинете или от поставщика). Архив с дистрибутивом postgresql, в свою очередь, содержит архивы под различные операционные системы — нам нужен файл с окончанием в названии …amd64_deb.tar.bz2
* в данном примере взят файл для 64-х разрядной версии операционной системы. Пакет deb (для систем на базе Debian).
Копируем данный файл на сервер (например, с помощью программы WinSCP) и распаковываем его:
tar jxvf PostgreSQL_10.*.1C_postgresql_10.*.1C_amd64_deb.tar.bz2
Выполним установку пакетов из папки …amd64_deb…:
dpkg -i postgresql-10.*.1C_amd64_deb/*.deb
Инициализируем СУБД:
sudo -u postgres /usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main —locale=ru_RU.UTF-8
* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».
Установка PostgreSQL 12 от 1С
Устанавим пакет libssl:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb
* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.
dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb
Устанавливаем libllvm6.0:
apt-get install libllvm6.0
Распаковываем архив с postgresql:
tar jxvf postgresql_12.*.1C_amd64_deb.tar.bz2
Устанавливаем по очереди
dpkg -i postgresql-12.*.1C_amd64_deb/libpq5_12.*.1C_amd64.deb
dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-client-12_12.*.1C_amd64.deb
dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-12_12.*.1C_amd64.deb
Инициализируем СУБД:
sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main —locale=ru_RU.UTF-8
* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».
Действия после установки postgres
Если мы установили PostgreSQL Pro версию, выполним только первую настройку (пароль).
Пароль для пользователя postgres
Задаем пароль для пользователя postgres:
sudo -u postgres psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘password'»; history -d $((HISTCMD-1))
* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres. Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.
Остальные настройки выполняем для PostgreSQL не Pro версии.
Автозапуск
Разрешаем автозапуск сервиса баз данных и стартуем его:
systemctl enable postgresql —now
Блокировка обновлений PostgreSQL
Так как для 1С устанавливается специальная сборка СУБД, необходимо запретить ее обновление. В противном случае будет установлен обычныйpostgresql, что приведет к потери работоспособности сервера.
Смотрим версию установленного сервера баз данных:
dpkg -l | grep postgresql
Пример ответа:
ii postgresql-10 10.10-4.1C …
ii postgresql-client-10 10.10-4.1C …
…
И так, у нас установлена версия 10.10-4.1C. Вводим:
dpkg -l | grep 10.10-4.1C | awk -F’ ‘ ‘{print $2}’ | xargs apt-mark hold
* где 10.10-4.1C — версия установленного PostgreSQL. Команда apt-mark hold блокируем установку обновлений для пакетов версии 10.10-4.1C.
Также добавим:
apt-mark hold postgresql-common postgresql-client-common
Для установки сервера 1С необходимо сначала установить вспомогательные пакеты, затем сам сервис. Дистрибутив необходимо скачать с сайта 1С — личного кабинета, доступного по подписке.
И так, выполним установку следующих пакетов:
apt-get install imagemagick unixodbc ttf-mscorefonts-installer
* где:
- imagemagick — набор программ для чтения и редактирования графических файлов.
- unixodbc — диспетчер драйверов для ODBC.
- ttf-mscorefonts-installer — набор шрифтов Microsoft.
В процессе установки система запросит принять лицензионное соглашение — выбираем Yes.
Копируем на сервер архив с дистрибутивом для 1С, который был загружен с сайта 1С или получен от поставщика. Распаковываем архив командой:
tar zxvf 8.3.16.1148_deb64.tar.gz
* где 8.3.16.1148_deb64.tar.gz — имя архива с 1С версии 8.3.16. В архиве пакеты deb (для Linux на основе Debian) для 64-х разрядной системы.
Устанавливаем все пакеты, которые находились в архиве командой:
dpkg -i 1c-enterprise*.deb
Разрешаем автозапуск сервиса 1С и стартуем его:
systemctl enable srv1cv83
systemctl start srv1cv83
Если мы получим ошибку «srv1cv83.service not found», находим исполняемый файл srv1cv83:
find /opt -name srv1cv83
В моем случае он был по пути:
/opt/1cv8/x86_64/8.3.16.1148/srv1cv83
Делаем симлинк в каталоге /etc/init.d на найденный файл:
ln -s /opt/1cv8/x86_64/8.3.16.1148/srv1cv83 /etc/init.d/srv1cv83
Снова разрешаем и запускаем сервис:
systemctl enable srv1cv83
systemctl start srv1cv83
Необходимо убедиться, что сервис запустился:
systemctl status srv1cv83
Настройка кластера и клиента
На любой компьютер в сети установим толстый клиент 1С:Предприятие той же версии, что и сервер. Во время установки обязательно выбираем компонент Администрирование сервера 1С:Предприятие:
Устанавливаем клиента 1С. После установки в меню пуск находим ссылку Регистрация утилиты администрирования серверов (версия) и запускаем ее от имени администратора:
Теперь запускаем утилиту Администрирование серверов 1С Предприятия:
В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers — выбираем Создать — Центральный сервер 1С:Предприятие 8.3:
Пишем имя сервера 1С или его IP-адрес:
… и нажимаем OK. В панели управления появится подключение — переходим в раздел Кластеры — Локальный кластер — кликаем правой кнопкой по Информационные базы — выбираем Создать — Информационная база:
Заполняем параметры для создания новой базы:
* в данном примере нами были заполнены:
- Имя — задаем произвольное имя для подключения к базе.
- Сервер баз данных — имя или IP-адрес базы. Задаем localhost, так как в нашем случае сервер 1С и сервер баз данных находятся на одном сервере.
- Тип СУБД — выбираем PostgreSQL.
- База данных — имя базы данных.
- Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
- Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
- Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.
Если мы получим ошибку Этот хост неизвестен:
… необходимо убедиться, что имя сервера разрешается в IP-адрес. Для этого необходимо его добавить в локальную DNS или файл hosts.
База должна создастся. Теперь запускаем 1С клиент и добавляем новую базу — при добавлении выбираем Добавление в список существующей информационной базы:
Указываем произвольное имя информационной базы, а также выбираем тип расположения базы На сервере 1С:Предприятия:
Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся.
HASP Licence manager
Если в сервер вставлен аппаратный ключ, необходимо установить HASP Licence manager, чтобы лицензии могли получать компьютеры по сети.
Проверяем, что наш сервер видит ключ:
lsusb | grep -i hasp
Мы должны увидеть что-то на подобие:
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Устанавливаем необходимые пакеты:
apt-get install make libc6-i386
* где:
- make — утилите, которая в нашем случае используется для компиляция исходного кода.
- libc6-i386 — набор стандартных библиотек для С и математических вычислений.
Создадим каталог для загрузки пакетов и перейдем в него:
mkdir /tmp/hasp ; cd /tmp/hasp
Переходим на страницу загрузки HASP для Ubuntu. Выбираем необходимую версию и копируем ссылки на 2 файла — haspd-modules_… и haspd_…
На момент обновления инструкции на сайте не было пакетов для Ubuntu 20, однако, для данной версии подходят пакеты под Ubuntu 18.
С помощью скопированных ссылок загружаем на сервер два файла:
wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter2ubuntu_amd64.deb
wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/18.04/haspd_7.90-eter2ubuntu_amd64.deb
* в моем примере загрузка выполнялась для Ubuntu 18.04.
Выполним установку скачанных пакетов командой:
dpkg -i haspd*.deb
Разрешим автозапуск сервиса haspd:
systemctl enable haspd
Запускаем его:
systemctl start haspd
Проверяем, что он корректно стартовал и работает:
systemctl status haspd
Готово — наши компьютеры в локальной сети смогут получить лицензию.
Миграция базы на PostgreSQL
В случае, если это не первая установка и у нас уже есть база, ее нужно перенести на новый сервер. Рассмотрим 2 варианта — база была на другом сервере PostgreSQL и универсальный (файловый вариант или другая СУБД).
С PostgreSQL на PostgreSQL
В данном случае процесс переноса заключается в создании дампа (backup) и его восстановления на новом сервере (restore). Необходимо учесть, что для корректного переноса данных, версии 1С должны совпадать.
Есть несколько инструментов по созданию резервных копий PostgreSQL и их восстановлению. Их описание выходит за рамки данной статьи — подробнее читайте инструкцию Резервное копирование PostgreSQL.
Универсальный способ миграции на PostgreSQL
Данный способ также подойдет и для миграции с PostgreSQL на PostgreSQL. Для начала, открываем нашу базу в конфигураторе на старом 1С — кликаем по Администрирование — Выгрузить информационную базу:
Выбираем путь для сохранения файла. Ждем окончания выгрузки и переносим полученный файл на компьютер с толстым клиентом 1С (если для нового сервера мы используем другой компьютер с 1С).
Открываем конфигуратор для созданной в PostgreSQL базы — кликаем Администрирование — Загрузить информационную базу:
… и выбираем выгруженный ранее файл. Дожидаемся его загрузки — система потребует перезапустить 1С — соглашаемся. Ждем новой загрузки. После можно пользоваться базой 1С на новом сервере.
Веб-публикации
Сервер 1С поддерживает возможность веб-публикаций баз 1С. Это дает возможность открывать программу в браузере или мобильном приложении. В Linux данные публикации осуществляются с помощью Apache.
Установка и запуск Apache
Первым делом, устанавливаем веб-сервер apache:
apt-get install apache2
Разрешаем автозапуск веб-сервера и стартуем сам сервис:
systemctl enable apache2
systemctl start apache2
Если на нашем сервере используется брандмауэр, применяем правило:
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
netfilter-persistent save
Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С> — мы должны увидеть стартовую страницу Apache:
Публикация 1С на веб-сервере
Публикация базы выполняется с помощью скрипта webinst, который устанавливается с сервером. Для простоты, мы опубликуем базу в корневую директорию /var/www/html, но при желании, можно настроить виртуальные домены.
Для удобства работы, создадим переменную с именем публикуемой базы, например:
DBNAME=test
И так, создадим каталог, в который опубликуем нашу базу:
mkdir /var/www/html/$DBNAME
Переходим в каталог с установленным 1С:
cd /opt/1C/v8.3/x86_64/
… или:
cd /opt/1cv8/x86_64/8.3.16.1148/
* где 8.3.16.1148 — версия установленной платформы.
Заускаем скрипт для публикации базы:
./webinst -apache24 -wsdir $DBNAME -dir /var/www/html/$DBNAME -connstr «Srvr=192.168.1.11;Ref=$DBNAME;» -confPath /etc/apache2/apache2.conf
* где apache24 — версия установленного apache; $DBNAME — имя нашей базы, которую мы создали ранее; /var/www/html/$DBNAME — путь до каталога на сервере, в котором будет опубликована база; 192.168.1.11 — IP-адрес сервера 1С; Ref=$DBNAME — имя базы в СУБД; /etc/apache2/apache2.conf — путь до конфигурационного файла apache.
Мы должны увидеть:
Publication successful
… или:
Публикация выполнена
Перезапускаем апач:
systemctl restart apache2
Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С>/test/, где test — каталог в каталоге /var/www/html, куда мы опубликовали базу.
Обновление сервера 1С
Подготовимся к обновлению — скачаем новую версию дистрибутива сервера DEB нужной разрядности (как правило, 64 бит). Копируем архив на сервер.
Остановим сервис 1С:
systemctl stop srv1cv83
Далее процедура обновления напоминает установку приложения.
Переходим в каталог, в который перекинули архив и создаем новый каталог, куда распакуем его:
mkdir 1c_update
распаковываем архив в созданный каталог:
tar -zxf deb64*.tar.gz -C 1c_update/
Выполняем установку новой версии пакетов:
dpkg -i 1c_update/1c-enterprise*.deb
Сервис 1С запускается с помощью файла /etc/init.d/srv1cv83, который является симлинком. Нам нужно удалить старый симлинк и создать новый.
Чтобы найти все файлы srv1cv83, выполним команду:
find /opt -name srv1cv8*
В моем случае было несколько путей, в том числе, для установленной нами версии 8.3.19.1726:
/opt/1cv8/x86_64/8.3.19.1726/srv1cv83
В более свежих версиях используются файлы для systemd и название файла заканчивается на @.service, например:
/opt/1cv8/x86_64/8.3.23.1739/srv1cv8-8.3.23.1739@.service
Следующие несколько команд зависят от того, какой у нас файл.
а) Если старого типа (для init.d).
Удаляем симлинк, который ведет на старую версию файла:
rm -f /etc/init.d/srv1cv83
Создаем новый (путь до которого мы нашли командой find):
ln -s /opt/1cv8/x86_64/8.3.19.1726/srv1cv83 /etc/init.d/srv1cv83
б) Если для systemd.
Копируем юнит-файл в каталог /etc/systemd/system:
cp /opt/1cv8/x86_64/8.3.23.1739/srv1cv8-8.3.23.1739@.service /etc/systemd/system/srv1cv83.service
Разрешаем автозапуск:
systemctl enable srv1cv83
Готово. Мы настроили сервис. Можно перейти к его запуску.
Следующие команды как для init.d, так и systemd.
Обновляем информацию в systemd:
systemctl daemon-reload
Запускаем сервис:
systemctl start srv1cv83
Убедиться, что сервис запустился можно командой:
systemctl status srv1cv83
Также рекомендую удалить каталог с распакованными файлами, чтобы они нам не помешали при следующем обновлении:
rm -rf 1c_update
Самая примитивная инструкция по установке PostgreSQL 14 + сервер 1C 8.3.20.1710 на Ubuntu 20.04
Статья переехала на ypermitin.github.io
Инструкция с минимальным набором шагов по настройке сервера 1С:Предприятия 8.3.20 + PostgreSQL 14 на Ubuntu 20.04. В общем плане актуальна для других версий приложений и ОС. Клиентскую часть 1С здесь не рассматриваем.
Многие вещи в инструкции не раскрыты и вся информация скорее для ознакомления с процессом, а для рабочего окружения нужно более вдумчиво подходить ко всем настройкам.
Настройка ОС
Полностью описывать настройку ОС в части сети, дисковой подсистемы и прочего смысла нет. Остановимся только на важных моментах, связанных с работой PostgreSQL и платформы 1С.
Обновим систему
Рекомендую поставить все последние обновления перед продолжением.
sudo apt update sudo apt upgrade
Настройка локали
Чтобы платформа 1С могла работать с базой данных PostgreSQL нужно, чтобы в системе были установлены необходимые локали.
sudo dpkg-reconfigure locales
Далее на первом шаге выбираем из списка локаль «ru_RU.UTF-8 UTF-8». Эту же локаль на втором шаге выбираем как локаль по умолчанию.
Часовой пояс и время
Далее установим нужный часовой пояс в системе.
sudo timedatectl set-timezone Europe/Moscow
Текущие настройки можно посмотреть так.
А список доступных часовых поясов можно узнать так.
timedatectl list-timezones
Установка PostgreSQL
Теперь установим СУБД PostgreSQL. «Ванильная» версия платформой 1С не поддерживается, поэтому скачаем сборку от компании PostgresPro. Для этого идем на сайт 1c.postgres.ru, выбираем архитектуру, версию сборки, операционную систему и загружаем (будет отправлено письмо с информацией по указанным контактным данным с инструкцией по установке).
Есть сборка PostgreSQL от фирмы 1С, которую можно загрузить с официального сайта. Ее в инструкции не рассматриваем.
Далее обновляем доступные репозитории пакетов согласно инструкции.
curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh sudo sh pgpro-repo-add.sh
И устанавливаем PostgreSQL версии 14.
apt-get install postgrespro-1c-14
Чтобы найти имя демона PostgreSQL выполним команду.
systemctl --type=service | grep postgres # Пример вывода: # postgrespro-1c-14.service
Теперь останавливаем сервис и удаляем созданный по умолчанию кластер.
# Останавливаем PostgreSQL sudo systemctl stop postgrespro-1c-14 # Удаляем файлы ранее созданного при установке кластера # Вместо 1c-14 может быть другое название каталога, в зависимости от версии. rm -r /var/lib/pgpro/1c-14/data/* # Инициализируем новый кластер для 1С с нужной локалью (не обязательно, если по умолчанию локаль в системе "ru_RU.UTF-8"). sudo /opt/pgpro/1c-14/bin/pg-setup initdb --tune=1c --locale=ru_RU.UTF-8 # Запускаем PostgreSQL sudo systemctl start postgrespro-1c-14
Готово. Дополнительно, но только в качестве примера, сделаем дополнительные шаги.
- Разрешим подключение к СУБД с любых адресов. Для этого в файле конфигурации сервера (/var/lib/pgpro/1c-14/data/postgresql.conf) изменим строчку:
# listen_addresses = 'localhost' listen_addresses = '*'
Также разрешим подключение для всех пользователей по логину и паролю. В файле (/var/lib/pgpro/1c-14/data/pg_hba.conf) изменим разрешения для IPv4.
# Было # # IPv4 local connections: # host all all 127.0.0.1/32 md5 # Стало # IPv4 local connections: host all all 0.0.0.0/0 password host all all 127.0.0.1/32 md5
Теперь доступ к СУБД имеется с любой машины и для любого пользователя. Кстати, давайте создадим, опять же только для примера, пользователя PostgreSQL.
Далее SQL-командой создаем пользователя. Для 14 версии команда будет такая (для других см. документацию):
CREATE USER username SUPERUSER PASSWORD 'passwordstring';
Настройки выше являются небезопасными и годятся только для локальных установок с целью тестирования и изучения. Будьте осторожны!
Установка сервера 1С
Начиная с версии 8.3.20 установка стала значительно проще (хотя может и с более ранних версий). С официального сайта скачиваем версию для Linux, в нашем случае она называется:
Технологическая платформа 1С:Предприятия (64-bit) для Linux
Копируем файл на наш сервер и распаковываем архив.
# Имя архива меняется в зависимости от версии платформы 1С tar -xvzf server64_8_3_20_1710.tar.gz # В итоге появится файл "setup-full-8.3.20.1710-x86_64.run" для установки. Он то нам и нужен. Запускаем. sudo ./setup-full-8.3.20.1710-x86_64.run
Программа установки интерактивно спросит язык установки, выбираем:
[16] Russian - Русский
Далее соглашаемся на выбор компонентов. Нас интересуют:
Сервер 1С:Предприятия 8 [y/N] : y
Интерфейсы на различных языках - Русский [Y/n] :y
Дожидаемся окончания процесса установки.
Пожалуйста, подождите пока программа установит 1С:Предприятие на ваш компьютер.
Установка
0% ______________ 50% ______________ 100%
#########################################
----------------------------------------------------------------------------
Завершена установка 1С:Предприятие на ваш компьютер.
После установки может потребоваться создать ссылку для службы. Перед этим проверим не создал ли установщик ссылку самостоятельно.
sudo systemctl --type=service | grep srv1cv83
Если предыдущая команда не находит службу, то создаем ее.
# Добавляем ссылку на файл службы sudo ln -s /opt/1cv8/x86_64/8.3.20.1710/srv1cv83 /etc/init.d/srv1cv83 # Включаем службу sudo systemctl enable srv1cv83 sudo systemctl restart srv1cv83 # Проверяем результат, состояние службы sudo systemctl status srv1cv83
Готово! Служба установлена и работает.
● srv1cv83.service - LSB: Starts and stops the 1C:Enterprise daemons
Loaded: loaded (/etc/init.d/srv1cv83; generated)
Active: active (exited) since Thu 2022-03-24 19:45:25 UTC; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 21186 ExecStart=/etc/init.d/srv1cv83 start (code=exited, status=0/SUCCESS)
Mar 24 19:45:20 app1cpg systemd[1]: Starting LSB: Starts and stops the 1C:Enterprise daemons...
Mar 24 19:45:20 app1cpg su[21230]: (to usr1cv8) root on none
Mar 24 19:45:20 app1cpg su[21230]: pam_unix(su-l:session): session opened for user usr1cv8 by (uid=0)
Mar 24 19:45:20 app1cpg su[21230]: pam_unix(su-l:session): session closed for user usr1cv8
Mar 24 19:45:25 app1cpg srv1cv83[21186]: Starting 1C:Enterprise 8.3 server: OK
Mar 24 19:45:25 app1cpg systemd[1]: Started LSB: Starts and stops the 1C:Enterprise daemons.
И еще немного информации.
Послесловие
Как говорилось в самом начале, это лишь поверхностная инструкция по установке PostgreSQL + сервер 1С для Ubuntu 20.04. Многие аспекты даже не рассматривались:
- Открытие портов для брэндмауэра
- Настройка безопасности для СУБД
- Тюнинг настроек PostgreSQL
- Настройка использования лицензий 1С
- И многое другое.
Но для старта информация подходящая.
Ниже ссылки на полезные материалы, в них некоторые моменты описаны более развернуто. В общем, вперед! К знаниям!
Полезные ссылки
- УСТАНОВКА СЕРВЕРА 1С НА UBUNTU 20.04
- От экспертов «1С‑Рарус»: Установка серверной части 1С в Linux среде
- Поднимаем сервер 1С на UBUNTU и PostgreSQL за 20 минут
- Установка и настройка нескольких экземпляров сервера 1С: Предприятия 8.3 разных релизов на одном Ubuntu-server
- Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана
Актуальность использования СУБД 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, он должен быть установлен и запущен.

Рисунок 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.
Для работы с базами данных 1С под ОС Linux используется СУБД PostgreSQL. В данной статье описана установка СУБД PostgreSQL 11.5 под ОС Linux. Проверено на дистрибутивах RHEL 7/CentOS 7 .
Подготовка к установка PostgreSQL
1. Зайдем на сервер под root
2. Проверим наличие доступных русских локалей в системе:
На экране отобразиться примерно такой список:
|
ru_RU ru_RU.iso88595 ru_RU.koi8r ru_RU.utf8 ru_UA ru_UA.koi8u ru_UA.utf8 russian |
Нас интересует локаль ru_RU.utf8. Если она есть в списке, то установим ее как основную
1. Выполним:
|
localectl set-locale LANG=ru_RU.utf8 |
2. Установим в переменную среды LANG нашу локаль для текущей сессии, чтобы скрипт инициализации базы данных PG SQL корректно отработал создание базы данных для 1С:
|
export LANG=«ru_RU.UTF-8» |
3. После установки, проверим переменную:
Должны увидеть
Если все в порядке, переходим к установке PostgreSQL.
Установка PostgreSQL
1. Создадим каталог /opt/postgres_11_5
2. Скачаем с сайта фирмы «1С» специальный пропатченный дистрибутив postgresql:
- postgresql11-1c-11.5-12.el7.x86_64.rpm;
- postgresql11-1c-contrib-11.5-12.el7.x86_64.rpm;
- postgresql11-1c-libs-11.5-12.el7.x86_64.rpm;
- postgresql11-1c-server-11.5-12.el7.x86_64.rpm.
Поместим установочные пакеты postgresql в каталог /opt/postgres_11_5:
Можно использовать для этого программу WinSCP. Как с ней работать тут.
3. Перейдем в каталог /opt/postgres_11_5
4. Установим все пакеты из каталога:
|
yum localinstall postgresql11* |
5. Выполним смену пароля пользователю postgres:
6. Если на сервере работает фаервол то настроим правила для сервера PostgreSQL . Нам надо открыть порт 5432 для входящих соединений. Если в системе используется утилита firewalld, то вводим команды:
|
firewall-cmd —permanent —zone=public —add-port=5432/tcp firewall-cmd -reload |
Если используется утилита iptables, то:
|
iptables -t filter -I INPUT -p tcp —dport 5432 -j ACCEPT service iptables save |
7. Отключим SELinux, позже при желании можно настроить политику доступа для PostgreSQL:
Создание кластера базы данных PostgreSQL
1. Переключаемся на пользователя postgres:
2. Создадим кластер баз данных. Обязательно указываем русскую локаль ru_RU.UTF-8:
|
/usr/pgsql-11/bin/initdb —locale=ru_RU.UTF-8 -D /var/lib/pgsql/11/data/ |
В данном случае файлы базы данных будут располагаться в каталоге /var/lib/pgsql/11/data/ — это каталог по умолчанию.
Изменение каталога хранения базы данных
Можно расположить файлы базы данных в любом другом каталоге, для этого, перед тем как инициализировать кластер БД, надо сделать следующие шаги:
1. Авторизоваться под суперпользователем
2. Создать свой каталог для кластера:
3. Настроить к нему необходимые права доступа пользователю postgres.
|
chown -R postgres:postgres /pgdata/data chmod -R 700 /pgdata |
3. Внесем изменения в конфигурационный файл /var/lib/pgsql/.bash_profile сервера pgsql:
|
vim /var/lib/pgsql/.bash_profile |
Ищем и меняем значение PGDATA, на имя нашего каталога, так:
4. Внесем изменения в скрипт запуска pgsql /etc/init.d/postgresql-11:
|
vim /etc/init.d/postgresql-11 |
Аналогично ищем и меняем значение PGDATA:
5. Переключаемся на пользователя postgres:
6. После этого можно создавать кластер в созданном нами каталоге /pgdata/data:
|
/usr/pgsql-11/bin/initdb —locale=ru_RU.UTF-8 -D /pgdata/data |
Настройка сетевого доступа
По умолчанию в дистрибутивах PostgreSQL от «1С» в файле /var/lib/pgsql/11/data/postgresql.conf уже есть настройка listen_addresses = ‘*’. Она разрешает удаленное сетевое подключение к СУБД с любых IP-адресов. При необходимости эту настройку можно изменить и указать определенные IP-адреса.
Помимо этого, ограничение на подключение еще настраивается в файле /var/lib/pgsql/11/data/pg_hba.conf. Данный файл содержит строки в таком формате:
|
local база пользователь метод-аутентификации [параметры-аутентификации] host база пользователь адрес метод-аутентификации [параметры-аутентификации] |
Строка с local задает правила для подключений по локальным UNIX-сокетам. Строка с host — подключения по TCP/IP.
Выполним настройку:
- Откроем его на редактирование:
|
vim /var/lib/pgsql/11/data/pg_hba.conf |
Например наш сервер 1С имеет IP-адрес 192.168.0.101. Тогда файл должен содержать только следующие строки, остальные удалить или пометить как комментарий:
|
local all all trust host all all 192.168.0.101 md5 |
Строк должно быть, соответственно, несколько, если серверов 1С несколько в кластере.
Настройка параметров PostgreSQL
1. Зайдем в командную оболочку psql сервера.
2. Командой ALTER SYSTEM SET установить параметры сервера. Вам необходимо подобрать настройки исходя из параметров своего оборудования. Расчет необходимо осуществить на основании рекомендаций фирмы «1С» изложенных здесь https://its.1c.ru/db/metod8dev/content/5866/hdoc.
Пример установки настроек:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
ALTER SYSTEM SET shared_buffers = ’96GB’; ALTER SYSTEM SET effective_cache_size = ‘288GB’; ALTER SYSTEM SET maintenance_work_mem = ’20GB’; ALTER SYSTEM SET wal_buffers = ’16MB’; ALTER SYSTEM SET default_statistics_target = 100; ALTER SYSTEM SET random_page_cost = 1.1; ALTER SYSTEM SET effective_io_concurrency = 200; ALTER SYSTEM SET work_mem = ’10GB’; ALTER SYSTEM SET max_worker_processes = 44; ALTER SYSTEM SET max_parallel_workers_per_gather = 22; ALTER SYSTEM SET temp_buffers = ‘265MB’; ALTER SYSTEM SET wal_level = ‘replica’; ALTER SYSTEM SET max_replication_slots = ‘8’; ALTER SYSTEM SET max_wal_senders = ’32’; ALTER SYSTEM SET autovaccuum = ‘on’; ALTER SYSTEM SET autovaccuum_max_workers = 16; ALTER SYSTEM SET autovacuum_naptime = ’20s’; ALTER SYSTEM SET bgwriter_delay = ’20ms’; ALTER SYSTEM SET bgwriter_lru_multiplier = 4.0; ALTER SYSTEM SET bgwriter_lru_maxpages = 400; ALTER SYSTEM SET synchronous_commit = ‘off’; ALTER SYSTEM SET checkpoint_segments = 256; ALTER SYSTEM SET checkpoint_completion_target = 0.9; ALTER SYSTEM SET min_wal_size = ‘4GB’; ALTER SYSTEM SET max_wal_size = ‘8GB’; ALTER SYSTEM SET ssl = ‘off’; ALTER SYSTEM SET max_files_per_process = 1000; ALTER SYSTEM SET standard_conforming_strings = ‘off’; ALTER SYSTEM SET escape_string_warning = ‘off’; ALTER SYSTEM SET max_locks_per_transaction = 256; ALTER SYSTEM SET max_connections = 15000; |
Повторюсь, расчет необходимо выполнить обязательно, так как настройки подобранные для другого оборудования могут привести к значительному снижению производительности вашей СУБД.
Создание пользователя базы данных.
1. Запустим командную оболочку psql:
2. Создать служебного пользователя СУБД:
|
create user pg1cv8 with superuser; |
3. Установить пароль служебному пользователю СУБД:
|
alter user pg1cv8 password ‘password’; |
4. Выполним старт сервера PostgreSQL:
|
/usr/pgsql-11/bin/pg_ctl start |
Или так:
|
service postgresql-11 start |
5. Добавим службу в автозапуск.
|
service postgresql-11 enabled |
После всех настроек можно пробовать создавать базу данных 1С. Удобней всего это сделать из консоли сервера 1С под Windows.



















