Обратный звонок RedConnect
ИТ-поддержка

Установка сервера 1С:Предприятие в связке с CentOS 7 и PostgreSQL

1

Устанавливаем CentOS 7 редакции minimal.

Образ можно взять с официального сайта: www.centos.org/download/

Так как 1С работает только с русской локализацией, то необходимо сразу устанавливать систему с учётом этого. В дальнейшем все действия производятся от имени суперпользователя.

Проверка текущей локализации системы:

Для проверки доступности необходимой локали используем команду:

Для смены локали:

2

Далее настраиваем статический IP-адрес, маску подсети, шлюз по умолчанию, DNS.

Предварительно делаем бекап стандартного файла конфигурации сетевого интерфейса:

Далее конфигурируем интерфейс (адреса выставляем свои):

3

В файле /etc/hostname изменим имя хоста на более удобное: 1с-srv.

Сопоставим IP с именем хоста для удобства обращения к серверу. В файле /etc/hosts добавляем запись:

Так же необходимо это соответствие будет прописать на все клиентах, которые будут работать с сервером 1С. В операционной системе Windows это прописывается в файле: C:\Windows\System32\drivers\etc\hosts

172.17.18.236   1c-srv

Также редактируем файл /etc/sysconfig/network, прописываем имя хоста и отключим адресацию IPv6:

Отключаем использование IPv6 на уровне ядра. В файле /etc/sysctl.conf добавляем строчки:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Сохраняем и применяем настройки:

sysctl -p

Отключаем SELinux в файле /etc/sysconfig/selinux

Выполняем команду

setenforce 0

После всех манипуляций обязательно рестарт сети: systemctl restart network и проверяем работу введенной конфигурации.

4

Следующим шагом обновляем систему и устанавливаем пакеты программ и библиотек:

yum -y update
yum -y install epel-release
yum -y install nano mc wget net-tools rpm-build gcc make glibc-devel bison flex python-devel tcl-devel readline-devel zlib-devel openssl-devel krb5-devel e2fsprogs-devel gettext pam-devel openldap-devel icu libicu libicu-devel
5

Скачиваем необходимые нам пакеты с 1с сервером и PostgreSQL и копируем на сервер:

6

Переходим в папку с 1с:

     cd ./tmp/1c

Распаковываем наш архив:

tar -xvf rpm64_8_3_13_1865.tar.gz

Устанавливаем сервер:

yum localinstall ./*.rpm

Прописываем сервер в автозагрузку:

chkconfig srv1cv83 on

Запускаем сервер:

service srv1cv83 start

Проверяем запуск сервера:

Назначим владельцем директории /opt/1C автоматически созданного пользователя usr1cv8 и группу пользователей grp1cv8:

chown -R usr1cv8:grp1cv8 /opt/1C

Задаём пароль для usr1cv8:

passwd usr1cv8
7

Переходим в папку с пакетами PostgreSQL:

cd ./Postgresql

Распаковываем наш архивы:

tar -xvf postgresql_10.5_11.1C_x86_64_rpm.tar.bz2
tar -xvf postgresql_10.5_11.1C_x86_64_addon_rpm.tar.bz2

Устанавливаем Postgresql:

cd ./postgresql-10.5-11.1C_x86_64_rpm/
yum localinstall ./*.rpm

Устанавливаем доп. модули:

cd ./postgresql-10.5-11.1C_x86_64_addon_rpm/
yum localinstall ./*.rpm
8

Переключаемся на пользователя postgres (создаётся автоматически при сборке из исходников):

su - postgres

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

/usr/pgsql-10/bin/initdb -D /var/lib/pgsql/10/data --locale=ru_RU.UTF-8

Если все прошло успешно можно запускать сервер базы данных. Если нужно создать новую системную базу, то необходимо удалить папку /var/lib/pgsql/10/data.

Запускаем сервер:

/usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/10/data -l logfile start

Заходим в базу и задаём пароль для пользователя postgres:

Проверяем локализацию и работоспособность сервера Postgres:

Обязательно редактируем файл /var/lib/pgsql/10/data/pg_hba.conf задаем в нем доступ к базам по паролю, а также передачу данных аутентификации в формате md5 хеш суммы.

Перезагружаем сервер.

9

После перезагрузки запускаем вручную Postgre и добавляем в автозагрузку:

service postgresql-10 start
chkconfig postgresql-10 on

Проверяем результат:

service postgresql-10 status
netstat -tulpn | grep 5432 (по умолчанию postgres использует порт 5432)
10

Следующим шагом задаем конфигурации сервера Postgres.

Здесь нужно ориентироваться на конфигурацию 1с, количество пользователей 1с, объёмы баз, количество операций с базами. Поэтому конфигурирование большей части параметров производится, на запущенном сервере, путём подбора оптимальных показателей. Настройку выполняем путем редактирования файла /var/lib/pgsql/10/data/postgresql.conf

Частично можно ознакомится с параметрами здесь infostart.ru/public/554213/, а также на сайте postgrespro.ru/docs/.

Предварительно делаем резервную копию postgresql.conf

cp /var/lib/pgsql/10/data/postgresql.conf /var/lib/pgsql/10/data/postgresql.conf.bak

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

11

Теперь необходимо добавить шрифты и кодировки.

yum -y install xorg-x11-fonts-Type1 xorg-x11-fonts-truetype
yum install -y curl cabextract xorg-x11-font-utils fontconfig
rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

Устанавливаем библиотеки для иконок и картинок:

yum install ImageMagick.i686 ImageMagick libgsf.i686 unixODBC.i686 glib2.i686

При подключении 1с к серверу может выдать ошибку на отсутствие библиотеки libWand.so, поэтому создадим символическую ссылку на файл установленной библиотеки:

12

Настроим файрволл на нашем сервере.

systemctl stop firewalld
systemctl disable firewall
yum -y install iptables-services
systemctl enable firewalld
systemctl start firewalld

Заходим в настройки iptables и приводим файл к следующему виду:

vi /etc/sysconfig/iptables
13

Переходим на машину с Windows. Устанавливаем клиент 1С и утилиты для администрирования. Запускаем администрирование 1с.

Если будет ошибка, о невозможности загрузить оснастку, используем bat файл, от имени администратора, Регистрация утилиты администрирования. Найти его можно в Пуск - 1С:предприятие:

Теперь можно добавить наш сервер.

В появившемся окне прописываем имя нашего сервера.

Если все настроено правильно, то увидим локальный кластер с нашим сервером. Создаём информационную базу.

В случае ошибки, при создании базы, идем на сервер и заходим под пользователем postgres. Далее удаляем базу: dropdb postgres.

14

Следующим шагом переходим в 1С и добавляем нашу базу:

Заходим в конфигуратор и загружаем базу Gilev для теста:

15

Следующим шагом настроим Web-публикацию:

yum -y install httpd

Редактируем /etc/httpd/conf/httpd.conf где задаем значение директиве ServerName:

ServerName=1c-srv

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

mkdir /var/www/html/test

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

/opt/1C/v8.3/x86_64/webinst -apache24 -wsdir test -dir '/var/www/html/test' -connStr 'Srvr="1c-srv";Ref="test";' -confPath /etc/httpd/conf/httpd.conf

Выдаем права на директорию:

chown -R apache:apache /var/www/html/test

Запускаем Apache и добавляем в автозагрузку:

systemctl enable httpd
systemctl start httpd

Теперь проверяем по адресу 1c-srv/test

16

Заключительным этапом настроим резервное копирование базы данных и обслуживание.

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

yum -y install pigz

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

Создадим папку для монтирования диска для бекапов и монтируем его:

mkdir /mnt/buckup 
mount /dev/sdb1 /mnt/buckup/

Для автоматического монтирования прописываем диск в файл fstab:

vi /etc/fstab
/dev/sdb1 /mnt/buckup ext4 defaults 0 0

Создаем директории, в которых будут находиться наши бекапы (Day, Week, Month…) и назначим владельцем postgres:

mkdir /mnt/buckup/Day /mnt/buckup/Week /mnt/buckup/Month
chown -R postgres:postgres /mnt/buckup

Создаем папки для записи лог файлов:

mkdir /var/log/postgresql/ /var/log/postgresql/Day /var/log/postgresql/Week /var/log/postgresql/Month
chown -R postgres:postgres /var/log/postgresql/

Далее создаем скрипт buckup.sh для резервного копирования и обслуживания базы:

#!/bin/sh
#Установим период, по истечению которого удалятся старые бекапы
days=$2
#Установим тип резервного копирования
type=$1
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
# Записываем информацию в лог с секундами
echo “----------------------------$DATA---------------------------------------” >> /var/log/postgresql/$type/backup.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup postgres" >> /var/log/postgresql/$type/backup.log
# Бэкапим базу данных postgres и сразу сжимаем
/usr/bin/pg_dump -U postgres postgres | pigz > /mnt/buckup/$type/$DATA-postgres.sql.gz
echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup postgres" >> /var/log/postgresql/$type/backup.log
echo “------------------------------------------------------------------------” >> /var/log/postgresql/$type/backup.log
# Удаляем в папке с бэкапами старые архивы
/usr/bin/find /mnt/buckup/$type -type f -mtime +$days -exec rm -rf {} \;
sleep 2
#Очистка и анализ базы
echo “----------------------------$DATA---------------------------------------” >> /var/log/postgresql/$type/service.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start vacuumdb postgres" >> /var/log/postgresql/$type/service.log
vacuumdb --verbose --analyze --full --quiet --dbname=postgres
echo "`date +"%Y-%m-%d_%H-%M-%S"` End vacuumdb postgres" >> /var/log/postgresql/$type/service.log
echo “------------------------------------------------------------------------” >> /var/log/postgresql/$type/service.log
#Перестроение индекса
sleep 2
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start reindex postgres" >> /var/log/postgresql/$type/service.log
/usr/bin/reindexdb --username postgres --dbname postgres
echo "`date +"%Y-%m-%d_%H-%M-%S"` End reindex postgres" >> /var/log/postgresql/$type/service.log
echo “------------------------------------------------------------------------” >> /var/log/postgresql/$type/service.log

Сохраняем скрипт и ложем его в папку /var/log/postgresql/buckup.sh

Добавляем привилегии на запуск:

chmod +x /var/log/postgresql/buckup.sh

Заходим от имени пользователя postgres и добавляем скрип в /etc/crontab

su – postgres
crontab -e