• DevOps
  • Защита информации
  • ИТ-поддержка
  • Установка сервера 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

    Настроим firewall на нашем сервере.

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

    Заходим в настройки 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
    
    Не нашли ответа на свой вопрос?
    Содержание