0

Установка сервера 1с 8.3.16.1063 + postgres pro 12 на linux

Установка производилась на чистый свежеустановленный, без графической оболочки debian 9.5. Каталог var вынесен на отдельный рейд (в /var/lib/pgpro/ хранятся базы данных).
Команды выполняются под root.
 Добавляем в переменную PATH путь /usr/sbin ,
чтобы не добавлять путь к командам ниже.
nano ~/.bashrc

export PATH="/usr/sbin:$PATH"

source ~/.bashrc

Добавляем нужные локали.

(при установке debian была выбрана ru_RU.utf8 (по умолчанию), добавил еще en_US.utf8):

dpkg-reconfigure locales

!вывод команды

locale -a

!после выбора должен быть такой:

C

C.UTF-8

en_US.utf8

POSIX

ru_RU.utf8

Установка POSTGRESPRO

Postgres можно взять с:

https://1c.postgres.ru/

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

Добавляем репозиторий и ставим postgres:

pt-get install -y wget gnupg2 || apt-get install -y gnupg

wget -O - http://repo.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO | apt-key add -

echo deb http://repo.postgrespro.ru//pg1c-archive/pg1c-12.1/debian/ stretch main > /etc/apt/sources.list.d/postgrespro-1c.list

apt-get update -y

$ wget http://ftp.us.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u4_amd64.deb
$ dpkg -i libicu57_57.1-6+deb9u4_amd64.deb

apt-get install -y postgrespro-1c-12-server postgrespro-1c-12-contrib

/opt/pgpro/1c-12/bin/pg-setup initdb

/opt/pgpro/1c-12/bin/pg-setup service enable

Разрешаем подключаться к постгресу с других компьютеров (например pgadmin-ом). *-всем или указывайте свою подсеть.

nano /var/lib/pgpro/1c-12/data/postgresql.conf

listen_addresses = '*'

Разрешаем соединения по IPv4:

nano /var/lib/pgpro/1c-12/data/pg_hba.conf

# IPv4 local connections:

host    all             all             127.0.0.1/32            md5

host    all             all             0.0.0.0/0               md5

Запускаем postgres, задаем пароль пользователю СУБД postgres, останавливаем postgres для дальнейшей настройки:

service postgrespro-1c-12 start

su postgres

/opt/pgpro/1c-12/bin/psql -U postgres -c "alter user postgres with password 'password';"

exit

service postgrespro-1c-12 stop

Ставим WINS (чтобы резолвилось имя сервера в ip-адрес):

apt-get install  isc-dhcp-client winbind samba  libpam-winbind libnss-winbind

nano /etc/nsswitch.conf

hosts:          files dns wins

Также добавлена A-запись сервера в DNS-сервере организации.

Ставим необходимые для работы 1c пакеты(шрифты microsoft, imagemagick, библиотека для работы с png, в том числе и для архитектуры i386, и прочее. Возможно что-то уже не нужно, ставилось при использовании предыдущих релизов 1с при возникновении различных проблем, но не мешает): 

apt-get install imagemagick libmagickwand-dev libgsf-1-dev t1utils  libgomp1 unixodbc unixodbc-dev libicu-dev cabextract libfontenc1 libmspack0 xfonts-encodings xfonts-utils libgd3 libzip4 libpng16-16 multiarch-support

wget http://ftp.ru.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.7_all.deb

dpkg -i ttf-mscorefonts-installer_3.7_all.deb 

dpkg --add-architecture i386

apt-get update

apt-get install libgd3:i386 libzip4:i386 libpng16-16:i386

wget http://ftp.ru.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_amd64.deb

dpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.deb

wget http://ftp.ru.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_i386.deb

dpkg -i libpng12-0_1.2.50-2+deb8u3_i386.deb

Простой тюнинг постгреса

чтоб работало (более тонко – это уже отдельная тема, если надо – то на ваш вкус):

https://pgtune.leopard.in.ua/#/

Вводим параметры вашего сервера, получаем параметры, которые нужно изменить в:

nano /var/lib/pgpro/1c-12/data/postgresql.conf

Запускаем постгрес:

service postgrespro-1c-12 start

Установка 1с

Закидываем релиз 1с на сервак каким либо образом, ставим, запускаем:

cd 8.3.16.1063

dpkg -i *.deb

update-rc.d srv1cv83 defaults

/etc/init.d/srv1cv83 start

Заливаем базы стандартными средствами 1с.

Ставим утилиту monit, которая будет смотреть запущена ли 1с

и если вылетит по каким либо причинам – ее запустит снова:

apt-get install monit
cp /etc/monit/monitrc /etc/monit/monitrc.bak

echo "" > /etc/monit/monitrc

nano /etc/monit/monitrc



set daemon  30           # проверяет 1с с интервалом в 30 сек.

set logfile syslog facility log_daemon

set idfile /var/.monit.id

set statefile /var/.monit.state

set eventqueue

     basedir /var/monit

     slots 100

check process ragent with pidfile /var/run/srv1cv83.pid

    start program = "/etc/init.d/srv1cv83 start"

    stop program  = "/etc/init.d/srv1cv83 stop"



/etc/init.d/monit restart

Ставим софт для работы серверного ключа 1с.

Взять можно с сайта http://www.safenet-inc.com/ , я поставил старый, проверенный с более ранними релизами 1с:

wget http://linux-bash.ru/docs/hasp/aksusbd_2.4-1_i386.deb

dpkg -i aksusbd_2.4-1_i386.deb

Вставляем ключ, перезапускаем hasp:

/etc/init.d/aksusbd restart

update-rc.d aksusbd defaults

Настройка ежедневных ночных бэкапов баз на NAS

В папке 1c на NAS предварительно созданы папки:

base - там будут ночные бэкапы баз;

chpt - сюда сохраняются WAL-файлы в течение дня, которые ночью архивируются и кидаются в папку chp

chp - папка с архивированными WAL-файлами

Монтируем сетевую шару для бэкапов:

nano /etc/fstab

//10.10.10.22/backup/10.10.10.17/1c /mnt/backup cifs username=backup,password=password,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

mkdir /mnt/backup

chmod 777 /mnt/backup

mount -a

(не монтировалась шара при загрузке если dhcp, статический ip -ок)

Включаем archive_mode в конфиге постгреса.

nano /var/lib/pgpro/1c-12/data/postgresql.conf

archive_mode = on

archive_command = 'test ! -f /mnt/backup/chpt/%f.gz && gzip -c %p > /mnt/backup/chpt/%f.gz'

(Архивирование WAL-файлов на NAS в предварительно созданную папку chpt)

Перезапуск 1с и postgres:

/etc/init.d/monit stop

/etc/init.d/srv1cv83 stop

service postgrespro-1c-12 restart

/etc/init.d/srv1cv83 start

/etc/init.d/monit start

Создаем скрипт ночного бэкапа:

mkdir /home/scripts

touch /home/scripts/back_1s.sh

chmod +x /home/scripts/back_1s.sh

nano /home/scripts/back_1s.sh
#!/bin/bash

BS="/mnt/backup"

DT="$(date +%Y-%m-%d)"

CPDir="$BS/chp/$DT"

BackFile="$BS/base/$DT.backup"

SLink="$BS/chpt"

host_ip="127.0.0.1"

# Создаем новый каталог для заархивированных WAL-файлов

mkdir $CPDir

chown postgres $CPDir

#PGPASSWORD= пароль пользователя postgres, заданный выше

PGPASSWORD=password /opt/pgpro/1c-12/bin/psql -h 127.0.0.1 -U postgres -c "select pg_start_backup('$DT');"

# архивируем WAL-файлы в каталог chp/дата/

tar -cvf $CPDir/chp.tar.gz $SLink

rm $SLink/*

# Функция бэкапа баз в папку base

backups () {

BackFile="$BS/base/$DT$baza.backup"

PGPASSWORD=password /opt/pgpro/1c-12/bin/pg_dump -U postgres -h $host_ip -C -c -b -F c -f $BackFile $baza

}

baza=name_bd1

backups

baza=name_bd2

backups

PGPASSWORD=password /opt/pgpro/1c-12/bin/psql -h $host_ip -U postgres -c "select pg_stop_backup();"

exit



И добавляем скрипт бэкапа в планировщик (будет запускаться в 22:00 каждый день):

crontab -u root -e

0 22 * * * /home/scripts/back_1s.sh

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

su postgres

/opt/pgpro/1c-10/bin/createdb -T template0 name_bd1

/opt/pgpro/1c-10/bin/pg_restore -d name_bd1 /home/it/2019-12-04name_bd1.backup

Настройка обслуживания баз (vacuum, reindex)

когда никто не работает (в ночь с субботы на воскресенье). Создаем скрипт:

ouch /home/scripts/reindex.sh

chmod +x /home/scripts/reindex.sh

nano /home/scripts/reindex.sh



#!/bin/bash

h=127.0.0.1

p=5432

u=postgres

xxx () {

/bin/echo $db >> /var/log/reindex.log

/bin/date >> /var/log/reindex.log

/bin/echo "begin vacuum full analyze" >> /var/log/reindex.log

#PGPASSWORD= пароль пользователя postgres, заданный выше

PGPASSWORD=password /opt/pgpro/1c-12/bin/psql --dbname $db --host $h --port $p --username $u -w --command "vacuum full analyze;" >> /var/log/reindex.log

/bin/date >> /var/log/reindex.log

/bin/echo "end vacuum full analyze" >> /var/log/reindex.log

/bin/echo "begin reindex" >> /var/log/reindex.log

PGPASSWORD=password /opt/pgpro/1c-12/bin/psql --dbname $db --host $h --port $p --username $u -w --command "reindex DATABASE \"$db\";" >> /var/log/reindex.log

/bin/date >> /var/log/reindex.log

/bin/echo "end reindex" >> /var/log/reindex.log

}

db=name_bd1

xxx

db=name_bd2

xxx
Добавляем в планировщик (будет запускаться в воскресенье в 01:00 )

crontab -u root -e

0 1 * * 7 /home/scripts/reindex.sh

Переносим временные файлы статистики постгреса в ОЗУ

для снижения нагрузки на диски.

Создаем виртуальный диск в оперативке на 100Мб:

mkdir /mnt/ram_drive

chown  postgres:tape /mnt/ram_drive

chmod 700 /mnt/ram_drive

id postgres (смотрим uid и gid пользователя postgres для внесения в /etc/fstab)

nano /etc/fstab

tmpfs /mnt/ram_drive tmpfs noatime,nodiratime,nodev,nosuid,uid=999,gid=1001,mode=0700,size=100M 0 0

mount -a

Меняем расположение каталога временных файлов статистики в конфиге постгреса:

nano /var/lib/pgpro/1c-12/data/postgresql.conf

stats_temp_directory = '/mnt/ram_drive'



Перезапуск для принятия изменений:

/etc/init.d/monit stop

/etc/init.d/srv1cv83 stop

service postgrespro-1c-12 restart

/etc/init.d/srv1cv83 start

/etc/init.d/monit start

Просмотр состояния raid-ов и дисков

На сервере установлен рейд-контроллер ADAPTEC ASR 8405E, для просмотра состояния raid-ов и дисков в debian добавляем репозиторий, ставим софт:

nano /etc/apt/sources.list

deb http://hwraid.le-vert.net/debian stretch main



wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add -

apt-get update

apt-get install arcconf smartmontools

Сострояние raid:

arcconf GETCONFIG 1 | more

SMART дисков:

smartctl -a /dev/sg2 # sg2..sg6

Исправление кодировки базы данных PostgreSQL с LATIN1 на UTF8

Проверка кодировки

Для проверки кодировки, применяемой на сервере и в базе данных, необходимо выполнить следующие команды.

Заходим в режим работы с PoctgreSQL:

ostgres=# SHOW SERVER_ENCODING;
 server_encoding 
-----------------
 LATIN1
(1 row)

postgres=# \l
                             List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | LATIN1   | en_US   | en_US | 
 template0 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +
           |          |          |         |       | postgres=CTc/postgres
(3 rows)

Исправление кодировки для template1

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

postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
postgres=# DROP DATABASE Template1;
postgres=# CREATE DATABASE template1 WITH owner=postgres ENCODING = 'UTF-8' lc_collate = 'ru_RU.utf8' lc_ctype = 'ru_RU.utf8' template template0;
postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

В данном случае сначала мы указываем, что template1 не является шаблоном для баз данных. Удаляем данный шаблон. Потом создаём новый шаблон с кодировкой UTF8 и устанавливаем данную базу данных в качестве шаблона для новых баз данных. Дальше новые базы данных будут создаваться с кодировкой UTF8.

И проверим, в какой кодировке у нас находиться шаблон template1, сам сервер, кстати, будет по-прежнему в кодировке LATIN1

postgres=# \l
                                  Список баз данных
    Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа     
-----------+----------+-----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8      | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8      | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |           |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | ru_RU.utf8  | ru_RU.utf8  | 
(3 строки)

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

2

Завершение сеансов 1С

Есть несколько вариантов решения вопроса. Бухгалтера должны не закрывать программу, а нажимать Файл – Выход, так происходит правильное закрытие сеанса на сервере.
3

1С – Сервер лицензирования.

Для чего нужен отдельный сервер лицензирования 1С? Задача данной статьи: Установка сервера лицензирования 1С на отдельном виртуальном сервере (или выделенном) и распределение серверных и клиентских
Previous Story

Systemd Essentials:: работа со службами, модулями и журналом

Next Story

100500+ команд Linux.

Latest from Blog

Игра системный администратор

docker run -p 8080:8080 -p 3390:3389 –name play-adobe-flash-after-eol jchprj/play-adobe-flash-after-eolзайти localhost:8080, и открыть эту страницу, или https://serveradmin.ru/files/sysadmin.swf

Что делать, когда на сервере кончаются файловые дескрипторы (inode)

Нередки случаи, когда причиной проблем на сервере становится переполнение файловых дескрипторов (inode). Симптомы точно такие же, как при переполнившемся диске, только вот диск при этом может оказаться свободным. Количество inode каждой файловой системы определяется при разворачивании ОС.

CI/CD для начинающих: деплой React-приложения

Следующий шаг после разработки веб-приложения — размещение его на сервере. Независимо от сложности проекта или используемой инфраструктуры, общий процесс остается одинаковым: нужно «упаковать» код в CI/CD-конвейер и отправить на сервер. В тексте рассмотрим,

Настройка iptables в Linux от Selectel

Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables. Эта инструкция — часть курса «Введение в сетевую безопасность». Смотреть весь курс Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables

nginx и apache на одном сервере

В этом руководстве мы рассмотрим процедуру установки и настройки работы двух web-серверов с целью использования преимуществ каждого из них, где Nginx – как frontend и Apache – как backend. Установка и настройка
Go toTop

Don't Miss

1c-web-access-ssl

Защищаем веб-публикацию 1С:Предприятие при помощи SSL и аутентификации по паролю

Получение бесплатного сертификата Let’s Encrypt На сегодняшний день получение бесплатного

базы 1С на веб-сервере Windows и Linux

Публикация базы 1С на веб-сервере используется для работы через браузер