2021-04-08
1220

Установка и настройка PosrgreSQL для работы с 1С (CentOS, Ubuntu)

Установка СУБД PostgreSQL 9.6 для работы с 1С на CentOS7

СУБД может быть установлена на систему вместе с платформой 1с, так и на отдельной системе.

Для установки нужно скачать с сайта 1с rpm пакеты PostgreSQL, перенести пакеты в каталог системы, установить пакеты командой
yum install *.rpm
Инициализировать новое хранилище данных (кластер баз данных). Кластер представляет собой совокупность баз данных управляемых одним экземпляром севера. initdb должен быть запущен от имени будущего владельца сервера (как указано выше от имени postgres)
sudo su - postgres
/usr/pgsql-9.6/bin/postgresql96-setup initdb
Запустить PostgreSQL, добавить в автозагрузку и проверить статус
systemctl start postgresql-9.6
systemctl enable postgresql-9.6
systemctl status postgresql-9.6

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

Войти в утилиту управления psql, можно командой
sudo -u postgres psql
Нужно задать пароль пользователя postgres, его нужно будет указывать при добавлении базы 1с
ALTER USER postgres WITH PASSWORD '1';
Или
\password
Выйти из psql можно командой
\q
Чтобы открыть доступ к базам из сети нужно сделать запись в файле:
/var/lib/pgsql/9.6/data/pg_hba.conf
в разделе IPv4 local connections указать адрес подсети компьютерам которой будет дан доступ к базам
host all all 192.168.10.0/24 md5
local all all trust
Для того, чтобы можно было подключиться к серверу, в файле
/var/lib/pgsql/9.6/data/postgresql.conf
нужно раскомментировать строки
listen_addresses = '*'
port=5432
Если 1С Сервер и PostgreSQL установлены на одной машине можно записать 'localhost' вместо '*' или, если на разных машинах - указать ip той машины на которой установлен сервер 1С.
Перезапустить службу PostgreSQL
systemctl restart postgresql-9.6
Открыть порт
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
Основные настройки PostgreSQL хранятся в файле:
/var/lib/pgsql/9.6/data/postgresql.conf
effective_cache_size  #максимальный размер объект для записи в системный кэш(2/3 RAM)
shared_buffers        #объем RAM который будет использован для активных операций (1/4 RAM)
temp_buffres          #размер буфера под временные таблицы (1/20 RAM)
work_mem              #память для сортировки и кэширования таблиц (1/20 RAM)
maintenance           #память для сбора статистики, очистки мусора (1/20 RAM)
checkpoint_completion_segment=0,9
default_static_tenger=300   #количество записей просматриваемых при сборе статистики
constant_exclution=partition 

Установка СУБД PostgreSQL 9.6 для работы с 1С на UbuntuServer

В первую очередь нужно установить локали. Сервер 1С работает с локализацией ru_RU.UTF8, соответственно PostgreSQL нужен с ней же. PostgreSQL создает кластер с локализацией по умолчанию ОС, если будет указана отличная локализация, то сервера 1С и PostgreSQL не увидят друг друга.
locale-gen en_US.UTF-8
locale-gen ru_RU.UTF-8
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locales
После ввода последней команды появится окно в котором можно промотать список вниз и убедиться что локаль ru_RU.UTF-8 отмечена, затем выбрать Ok и нажать на него. Затем откроется окно для выбора локали по умолчанию, нужно выбрать ru_RU.UTF-8 и нажать Ok.

Скачать с сайта deb пакеты 1С перенести пакеты в каталог системы

Сначала нужно установить пакет libpq5, он находится в архиве вместе с PostgreSQL, если при его установке возникнет ошибка, нужно доустановить библиотеку libicu55, которую можно найти по ссылке |archive.ubuntu.com|, скачать и перенести в систему или скачать сразу командой
wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.5_amd64.deb
И установить командой
sudo dpkg -i libicu55_55.1-7ubuntu0.5_amd64.deb
Еще может понадобиться библиотека libssl, которую можно найти по ссылке |security.ubuntu.com|, скачать и перенести в систему или скачать сразу командой
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb
И установить командой
sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.5_amd64.deb
После этого можно будет установить libpq5
sudo dpkg -i libpq5_9.6.7-1.1C_amd64.deb
Теперь нужно установить postgresql-common
sudo apt-get install postgresql-common
Установим оставшиеся пакеты из архива с сайта 1С
dpkg -i postgresql-client-9.6_9.6.7-1.1C_amd64.deb
dpkg -i postgresql-9.6_9.6.7-1.1C_amd64.deb
Проверить версии пакетов
dpkg --list | grep 1C
Необходимо зафиксировать установленные вручную пакеты, иначе при же обновлении они будут заменены пакетами из репозитория
sudo apt-mark hold libpq5 postgresql-9.6 postgresql-client-9.6
Теперь нужно запустить кластер postgreSQL
sudo pg_ctlcluster 9.6 main start
И запустить сам postgreSQL
sudo systemctl start postgresql
Если появляется ошибка связанная с online_analyze можно в файле
/etc/postgresql/9.6/main/postgresql.conf
закомментировать, то есть поставить в начале строки знак #, строку
shared_preload_libraries = 'online_analyze, plantuner'
Проверить работает ли кластер postgreSQL можно командой
pg_lsclusters
Если работает, вывод будет зеленым цветом и в столбце "cluster" будет записано "main" иначе вывод будет красным и в столбце "cluster" будет записано "down"
Лог можно посмотреть в файле
/var/log/postgresql/postgresql-9.6-main.log
/var/log/postgresql/postgresql-9.6-main.log.1
При установке автоматически создается кластер main, необходимо произвести настройки
конфиги находятся в каталоге
/etc/postgresql/9.6/main
Чтобы открыть доступ к базам из сети нужно сделать запись в файле:
/etc/postgresql/9.6/main/pg_hba.conf
в разделе IPv4 local connections указать адрес подсети компьютерам которой будет дан доступ к базам
host all all 192.168.10.0/24 md5
local all all trust
В файле:
/etc/postgresql/9.6/main/postgresql.conf
Для того, чтобы можно было подключиться к серверу, нужно раскомментировать строки
listen_addresses = '*'
port=5432
Если 1С Сервер и PostgreSQL установлены на одной машине можно записать 'localhost' вместо '*' или, если на разных машинах - указать ip той машины на которой установлен сервер 1С.
Перезапустить сервис PostgreSQL
systemctl restart postgresql-9.6

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

Войти в утилиту управления psql, можно командой
sudo -u postgres psql
Нужно задать пароль пользователя postgres, его нужно будет указывать при добавлении базы 1с
ALTER USER postgres WITH PASSWORD '1';
Или
\password
Выйти из psql можно командой
\q

Команды управления PostgreSQL

Следующие команды вводятся от имени пользователя postgres, под которым можно зайти командой
sudo su - postgres
Или нужно перед каждой командой указывать от имени какого пользователя она должна быть выполнена
sudo -u postgres <command>
Вывод номера установленной версии PostgreSQL
psql -V
psql --version
Создать базу из шаблона template0
createdb -T template0 <DBNAME>
Удалить базу DBNAME
dropdb <DBNAME>
Вывести список баз, закрывается кнопкой q
psql -l
Сделать бэкап базы DBNAME
pg_dump -Fc <DBNAME> > </dir/DBNAME>.dump
Восстановить базу DBNAME из бэкапа
pg_restore -d <DBNAME> </dir/DBNAME>.dump
psql - утилита управления PostgreSQL
Следующие команды вводятся в терминале psql, в который можно зайти под пользователем postgres командой
psql
Или от другого пользователя командой
sudo -u postgres psql

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

Вывести список баз
\l
Выйти из psql
\q
Посмотреть информацию о соединении
\conninfo
Удалить базу
DROP DATABASE <DBNAME>;
Вывести каталог хранения баз
SHOW data_directory;
Вывести размер бд
SELECT pg_size_pretty( pg_database_size( '<DBNAME>' ) );

Полное удаление PostgreSQL

На CentOS

Первый вариант - откатить установку, для этого проверить историю установки командой
sudo yum history
Найти нужную установку командой
sudo yum history info <num>
И откатить командой
sudo yum history undo <num>
Второй вариант
sudo yum remove postgresql-9.6
sudo rm -r /var/lib/pgsql
sudo rm -r /usr/pgsql\*
sudo userdel -r postgres
sudo groupdel postgres

На UbuntuServer

sudo apt-get --purge remove pgadmin3
sudo apt-get autoremove
sudo apt-get --purge remove postgresql\*
sudo rm -r /etc/postgresql/
sudo rm -r /etc/postgresql-common/
sudo rm -r /var/lib/postgresql/
sudo userdel -r postgres
sudo groupdel postgres