Установка сервера 1с 8.3.16.1063 + postgres pro 12 на linux debian 9.5
Установка производилась на чистый свежеустановленный, без графической оболочки debian 9.5. Каталог var вынесен на отдельный рейд (в /var/lib/pgpro/ хранятся базы данных).
Команды выполняются под root.
Добавляем в переменную PATH путь /usr/sbin ,
чтобы не добавлять путь к командам ниже.
nano ~/.bashrcexport PATH="/usr/sbin:$PATH"source ~/.bashrc Добавляем нужные локали
(при установке debian была выбрана ru_RU.utf8 (по умолчанию), добавил еще en_US.utf8):
dpkg-reconfigure localesвывод команды
locale -aпосле выбора должен быть такой:
CC.UTF-8en_US.utf8POSIXru_RU.utf8 Установка POSTGRESPRO
Postgres можно взять с:
https://1c.postgres.ru/Выбираем операционную систему, версию постгреса и на почту прилетит инструкция как и откуда ставить.
Добавляем репозиторий и ставим postgres:
apt-get install -y wget gnupg2 || apt-get install -y gnupgwget -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.listapt-get update -yapt-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.conflisten_addresses = '*' Разрешаем соединения по IPv4:
nano /var/lib/pgpro/1c-12/data/pg_hba.conf# IPv4 local connections:host all all 127.0.0.1/32 md5host all all 0.0.0.0/0 md5 Запускаем postgres, задаем пароль пользователю СУБД postgres, останавливаем postgres для дальнейшей настройки:
service postgrespro-1c-12 startsu postgres/opt/pgpro/1c-12/bin/psql -U postgres -c "alter user postgres with password 'password';"exitservice postgrespro-1c-12 stop Ставим WINS (чтобы резолвилось имя сервера в ip-адрес):
apt-get install isc-dhcp-client winbind samba libpam-winbind libnss-winbindnano /etc/nsswitch.confhosts: 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-supportwget http://ftp.ru.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.7_all.debdpkg -i ttf-mscorefonts-installer_3.7_all.deb dpkg --add-architecture i386apt-get updateapt-get install libgd3:i386 libzip4:i386 libpng16-16:i386wget http://ftp.ru.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_amd64.debdpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.debwget http://ftp.ru.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_i386.debdpkg -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.1063dpkg -i *.debupdate-rc.d srv1cv83 defaults/etc/init.d/srv1cv83 start Заливаем базы стандартными средствами 1с.
Ставим утилиту monit, которая будет смотреть запущена ли 1с,
и если вылетит по каким либо причинам - ее запустит снова:
apt-get install monit cp /etc/monit/monitrc /etc/monit/monitrc.bakecho "" > /etc/monit/monitrcnano /etc/monit/monitrc set daemon 30 # проверяет 1с с интервалом в 30 сек.set logfile syslog facility log_daemonset idfile /var/.monit.idset statefile /var/.monit.stateset eventqueue basedir /var/monit slots 100check 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с:
aksusbd_2.4-1_i386.zip.001aksusbd_2.4-1_i386.zip.002aksusbd_2.4-1_i386.zip.003aksusbd_2.4-1_i386.zip.004aksusbd_2.4-1_i386.zip.005dpkg -i aksusbd_2.4-1_i386.debВставляем ключ, перезапускаем hasp:
/etc/init.d/aksusbd restartupdate-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 0mkdir /mnt/backupchmod 777 /mnt/backupmount -a(не монтировалась шара при загрузке если dhcp, статический ip -ок)
Включаем archive_mode в конфиге постгреса.
nano /var/lib/pgpro/1c-12/data/postgresql.confarchive_mode = onarchive_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 stopservice postgrespro-1c-12 restart/etc/init.d/srv1cv83 start/etc/init.d/monit startСоздаем скрипт ночного бэкапа:
mkdir /home/scriptstouch /home/scripts/back_1s.shchmod +x /home/scripts/back_1s.shnano /home/scripts/back_1s.sh #!/bin/bashBS="/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 $CPDirchown 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 $SLinkrm $SLink/*# Функция бэкапа баз в папку basebackups () {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_bd1backupsbaza=name_bd2backupsPGPASSWORD=password /opt/pgpro/1c-12/bin/psql -h $host_ip -U postgres -c "select pg_stop_backup();"exit И добавляем скрипт бэкапа в планировщик (будет запускаться в 22:00 каждый день):
crontab -u root -e0 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)
когда никто не работает (в ночь с субботы на воскресенье). Создаем скрипт:
touch /home/scripts/reindex.shchmod +x /home/scripts/reindex.shnano /home/scripts/reindex.sh #!/bin/bashh=127.0.0.1p=5432u=postgresxxx () {/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.logPGPASSWORD=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_bd1xxxdb=name_bd2xxx Добавляем в планировщик (будет запускаться в воскресенье в 01:00 )
crontab -u root -e0 1 * * 7 /home/scripts/reindex.sh Переносим временные файлы статистики постгреса в ОЗУ
для снижения нагрузки на диски.
Создаем виртуальный диск в оперативке на 100Мб:
mkdir /mnt/ram_drivechown postgres:tape /mnt/ram_drivechmod 700 /mnt/ram_driveid postgres (смотрим uid и gid пользователя postgres для внесения в /etc/fstab)
nano /etc/fstabtmpfs /mnt/ram_drive tmpfs noatime,nodiratime,nodev,nosuid,uid=999,gid=1001,mode=0700,size=100M 0 0mount -aМеняем расположение каталога временных файлов статистики в конфиге постгреса:
nano /var/lib/pgpro/1c-12/data/postgresql.confstats_temp_directory = '/mnt/ram_drive' Перезапуск для принятия изменений:
/etc/init.d/monit stop/etc/init.d/srv1cv83 stopservice postgrespro-1c-12 restart/etc/init.d/srv1cv83 start/etc/init.d/monit start Просмотр состояния raid-ов и дисков
На сервере установлен рейд-контроллер ADAPTEC ASR 8405E, для просмотра состояния raid-ов и дисков в debian добавляем репозиторий, ставим софт:
nano /etc/apt/sources.listdeb 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 updateapt-get install arcconf smartmontoolsСострояние raid:
arcconf GETCONFIG 1 | moreSMART дисков:
smartctl -a /dev/sg2 # sg2..sg6
Dec. 4, 2019