Меню
+7 (3519) 22-43-55
+7 (3519) 42-15-01
г.Магнитогорск, пр-кт Ленина д.21/2 пом.4
Данная статья родилась благодаря Евгению Иванову и кратко описывает как развернуть PostgreSQL 12 для 1C и сервера 1C 8.3.18 на Ubuntu 20.04.1 LTS и конечно настроить доступ к базе через WEB на своем сервере (рекомендуется минимум Core i5 / 8 Гб / SSD 250Гб ).
Например, если вы не хотите держать свои данные в облаке, но доступ хотелось бы получать из любого места. Наш сервер Ubuntu был запущен в виртуальной среде VmWare ESXi.
Итак приступим.
Все операции проделывались на:

Первый ШАГ.

Установите Ubuntu server 20.04 LTS.

Второй ШАГ.

Устанавливаем POSTGRES. 
Сделаем предварительную подготовку:
 
Добавляем репозиторий Postgre для Ubuntu 20.04.1 LTS (Focal Fossa). Для этого создаём файл /etc/apt/sources.list.d/pgdg.list:
deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main

Импортируем подписи и обновляем систему:
# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
# apt update && sudo apt dist-upgrade
 

Генерируем русскую локаль, именно с ней будет работать скрипт инициализации базы данных.
# locale-gen en_US.UTF-8 ru_RU.UTF-8 
# update-locale LANG=ru_RU.UTF8
# dpkg-reconfigure locales

Устанавливаем необходимые зависимости:
# wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
# dpkg -i libicu55_55.1-7_amd64.deb

# wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.11_amd64.deb
# dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.11_amd64.deb

# apt install libllvm6.0 postgresql-common


Установим дистрибутив POSTGRES:
# dpkg -i libpq5_12.5-3.1C_amd64.deb postgresql-client-12_12.5-3.1C_amd64.deb postgresql-12_12.5-3.1C_amd64.deb

Поставим пакеты на заморозку:
# apt-mark hold libpq5
# apt-mark hold postgresql-12
# apt-mark hold postgresql-client-12

Теперь сделаем подготовку POSTGRES:
# sudo -u postgres psql

Устанавливаем пароль пользователю в базе:
alter user postgres with password 'наш_пароль';
$ exit

Перезапускаем сервис:
# service postgresql restart

Проверяем, что он запустился и слушает порт по умолчанию:
# netstat -an | grep -i list
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

Так же можно проверить статус сервиса:
# service postgresql status
    postgresql.service - Etersoft PostgreSQL database server
    Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor preset: enabled)
    Active: active (running) ....

Третий ШАГ.

Устанавливаем 1С
Некоторая подготовка:
Шрифты Microsoft:
# apt-get install ttf-mscorefonts-installer fontconfig
# fc-cache -fv

Пакеты, необходимые 1С:
# apt-get install libfreetype6 libgsf-1-common unixodbc glib2.0 barcode


Теперь сам дистрибутив 1С:
# ./setup-full-8.3.21.1302-x86_64.run

---
   Выберите компоненты
   1С:Предприятие [Y/n] :
   1С:Предприятие - Тонкий клиент [y/N] :
   1С:Предприятие - Тонкий клиент, файловый вариант [y/N] : 
   Сервер 1С:Предприятия 8 [y/N] : y
   Модули расширения веб-сервера [y/N] : y
   Администрирование сервера 1С:Предприятия [y/N] :
   Интерфейсы на различных языках : Y (Cannot be edited)
   ......
   Сервер хранилища конфигураций 1С:Предприятия [y/N] :
   Дополнительные функции администрирования [y/N] :
   Дополнительно : Y (Cannot be edited)
   Дополнительно - Дистрибутивы тонкого клиента [Y/n] :
   Дополнительно - Liberica JRE [y/N] :
   Дополнительно - Контроль целостности [y/N] :
   Верно ли выбранное выше? [Y/n]: 
---

Делаем подготовку для запуска сервиса 1С. Сам он не устанавливается в новых версиях, это связано с тем, что теперь под Unix могут работать сразу несколько версий 1С.
Подготовка:
# systemctl link /opt/1cv8/x86_64/8.3.21.1302/srv1cv8-8.3.21.1302@.service
# systemctl enable Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
 
Теперь запуск:
# service srv1cv8-8.3.21.1302@default start

Проверяем подключение через Администрирование 1С Серверов.
На этом шаге мы можем установить свою базу через 1С Предприятие. Настройки будут выглядеть так:


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


ВАЖНО: имя сервера serv1c, выбранное в нашем случае, должно быть прописано в DNS, иначе мы будем везде получать сообщение об ошибке, что сервер serv1c не найден.  Для удобства и меньшей путаницы, самому серверу ubuntu лучше дать то же имя.


Четвертый ШАГ.

Встраивание WEB-сервера в APACHE.

Если ещё не устанавливали APACHE сервер:
# apt install apache2

Допустим мы решили нашу базу назвать orgbuh.
# cd /opt/1cv8/x86_64/8.3.21.1302
# ./webinst -apache24 -wsdir orgbuh -dir '/orgbuh' -connstr 'Srvr="serv1c";Ref="orgbuh";' -confPath /etc/apache2/apache2.conf

Перезапустим apache:
# service apache2 restart

Можно проверять. Сервер будет доступен по адресу:
http://serv1c/orgbuh

Пятый ШАГ.

Делаем сайт доступным по HTTPS.
Для этого будем использовать бесплатные сертификаты. Правда их нужно продлять каждые 3 месяца.
Установим CERTBOT:
# apt  install certbot

И модуль для Apache:
# apt install python3-certbot-apache

Получаем сертификат и настраиваем Apache (всё одной командой):
# certbot run -a webroot -i apache -w /var/www/html -d serv1c.domain.ru

!!! serv1c.domain.ru по порту 443 должен быть переадресован на наш сервер из Интернета, чтобы certbot смог завершить свою установку корректно.

Если всё сделали правильно, то Ваша база будет доступна по ссылке https://serv1c.domain.ru/orgbuh
И можно безопасно пользоваться ей через Интернет.
Возможно эта ссылка будет полезна.


Оптимизация производительности PostgreSQL

Ниже перечислены основные параметры, на  которые следует обратить внимание при оптимизации производительности PostgreSQL.
shared_buffers
Объём совместно используемой памяти, выделяемой PostgreSQL для кэширования данных, определяется числом страниц (shared_buffers) по 8 килобайт каждая. Следует учитывать, что операционная система сама кеширует данные, поэтому нет необходимости отводить под кэш всю наличную оперативную память. Размер shared_buffers зависит от многих факторов, для начала можно принять следующие значения:
  • 8–16 Мб  – Обычный настольный компьютер с 512 Мб и небольшой базой данных
  • 80–160 Мб – Небольшой > сервер, предназначенный для обслуживания базы данных с объёмом оперативной памяти 1 Гб и базой данных около 10 Гб.
  • 400 Мб – Сервер с несколькими процессорами, с объёмом памяти в 8 Гб и базой данных занимающей свыше 100 Гб обслуживающий несколько сотен активных соединений одновременно .
work_mem
Под каждый запрос выделяется ограниченный объём памяти для работы. Этот объём используется для сортировки, объединения и других подобных операций. При превышении этого объёма сервер начинает использовать временные файлы на диске, что может существенно снизить производительность. Оценить необходимое значение для work_mem можно разделив объём доступной памяти (физическая память минус объём занятый под другие программы и под совместно используемые страницы shared_buffers) на максимальное число одновременно используемых активных соединений.
maintenance_work_mem
Эта память используется для выполнения операций по сбору статистики (ANALYZE), сборке мусора (VACUUM), создания индексов (CREATE INDEX) и добавления внешних ключей. Размер выделяемой под эти операции памяти должен быть сравним с физическим размером самого большого индекса на диске.
 effective_cache_size
PostgreSQL в своих планах опирается на кэширование файлов, осуществляемое операционной системой. Этот параметр соответствует максимальному размеру объекта, который может поместиться в системный кэш. Это значение используется только для оценки. effective_cache_size можно установить в 1/2 - 2/3 от объёма имеющейся в наличии оперативной памяти, если вся она отдана в распоряжение PostgreSQL.
Следующие параметры могут существенно увеличить производительность работы PostgreSQL. Однако их рекомендуется использовать только если имеются надежные ИБП и программное обеспечение, завершающее работу системы при низком заряде батарей.
fsync 
Данный параметр отвечает за сброс данных из кэша на диск при завершении транзакций. Если установить его значение fsync=off то данные не будут записываться на дисковые накопители сразу после завершения операций. Это может существенно повысить скорость операций insert и update, но есть риск повредить базу, если произойдет сбой (неожиданное отключение питания, сбой ОС, сбой дисковой подсистемы).
 
synchronous_commit
Включает/выключает синхронную запись в лог файлы после каждой транзакции. Это защищает от возможной потери данных. Но это накладывает ограничение на пропускную способность сервера.
Если вашей системе не критична потенциально низкая возможность потери небольшого количества изменений при крахе системы, но необходимо обеспечить в несколько раз большую производительность по количеству транзакций в секунду. В этом случае можно установить этот параметр в off (отключение синхронной записи).
 
© 2010–2024 ООО МАСТЕР | г.Магнитогорск, пр-кт Ленина 21/2 пом.4
тел.: +7 (3519) 22-43-55, +7 (3519) 42-15-01