В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu 18.04.2 на физическую машину.
Нам потребуется (все 64 бит):
1. ubuntu 18.04.2
Устанавливаем ubuntu 18.04.2 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (16 GB) монтируем диск для backup /backup
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера u1804, позже мы его сменим скриптом, как и ip адрес.
После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y
$ date
Вт авг 6 15:38:04 UTC 2019
$ timedatectl list-timezones
....
Europe/Moscow
....
$ sudo timedatectl set-timezone Europe/Moscow
$ date
Вт авг 6 18:39:55 MSK 2019
Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.
$ lsusb
2. Настройка сети
Тестовый сервер будет использовать dhcp
Смотрим:
$ cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
.....
$ sudo nano /etc/hosts
Меняем:
127.0.0.1 localhost.localdomain localhost u1804
Сохранить.
$ cat /proc/cpuinfo | grep MHz
cpu MHz : 800.111
cpu MHz : 800.028
cpu MHz : 800.377
cpu MHz : 800.190
3. Тюнинг остального:
Сделаем еще один скрипт для настройки остального:
$ nano tuning.sh
#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
#sudo fallocate -l 1G /swapfile
#sudo chmod 600 /swapfile
#sudo mkswap /swapfile
#sudo swapon /swapfile
#sudo cp /etc/fstab /etc/fstab.bak
#sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
#sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
#sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now
Сохраним файл tuning.sh
------------------------------------------
Сделаем исполняем
$ chmod +x tuning.sh
$ sudo ./tuning.sh
или
$ sudo sh tuning.sh
------------------------------------------
Перезагрузимся
$ sudo reboot
После перезагрузки по сети можно подключиться MobaXterm
$ cat /proc/cpuinfo | grep MHz
cat /proc/cpuinfo | grep MHz
cpu MHz : 4000.489
cpu MHz : 4000.162
cpu MHz : 4000.980
cpu MHz : 4002.072
$ free
total used free shared buff/cache available
Память: 16284616 95512 15944100 1312 245004 15870784
Подкачка: 1048572 0 1048572
4. Настройка ssh
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
user@test2:~/.ssh$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): user@test2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in user@test2.
Your public key has been saved in user@test2.pub.
$ lsuser@test2 user@test2.pub
Скачать и использовать для входа /home/user/.ssh/user@test2
$ cp ~/.ssh/user@test2.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@test2.pub
$ rm ~/.ssh/user@test2
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ sudo nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
5. Настройка Ubuntu для работы с ИБП от APC
APCUPSd: Поля о состоянии устройства
APCUPSD User Manual
Ureadahead сообщает об ошибках относительного пути в выходных данных journalctl
$ lsusb
....
Bus 001 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
....
$ sudo apt-get install apcupsd -y
$ sudo nano /etc/apcupsd/apcupsd.conf
1.
#UPSCABLE smart
UPSCABLE usb
#UPSCABLE smart
UPSCABLE usb
......
2.
#UPSTYPE apcsmart
#UPSTYPE apcsmart
UPSTYPE usb
3. закомментировать DEVICE /dev/ttyS0
#DEVICE /dev/ttyS0
3. закомментировать DEVICE /dev/ttyS0
#DEVICE /dev/ttyS0
# Для проверки можно 30 (потом убрать )
TIMEOUT - параметр актуален для старых ИБП, неспособных определять свой уровень заряда. Задаёт время (в секундах) между сбоем электропитания и отключением компьютера. Для современного ИБП параметр стоит оставить на 0, но выставление иного значения может быть удобно для тестирования работы ИБП. Например, если выставить 30 и выдернуть шнур из розетки, уже через полминуты apcupsd продемонстрирует своё умение выключать компьютер
Сохранить.
Настроим /etc/default/apcupsd
Заменяем ISCONFIGURED=no на ISCONFIGURED=yes , сохраняем, закрываем. Отныне apcupsd будет знать, что мы не забыли его настроить.
Т.е 0 будет ждать разрядки батареи, 30 - будет ждать 30 с.
$ sudo nano /etc/default/apcupsd
#ISCONFIGURED=no
ISCONFIGURED=yes
Сохранить.
Теперь достаточно запустить apcupsd:
$ sudo /etc/init.d/apcupsd start
Starting UPS power management: apcupsd.
$ sudo /etc/init.d/apcupsd status
user@s1030:~$ sudo /etc/init.d/apcupsd status
APC : 001,017,0423
DATE : 2018-08-02 18:09:14 +0300
HOSTNAME : s1030
VERSION : 3.14.12 (29 March 2014) debian
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2018-08-02 18:08:49 +0300
STATUS : COMMLOST
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 30 Seconds
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000100
END APC : 2018-08-02 18:09:14 +0300
Важно!
$ sudo reboot
Смотреть статус должен быть STATUS : ONLINE
Если STATUS : COMMLOST, нет связи с UPS !!!
$ sudo /etc/init.d/apcupsd status
APC : 001,034,0830
DATE : 2019-07-18 19:35:41 +0300
HOSTNAME : test2
VERSION : 3.14.12 (29 March 2014) debian
UPSNAME : test2
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2019-07-18 19:35:39 +0300
MODEL : Back-UPS ES 700G
STATUS : ONLINE
LINEV : 224.0 Volts
LOADPCT : 12.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 26.1 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 30 Seconds
SENSE : Medium
LOTRANS : 180.0 Volts
HITRANS : 266.0 Volts
ALARMDEL : 30 Seconds
BATTV : 13.5 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
SERIALNO : 5B1826T43258
BATTDATE : 2018-06-27
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
FIRMWARE : 871.O4 .I USB FW:O4
END APC : 2019-07-18 19:36:06 +0300
BCHARGE : 50.0 Percent - Зарядка батарей 50%
TIMELEFT : 26.1 Minutes - Оставшееся время работы от батареи по оценке ИБП.
Вырубить из розетки, через 30 с сервер должен отключиться.
======================================================
Установка СУБД PostgreSQL версия 10.8_13.1C
После перезагрузки по сети можно подключиться MobaXtermк нашей виртуальной машине (по ip или или имени ) загрузить файлы установки:
$ mkdir /home/user/test
В папку /test положить файл:
deb64_8_3_15_1565.tar.gz
postgresql_10.8_13.1C_amd64_deb.tar.bz2
Файл postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2 не устанавливаем - проблемы с зависимостями
$ wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
$ sudo dpkg -i libicu55_55.1-7_amd64.deb
$ dpkg -l | grep libicu55 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
# libicu55 помечен как зафиксированный.
$ sudo apt-get install postgresql-common -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.8_13.1C_amd64_deb.tar.bz2
$ ls
$ cd postgresql-10.8-13.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.5-24.1C_amd64.deb postgresql-10_10.5-24.1C_amd64.deb postgresql-client-10_10.5-24.1C_amd64.deb
$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.8-13.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
$ sudo pg_dropcluster --stop 10 main
$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main -- --data-checksums
$ sudo pg_ctlcluster 10 main start
$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp LISTEN 0 128 *:5432 *:*
tcp LISTEN 0 128 :::5432 :::*
$ ps aux | grep postgres | grep -- -D
postgres 4914 0.0 0.1 320972 28864 ? S 08:37 0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
-------------------------------------------------------------------------------------------------------
Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB
$ sudo nano /etc/postgresql/10/main/postgresql.confДобавить в конец:
# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd
max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'
Сохранить.
$ sudo systemctl restart postgresql.service
-------------------------------------------------------------------------------------------------------
Установка pg_probackup
pg_probackup описание $ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list"
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -"
$ sudo apt-get update
$ sudo apt-get install pg-probackup-10
$ dpkg -l | grep pg-probackup-10 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-10 помечен как зафиксированный.
Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD
Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-10 init -B /backup
$ sudo mkdir /backup/copy
$ sudo mkdir /backup/log
$ sudo mkdir /backup/pg_dump
$ sudo chown -R postgres:postgres /backup
#$ sudo chmod -R 777 /backup/pg_probackup
Определение копируемого экземпляра
$ sudo -u postgres pg_probackup-10 add-instance -B /backup -D /var/lib/postgresql/10/main --instance main
$ sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить:
max_wal_senders = 10
wal_level = replica
unix_socket_directories='/var/run/postgresql'
# Для настройки архивного резервного копирования разкомментировать:
archive_mode = on
#archive_command ='test ! -f /wal/%f && cp %p /wal/%f'
archive_command = '/usr/bin/pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'
Сохранить.
$ sudo systemctl restart postgresql.service
Настройка политики сохранения 5 резервных копий
$ sudo -u postgres nano /backup/backups/main/pg_probackup.confДобавить:
retention-redundancy=5
Сохранить
Создание полной автономной резервной копии:
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Просмотр: $ sudo -u postgres pg_probackup-10 show -B /backup
Проверка backup:
Проверка файлов:
$ sudo -u postgres pg_probackup-10 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid
Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PUVU29
INFO: Backup PUVU29 data files are valid
INFO: Backup PUVU29 WAL segments are valid
INFO: Validating backup PUVTUX
INFO: Backup PUVTUX data files are valid
INFO: Backup PUVTUX WAL segments are valid
INFO: All backups are valid
-------------------------------------------------------------------------------------------------------
Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)
Сделали копию:
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --expired
Перед восстановлением
Просмотр:
$ sudo -u postgres pg_probackup-10 show -B
Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid
Можно восстанавливать.
Останавливаем 1с
$ sudo systemctl stop srv1cv83.service
Останавливаем postgresql
$ sudo systemctl stop postgresql.service
Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"
Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP29I
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid
INFO: Backup PRP29I is valid.
INFO: Restore of backup PRP29I completed.
Запускаем postgresql
$ sudo systemctl start postgresql.service
Запускаем 1с
$ sudo systemctl start srv1cv83.service
-------------------------------------------------------------------------------------------------------
Пример восстановления из полной автономной резервной копии c непрерывным архивированием (замена кластера на резервную копию)
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired
Просмотр: $ sudo -u postgres pg_probackup-10 show -B /backup
Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
Можно восстанавливать, но проверим непрерывность архивирования:
Войти в 1с создать документ, провести, выйти из 1с.
$ sudo -u postgres pg_probackup-10 validate -B /backup --instance main -i PRP6Q5 --time='2042-04-16 12:26:00'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
WARNING: Thread [1]: Could not read WAL record at 1/88000000
ERROR: Thread [1]: WAL segment "/backupwal/wal/main/000000010000000100000088" is absent
WARNING: Recovery can be done up to time 2019-05-18 14:36:30+03, xid 0 and LSN 1/2A000198
ERROR: Not enough WAL records to time 2042-04-16 12:26:00+03
Останавливаем 1с
$ sudo systemctl stop srv1cv83.service
Останавливаем postgresql
$ sudo systemctl stop postgresql.service
Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"
Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP6Q5 --recovery-target='latest'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
INFO: Backup PRP6Q5 is valid.
INFO: Restore of backup PRP6Q5 completed.
Запускаем postgresql
$ sudo systemctl start postgresql.service
Запускаем 1с
$ sudo systemctl start srv1cv83.service
Для проверки стандартной wal архивации:
$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal
$ sudo nano /etc/postgresql/10/main/postgresql.conf
расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'
Сохранить.
$ sudo systemctl restart postgresql.service
В папку /test положить файлы:
deb64_8_3_15_1565.tar.gz
# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$ ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1565.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1565.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1565_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1565_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
#$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
#$ sudo usermod -aG sudo usr1cv8
$ sudo apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/18.04/haspd_7.90-eter1ubuntu_amd64.deb
$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
#$ sudo reboot
$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN 0 128 *:1560 *:*
LISTEN 0 128 *:1540 *:*
LISTEN 0 128 *:1541 *:*
LISTEN 0 128 :::1560 :::*
LISTEN 0 128 :::1540 :::*
LISTEN 0 128 :::1541 :::*
#Не встал скриптом imagemagick?
#Без строчки ниже будет ругаться при входе в 1с
#$ sudo apt-get install imagemagick -y
Для программной лицензии (прявязанной к hasp)
в /var/1C/licenses
Положить лицензию
$ sudo mv 20190207114003.lic /var/1C/licenses
Запуск службы сервера администрирования RAS
$ sudo su root -c "cat >/etc/systemd/system/srv1cv8-ras.service <<EOL
[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service
[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8
[Install]
WantedBy=multi-user.target
EOL"
или можно так:
$ sudo nano /etc/systemd/system/srv1cv8-ras.service
Вставить:
[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service
[Service]
Type=simple
ExecStart=/opt/1C/v8.3/x86_64/ras cluster --port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8
[Install]
WantedBy=multi-user.target
EOL
Сохранить.
#$ sudo chmod +x /etc/systemd/system/srv1cv8-ras.service
$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service
Управление серверами 8.3.15
$ sudo nano /root/terminate.sh
#!/bin/bash
#if ! pgrep 'ras'; then sudo su usr1cv8 -c "/opt/1C/v8.3/x86_64/ras --daemon cluster"; fi
sudo su usr1cv8 -c "/opt/1C/v8.3/x86_64/ras --daemon cluster"
#sleep 5
_cluster=$(/opt/1C/v8.3/x86_64/rac cluster list | grep 'cluster'| awk -F' ' '{print $3}')
_base=$(/opt/1C/v8.3/x86_64/rac infobase --cluster=$_cluster summary list | grep 'infobase '| awk '{print$3}')
_session=$(/opt/1C/v8.3/x86_64/rac session --cluster=$_cluster list | grep 'session '| awk '{print$3}')
echo 'кластер: ' $_cluster
echo 'базы: ' $_base
echo 'сессии: ' $_session
for session in $_session
do
/opt/1C/v8.3/x86_64/rac session --cluster=$_cluster terminate --session=$session
done
_session=$(/opt/1C/v8.3/x86_64/rac session --cluster=$_cluster list | grep 'session '| awk '{print$3}')
echo 'сессии: ' $_session
Сохранить.
Проверка
$ sudo sh /root/terminate.sh
Настройка резервного копирования
$ sudo nano /root/fullbackup.sh
#!/bin/sh -e
#
#/backup
inst='/backup'
cd $inst
sudo sh /root/terminate.sh
# vacuumdb
sudo systemctl stop srv1cv83.service
sudo -u postgres vacuumdb -afz > vacuumdb.txt
sudo systemctl start srv1cv83.service
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
echo "vacuumdb $DATA - неудачное завершение" >> vacuumdb.log
else
echo "vacuumdb $DATA - удачное завершение" >> vacuumdb.log
fi
cat vacuumdb.txt >> vacuumdb.log
# /backup/pg_probackup
log=$inst'/log/pg_probackup.log'
log1=$inst'/log/probackup.log'
if [ -f $log ]; then rm $log; fi
cd $inst
PGPASSWORD=pass pg_probackup-10 backup -B $inst --instance main -U postgres -d postgres -h 127.0.0.1 -b FULL --stream --compress --expired --delete-wal --log-level-file=info
grep completed $log > /dev/null 2>&1
if [ $? -ne 0 ]
then
msg="$inst неудачное завершение."
else
msg="$inst удачное завершение."
fi
DATA=`date +"%Y-%m-%d %H:%M:%S"`
#msg1="Размер экземпляра pg_probackup: $(du -h -s $inst)"
echo "==================================================================" >> $log1
cat $log >> $log1
echo "$DATA $msg" >> $log1
# Сразу архивируем для rsync
COPY_DIR=$inst/copy
COPY_LOG=$inst/copy/copy.log
#Берем последнюю копию
COPY_ID=$(ls $inst/backups/main -1 | tail -1)
#Она должна быть completed
grep "$COPY_ID completed" $log > /dev/null 2>&1
if [ $? = 0 ]
then
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
#rm $inst/copy/*
tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz \
$inst/backups/main/$COPY_ID > /dev/null 2>&1
if [ $? = 0 ]
then
msg="создан $COPY_DIR/pg_pro-$DATA.tar.gz"
else
msg="ошибка создания $COPY_DIR/pg_pro-$DATA.tar.gz"
fi
DATA=`date +"%Y-%m-%d %H:%M:%S"`
echo "$DATA $msg" >> $COPY_LOG
fi
Сохранить.
Проверка:
$ sudo sh /root/fullbackup.sh
$ sudo nano /root/backup-sql.sh
#!/bin/sh
# crontab -e
# mkdir -p /backup/pg_dump
set -e
BACKUP_DIR="/backup/pg_dump"
cd $BACKUP_DIR
#DIR_YANDEX="/backup/pg_dump/yandex"
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop srv1cv83.service
echo "состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/10/main/base >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
do
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
# Записываем информацию в лог с секундами
echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "$DATA Начало backup базы ${DB_NAME}"
sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}" > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
exit
else
echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
fi
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
echo "Запускаем сервер 1С"
sudo systemctl start srv1cv83.service
echo "Состояние сервера 1С" >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"
cat $BACKUP_DIR/backup.log >> $BACKUP_DIR/backupall.log
Сохранить.
Проверка
$ sudo sh /root/backup-sql.sh
$ sudo crontab -e
00 0 * * * sh /root/fullbackup.sh
00 3 * * * sh /root/backup-sql.sh
Дополнительные пакеты:
$ sudo apt install sysstat lm-sensors smartmontools
9. Настройка клиента Openconnect
$ sudo apt install openconnect
Положить сертификат
/root/server.p12 - клиентский
/root/ca-cert.pem - сервера
Запустить локально:
$ sudo openconnect -b xxx.xxx.xxx.xxx -c /root/server@xxx.xxx.xxx.xxx.p12 --cafile /root/ca-cert.pem
Если в логах появится постоянно:
Jul 16 13:44:47 u1804 openconnect[1796]: DTLS handshake failed: The operation timed out
Jul 16 13:46:17 u1804 openconnect[1796]: DTLS handshake failed: Resource temporarily unavailable, try again.
Jul 16 13:50:48 u1804 openconnect[1796]: message repeated 3 times: [ DTLS handshake failed: Resource temporarily unavailable, try again.]
Добавить:
--no-dtls
$ sudo openconnect -b XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
$ route
$ sudo pkill openconnect
Сделать службу:
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/openconnect XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
#--no-dtls # Добавить в предыдущую строку для отключения dtls
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl restart openconnect.service
$ route
Проверить ip (если настроена маршрутизация интернета)
$ wget -O - -q icanhazip.com
$ sudo reboot
Настройка ufw для ограничения доступа по vpn
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo ufw reset
$ sudo ufw status
$ sudo ufw enable
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ sudo ufw allow out on enp1s0
$ sudo ufw allow in on enp1s0
$ sudo ufw allow out on tun0 to any port 22
$ sudo ufw allow in on tun0 to any port 22
$ sudo ufw disable && sudo ufw enable
$ sudo ufw status
Удаление правил:
# ufw status numbered
.........
# ufw delete 2
10. Отключить оповещение по почте с в команде crontab
$ sudo crontab -e
Добавить в начало:
MAILTO=""
Сохранить.
Пересоздание кластера 1с.
Остановить сервер 1с
$ sudo service srv1cv83 stop
Удалить кластер (нужно будет пересоздать базы!)
$ sudo rm -R /home/usr1cv8/.1cv8/1C/1cv8
Запустить сервер 1с
$ sudo service srv1cv83 start
Удалить базу:
$ sudo su postgres
$ psql -c "DROP DATABASE example;"
или
$ sudo -u postgres psql -c "DROP DATABASE example;"
Комментариев нет:
Отправить комментарий