пятница, 17 мая 2019 г.

test Тестовый сервер ubuntu 16.04.6 PostgreSQL версия 10.5-24.1C 1С 8.3.13.1690


В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu 16.04.5 на виртуальную машину.
Нам потребуется (все 64 бит):
1. ubuntu 16.04.6
2. 1С берем на сайте 8.3.13.1690 при наличии договора ИТС
3. PostgreSQL версия 10.5-24.1C дистрибутивдополнительные модули при наличии договора ИТС 
4. Драйверы hasp берем etersoft

1. Устанавливаем ubuntu 16.04.5 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (32GB)

Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера test, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y
Прверить синхранизацию NTP synchronized: yes, если нет настроить.
$ timedatectl

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

2. Настройка сети скриптом.
Узнаем ip и имя адаптера
$ ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP     inet 192.168.0.43/24 brd 192.168.0.255 scope global enp1s0

$ nano network.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip, адрес шлюза и имя адаптера в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="test"
# virtualbox
_iface="enp1s0"
_address="192.168.0.43"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
# отключим сетевой менеджер для ubuntu desktop#sudo systemctl stop NetworkManager.service
#sudo systemctl disable NetworkManager.service
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network
#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost  $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# перезагрузим сеть
sudo systemctl restart networking.service



Сохраним файл network.sh

------------------------------------------
Сделаем исполняем
$ chmod +x network.sh
$  sudo ./network.sh

или
$  sudo sh network.sh
------------------------------------------

Скрипт можно запускать много раз
для смены ip и hosthame

Если не запускали скрипт (DHCP)
Смотрим:
$ cat  /etc/hosts
127.0.0.1       localhost
127.0.1.1       test



$ sudo nano /etc/hosts

Меняем:

127.0.0.1       localhost test
#127.0.1.1       test



Сохранить.

$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 800.380
.......................................
cpu MHz         : 800.037 

Сделаем еще один скрипт для настройки остального:

$ 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 
cpu MHz         : 3866.700
....................................... 
cpu MHz         : 3911.261


Настройка Ubuntu для работы с ИБП от APC

Установка СУБД PostgreSQL версия 10.5-24.1C

$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_10.5_24.1C_amd64_deb.tar.bz2
postgresql_10.5_24.1C_amd64_addon_deb.tar.bz2

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
$ sudo apt update -y
$ sudo apt-get install postgresql-common libtcl8.6 -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pgdg-keyring помечен как зафиксированный.
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.5_24.1C_amd64_deb.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_10.5_24.1C_amd64_addon_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.5_24.1C_amd64_deb.tar.bz2
$ cd  postgresql-10.5-24.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
# ниже можно не ставить:
$ cd /tmp/post/
$ tar -xvf postgresql_10.5_24.1C_amd64_addon_deb.tar.bz2
$ cd postgresql-10.5-24.1C_amd64_addon_deb
$ sudo dpkg -i *.deb
# конец не ставить
$ dpkg -l | grep 10.5-24.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libecpg-compat3 помечен как зафиксированный.
#libecpg-dev помечен как зафиксированный.
#libecpg6 помечен как зафиксированный.
#libpgtypes3 помечен как зафиксированный.
#libpq-dev помечен как зафиксированный.
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-10-dbg помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
#postgresql-doc-10 помечен как зафиксированный.
#postgresql-plperl-10 помечен как зафиксированный.
#postgresql-plpython-10 помечен как зафиксированный.
#postgresql-plpython3-10 помечен как зафиксированный.
#postgresql-pltcl-10 помечен как зафиксированный.
#postgresql-server-dev-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 = 12GB
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
#min_wal_size = 2GB
#max_wal_size = 4GB
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
 -------------------------------------------------------------------------------------------------------

Установим диск для backup


$ sudo cp /etc/fstab /etc/fstab.bak
$  ls -l /dev/disk/by-uuid
итого 0
lrwxrwxrwx 1 root root 10 май 17 17:51 cf0301e7-62cb-4f3c-b6f1-3e126a8a675a -> ../../sdb1
lrwxrwxrwx 1 root root 10 май 17 17:51 d2fb6453-a5ba-4113-bb85-81e1d1870268 -> ../../sda1

$ sudo nano /etc/fstab


Добавить/исправить для sdb1
UUID=cf0301e7-62cb-4f3c-b6f1-3e126a8a675a /backup         ext4    errors=remount-ro 0       1

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=d2fb6453-a5ba-4113-bb85-81e1d1870268 /               ext4    errors=remount-ro 0       1
UUID=cf0301e7-62cb-4f3c-b6f1-3e126a8a675a /backup         ext4    errors=remount-ro 0       1
/swapfile none swap sw 0 0

Сохранить.

$ sudo reboot

После создания пользователя postgres
$ sudo chown -R postgres:postgres /backup
$ sudo chmod -R 777 /backup


-------------------------------------------------------------------------------------------------------

Установка 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

Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD


Каталог резервных копий /backup/backup1 расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
#$ sudo mkdir /backup
#$ sudo chown -R postgres:postgres /backup 
$ sudo -u postgres pg_probackup-10 init -B /backup/backup1 
Определение копируемого экземпляра 
$ sudo -u postgres pg_probackup-10 add-instance -B /backup/backup1 -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 /backupwal --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

Настройка политики сохранения 30 резервных копий

$ sudo -u postgres nano /backup/backup1/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=30

Сохранить

Создание полной автономной резервной копии: 

$ sudo -u postgres pg_probackup-10 backup -B /backup/backup1 --instance main -b FULL --stream --compress --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup/backup1


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup/backup1


Можно сделать еще один экземпляр для непрерывного архивирования.
Идея в одном экземпляре с retention-redundancy=30 организуем собрание автономных копий за месяц,  в другом экземпляре с retention-redundancy=5  организуем непрерывное wal архивирование, хранилища на разных дисках.

Инициализация каталога резервных копий 2 экземпляр на SSD

$ sudo mkdir /backupwal
$ sudo chown -R postgres:postgres /backupwal
$ sudo -u postgres pg_probackup-10 init -B /backupwal

Определение копируемого экземпляра 
$ sudo -u postgres pg_probackup-10 add-instance -B /backupwal -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 /backupwal --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

Настройка политики сохранения 5 резервных копий

$ sudo -u postgres nano /backupwal/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=5

Сохранить


Создание полной автономной резервной копии: 


$ sudo -u postgres pg_probackup-10 backup -B /backupwal --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backupwal


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backupwal

$ sudo -u postgres pg_probackup-10 checkdb -B /backupwal --instance main
INFO: Start checking data files
INFO: Data files are valid

$ sudo -u postgres pg_probackup-10 validate -B /backupwal
INFO: Validate backups of the instance 'main'
INFO: Validating backup PRZZDO
INFO: Backup PRZZDO data files are valid
INFO: Backup PRZZDO WAL segments are valid
INFO: All backups are valid

-------------------------------------------------------------------------------------------------------  
petergeoghegan/amcheck

$ sudo apt install postgresql-10-amcheck

Для каждой базы:
postgres=# CREATE EXTENSION amcheck;
или
postgres=# CREATE EXTENSION amcheck_next;

Grigory Smolkin: для PG =<10 рекомендую ( Grigory Smolkin) использовать  amcheck_next

Для каждой базы, например demo:

$ sudo -u postgres psql -d postgres -c "CREATE EXTENSION amcheck_next" 
$ sudo -u postgres psql -d demo -c "CREATE EXTENSION amcheck_next"

$ sudo -u postgres pg_probackup-10 checkdb -B /backupwal --instance main --amcheck

INFO: Start checking data files
INFO: Data files are valid
INFO: Start amchecking PostgreSQL instance
INFO: Amchecking database 'postgres' using extension 'amcheck_next' version 2 from schema 'public'
INFO: Amchecking database 'demo' using extension 'amcheck_next' version 2 from schema 'public'
INFO: Checkdb --amcheck executed successfully
INFO: Indexes are valid


опция --heapallindexed, с ней amcheck проверяет, что хип, который должен быть проиндексирован, действительно проиндексирован

$ sudo -u postgres pg_probackup-10 checkdb -B /backupwal --instance main --amcheck --heapallindexed

INFO: Start checking data files
INFO: Data files are valid
INFO: Start amchecking PostgreSQL instance
INFO: Amchecking database 'postgres' using extension 'amcheck_next' version 2 from schema 'public'
INFO: Amchecking database 'demo' using extension 'amcheck_next' version 2 from schema 'public'
INFO: Checkdb --amcheck executed successfully
INFO: Indexes are valid
------------------------------------------------------------------------------------------------------- 

Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)


Сделали копию:
$ sudo -u postgres pg_probackup-10 backup -B /backup/backup1 --instance main -b FULL --stream --compress --expired

Перед восстановлением

Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup/backup1


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup/backup1

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/backup1 --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 /backupwal --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backupwal


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backupwal

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 /backupwal   --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 /backupwal --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

-------------------------------------------------------------------------------------------------------
Примечание 1


wal архивация сразу не заработала, проблема в pg_probackup 2.1.1
странное сообщение в логах - could not find a "pg_probackup" to execute #39

#archive_command = 'pg_probackup-10 archive-push -B /backupwal --compress --instance main --wal-file-path %p --wal-file-name %f'

нужно указать полный путь к pg_probackup-10:

archive_command = '/usr/bin/pg_probackup-10 archive-push -B /backupwal --compress --instance main --wal-file-path %p --wal-file-name %f'

В логе было:

2019-05-18 12:27:24 MSK [20683]: [68-1] user=,db=,client= LOG:  archive command failed with exit code 1
2019-05-18 12:27:24 MSK [20683]: [69-1] user=,db=,client= DETAIL:  The failed archive command was: pg_probackup-10 archive-push -B /backupwal --compress --instance main --wal-file-path pg_wal/0000000100000000000000F1 --wal-file-name 0000000100000000000000F1
2019-05-18 12:27:24 MSK [20683]: [70-1] user=,db=,client= WARNING:  archiving write-ahead log file "0000000100000000000000F1" failed too many times, will try again later
could not find a "pg_probackup-10" to execute
pg_probackup-10: could not find own program executable


Для проверки стандартной 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

 
-------------------------------------------------------------------------------------------------------

Установка 1с

В папку /test положить файлы:
deb64_8_3_13_1690.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_13_1690.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_13_1690.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.13-1690_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.13-1690_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/16.04/haspd-modules_7.90-eter1ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.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





-------------------------------------------------------------------------------------------------------

Настройка Postfix для отправки почты через yandex

Postfix relay yandex
Пошаговая инструкция установки Postfix и Dovecot на Ubuntu
journalctl: open database /etc/aliases.db: No such file or directory 

user@yandex.ru - e-mail с которого будем посылать письма на произвольные адреса

$ sudo apt update 
$ sudo apt upgrade
(postfix без настройки)
$ sudo apt install postfix mutt


$ sudo mkdir /etc/postfix/private
#$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
$ sudo nano /etc/postfix/main.cf

Заменить содержимое файла на:

relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay
sender_canonical_maps = hash:/etc/postfix/private/canonical


Сохранить.

Создать файл /etc/postfix/private/canonical :

$ sudo nano /etc/postfix/private/canonical

Содержимое (Ваш: user@yandex.ru  где user ваш логин) :

@yandex.ru user@yandex.ru


Сохранить.

Создать файл  /etc/postfix/private/sender_relay :

sudo nano /etc/postfix/private/sender_relay

Содержимое:

@yandex.ru smtp.yandex.ru

Сохранить.

Создать файл  /etc/postfix/private/sasl_passwd:
где вместо *** укажите свой пароль:
 
$ sudo nano /etc/postfix/private/sasl_passwd

Содержимое (Ваш: user@yandex.ru  где user ваш логин, password - ваш пароль ) :

[smtp.yandex.ru] user@yandex.ru:password

Сохранить.

$ sudo postmap /etc/postfix/private/*
$ sudo postalias /etc/aliases
$ sudo systemctl restart postfix.service
#$ sudo systemctl status postfix.service

$ sudo reboot

 посмотреть:

$ sudo journalctl -b
$ sudo journalctl -b -p err

Если есть сообщения:
........
open database /etc/aliases.db: No such file or directory
........

$ sudo postalias /etc/aliases
или
$ sudo newaliases

Перезагрузить и проверить.

Отправка почты на наш e-mail:

$ echo "test" | mutt -s "test" nash@e-mail.ru

Отправка почты на наш e-mail с вложением файла:

$ echo "test" | mutt -s "test" nash@e-mail.ru -a file



======================================================

$ sudo apt install sysstat lm-sensors smartmontools

$ sudo nano /root/sysinfo.sh

Вставить:

#!/bin/sh
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
#FILE= 'sys_$DATA.txt'
echo  $DATA  > sysinfo.txt
#echo  '12345'  > sys_$DATA.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "uptime" >> sysinfo.txt
uptime >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "free -m" >> sysinfo.txt
free -m >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "df -h" >> sysinfo.txt
df -h >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "Размер папки с логами postgresql:" >> sysinfo.txt
echo "du -h -s /var/lib/postgresql/10/main/pg_log" >> sysinfo.txt
du -h -s /var/lib/postgresql/10/main/pg_log  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "Размер папки с базами postgresql:" >> sysinfo.txt
echo "du -h -s /var/lib/postgresql/10/main/base" >> sysinfo.txt
du -h -s /var/lib/postgresql/10/main/base  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "Размер папки с логами технологического журнала 1с:" >> sysinfo.txt
echo "du -h -s  /home/usr1cv8/log" >> sysinfo.txt
du -h -s  /home/usr1cv8/log  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "Размер папки с dumps 1с:" >> sysinfo.txt
#echo "du -h -s  /dumps" >> sysinfo.txt
echo "du -h -s  /home/usr1cv8/dumps" >> sysinfo.txt
#du -h -s  /dumps  >> sysinfo.txt
du -h -s  /home/usr1cv8/dumps  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "sensors" >> sysinfo.txt
sensors >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "iostat -xz" >> sysinfo.txt
iostat -xz >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "sar -r 1 1" >> sysinfo.txt
sar -r 1 1 >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
#echo "ps aux --sort -%mem | awk '{print $6/1024 " MB\t\t" $11}' | head -n10" >> sysinfo.txt
#ps aux --sort -%mem | awk '{print $6/1024 " MB\t\t" $11}' | head -n10 >> sysinfo.txt
#echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "top -b -n1 -o %MEM | head -n30"
top -b -n1 -o %MEM | head -n30 >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
ps -eo rss,pid,user,command | sort -rn | head -20 | awk '{ hr[1024**2]="GB"; hr[1024]="MB";\
 for (x=1024**3; x>=1024; x/=1024) {\
 if ($1>=x) { printf ("%-6.2f %s ", $1/x, hr[x]); break }\
 } } { printf ("%-6s %-10s ", $2, $3) }\
 { for ( x=4 ; x<=NF ; x++ ) { printf ("%s ",$x) } print ("\n") }\
 ' >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "cat /proc/meminfo" >> sysinfo.txt
cat /proc/meminfo >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "mpstat -P ALL" >> sysinfo.txt
mpstat -P ALL >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "smartctl -A /dev/sda" >> sysinfo.txt
smartctl -A /dev/sda  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "smartctl -A /dev/sdb" >> sysinfo.txt
smartctl -A /dev/sdb  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "journalctl -b -p err" >> sysinfo.txt
journalctl -b -p err  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
echo "Мониторинг 1С" >> sysinfo.txt
if ! pgrep 'ras'; then /opt/1C/v8.3/x86_64/ras --daemon cluster; fi
_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 >> sysinfo.txt
echo 'базы: ' $_base >> sysinfo.txt
echo 'сессии:  ' $_session >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
/opt/1C/v8.3/x86_64/rac cluster list  >> sysinfo.txt
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
for cluster in $_cluster
do
/opt/1C/v8.3/x86_64/rac session --cluster=$_cluster list >> sysinfo.txt
done 
echo "---------------------------------------------------------------------------------------" >> sysinfo.txt
sleep 2
echo "test" | mutt -s $DATA  f@vt.com -a sysinfo.txt

Сохранить.

Проверка:
$ sudo sh /root/sysinfo.sh

$ sudo -i
# crontab -e
Добавить в конец (сработает в 2:01):
# каждые 5 минут
*/5 * * * * sudo sh /root/sysinfo.sh

 Смотреть задания:
# crontab -l


$ sudo nano /root/backupwal.sh

Вставить

#!/bin/bash
sudo -u postgres pg_probackup-10 backup -B /backupwal --instance main -b FULL --stream --compress --delete-wal --expired

Сохранить.

======================================================


Настройка резервного копирования и технологических операций

Настройка Postfix для отправки почты через yandex
Скрипт завершения работы пользователей
Для Ubuntu 18.04 можно воспользоваться
Как включить /etc/rc.local с помощью Systemd 
 
Можно оценить время выполнения операций.

$ time sudo -u postgres vacuumdb -afqz


$ time sudo -u postgres pg_probackup-10 backup -B /backupwal --instance main -b FULL --stream --compress --delete-wal --expired

$ time sudo -u postgres pg_probackup-10 backup -B /backup/backup1 --instance main -b FULL --stream --compress --expired

Настройка  pg_probackup-10 checkdb --amcheck

$ sudo apt install postgresql-10-amcheck

Создадим расширение для каждой базы:

$ sudo -u postgres psql -d postgres -c "CREATE EXTENSION amcheck_next"
$ sudo -u postgres psql -d demo -c "CREATE EXTENSION amcheck_next" 

sudo -u postgres mkdir /backupwal/copy

Настройка rsync Ubuntu 16.04

$ sudo nano /etc/default/rsync

#RSYNC_ENABLE=false
RSYNC_ENABLE=true

Сохранить.


$ sudo nano /etc/rsyncd.conf
# create new
# any name you like

[backup]
# destination directory to copy

path =
/backupwal/copy
# hosts you allow to access

hosts allow = 192.168.0.0/255.255.255.0
hosts deny = *
list = true
uid = root
gid = root
read only = false


Сохранить.

$ sudo systemctl enable rsync
$ sudo systemctl start rsync

Архивы вида pg_pro-2019-05-28_12-39-21.tar.gz
будут в папке /backupwal/copy

Для скачивания на windows машины
Установка RSync в Windows Cygwin 

На windows машине запускаем синхронизацию в планировщике один раз в день, по времени
позже обычного завершения архивирования на сервере

rsync -avz 192.168.0.239::backup  /cygdrive/D/z  --progress 

В папке D:\z 

будут складываться архивы копии кластера за каждый вида: 
.....
pg_pro-2019-05-28_12-39-21.tar.gz 
.....

Старые архивные копии можно удалять forfiles.exe
Как удалять файлы старше 10 дней на windows

 
Если сервер будет выключаться на ночь:

$ sudo nano /etc/rc.local

Заменить:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sleep 10
email=f1@vt.com
# выгнать пользователей
sudo sh /root/terminate.sh


# vacuumdb
sudo systemctl stop srv1cv83.service
log=/tmp/vacuumdb.txt
DATA=`date +"%Y-%m-%d %H:%M:%S"`
sudo -u postgres echo $DATA > $log
sudo -u postgres vacuumdb -afz >> $log
if [ $? -ne 0 ]
then
    msg="vacuumdb неудачное завершение"
else
    msg="vacuumdb удачное завершение"
fi
DATA=`date +"%Y-%m-%d %H:%M:%S"`
sudo -u postgres echo $DATA >> $log
echo $msg | mutt -s "$msg $DATA" $email -a $log
sudo systemctl start srv1cv83.service

# /backupwal
inst=/backupwal
log=$inst/log/pg_probackup.log
if [ -f $log ]; then sudo -u  postgres rm $log; fi
sudo -u postgres pg_probackup-10 backup -B /backupwal --instance main -b FULL \
    --stream --compress --delete-wal --expired --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 "$msg $msg1" | mutt -s "$msg $DATA" $email -a $log

# Сразу архивируем для rsync
COPY_DIR=$inst/copy
#Берем последнюю копию
COPY_ID=$(sudo -u postgres 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"`
    sudo -u postgres rm  $inst/copy/*
    sudo -u postgres tar -cvzf $COPY_DIR/pg_pro-$DATA.tar.gz  \
           $inst/backups/main/$COPY_ID > /dev/null 2>&1
    if [ $? = 0 ]
    then
        DATA=`date +"%Y-%m-%d_%H-%M-%S"`
        msg="создан $COPY_DIR/pg_pro-$DATA.tar.gz"
    else
        msg="ошибка создания $COPY_DIR/pg_pro-$DATA.tar.gz"
    fi
    echo $msg | mutt -s "$msg" $email -a $log
fi

# /backup/backup1
inst=/backup/backup1
log=$inst/log/pg_probackup.log
if [ -f $log ]; then sudo -u  postgres rm $log; fi
sudo -u postgres pg_probackup-10 backup -B /backup/backup1 --instance main -b FULL \
     --stream --compress --expired --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 "$msg $msg1" | mutt -s "$msg $DATA" $email -a $log

# checkdb --amcheck --heapallindexed
inst=/backupwal
log=$inst/log/pg_probackup.log
if [ -f $log ]; then sudo -u  postgres rm $log; fi
sudo -u postgres pg_probackup-10 checkdb -B /backupwal --instance main --amcheck \
      --heapallindexed --skip-block-validation --log-level-file=log
grep "INFO: Indexes are valid" $log > /dev/null 2>&1
if [ $? -ne 0 ]
then
    msg="ERROR: Checkdb --amcheck failed"
else
    msg="INFO: Indexes are valid"
fi
DATA=`date +"%Y-%m-%d %H:%M:%S"`
echo $msg | mutt -s "$msg $DATA" $email -a $log

exit

Сохранить.

Проверка

$ sudo reboot

или

$ sudo systemctl restart rc-local.service



Если сервер будет работать круглосуточно и хочется сделать один скрипт,
сложность в том что pg_probackup нужно запускать от postgres
от root pg_probackup в crontab не запустится.

проще всего настроить как было указано выше /etc/rc.local

$ sudo nano /etc/rc.local

......

$ sudo systemctl restart rc-local.service


С учетом времени настроить  crontab от root

$ sudo crontab -e

Добавить в конец:

# Запуск скрипта в  3 часа 00 минут
00 3 * * * systemctl restart rc-local.service # Резервное копирования в  3 часа 00 минут



Сохранить.

Смотреть задания:
$ sudo crontab -l
 

Более поздний вариант (научился запускать pg_probackup от root):

$ sudo nano /root/fullbackup.sh


#!/bin/sh -e
#
email=f1@vu.com
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 неудачное завершение" | mutt -s 'vacuumdb '$DATA' - неудачное завершение' $email -a vacuumdb.txt
else
     echo "vacuumdb удачное завершение" | mutt -s 'vacuumdb '$DATA' - удачное завершение' $email -a vacuumdb.txt
fi

# /backupwal
inst='/backupwal'
log=$inst'/log/pg_probackup.log'
if [ -f $log ]; then rm $log; fi
cd $inst
PGPASSWORD=password pg_probackup-10  backup -B $inst --instance main -U postgres -d postgres -h 127.0.0.1  -b FULL --stream --compress --expired --log-level-file=info

DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     echo "$inst неудачное завершение" | mutt -s $inst' '$DATA' - неудачное завершение' $email -a $log
else
     echo "$inst удачное завершение" | mutt -s $inst' '$DATA' - удачное завершение' $email -a $log
fi

# /backup/backup1
inst='/backup/backup1'
log=$inst'/log/pg_probackup.log'
if [ -f $log ]; then rm $log; fi
cd $inst
PGPASSWORD=password pg_probackup-10 backup -B $inst --instance main -U postgres -d postgres -h 127.0.0.1 -b FULL --stream --compress --expired --log-level-file=info

DATA=`date +"%Y-%m-%d_%H-%M-%S"`
if [ $? -ne 0 ]
then
     echo "$inst неудачное завершение" | mutt -s $inst' '$DATA' - неудачное завершение' $email -a $log
else
     echo "$inst удачное завершение" | mutt -s $inst' '$DATA' - удачное завершение' $email -a $log
fi


Сохранить.

$ sudo crontab -e

Добавить в конец:

# Запуск скрипта в  3 часа 00 минут
00 3 * * * sh /root/fullbackup.sh # Резервное копирования в  3 часа 00 минут



Сохранить.

Смотреть задания:
$ sudo crontab -l


======================================================

Зашарить папку по сети \\test\files

$ sudo mkdir /share/
$ sudo chmod -R 777 /share/
$ sudo chown -R root:sambashare /share/
$ sudo cp -b -f /etc/samba/smb.conf /etc/samba/smb.conf.bak
$ sudo nano /etc/samba/smb.conf

Добавить в конец

[files]
path = /share/
comment = No comment
read only = no
available = yes
browseable = yes
writable = yes
guest ok = yes
public = yes
printable = no
locking = no
strict locking = no

Сохранить
Перезагрузить службу

$ sudo service smbd restart

======================================================

 Настройка технологического журнала

$ sudo mkdir -p /home/usr1cv8/.1cv8/1C/1cv8/conf/

S sudo nano /home/usr1cv8/.1cv8/1C/1cv8/conf/logcfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <eq property="name" value="DBPOSTGRS"/>
                </event>
                <event>
                        <eq property="name" value="SDBL"/>
                </event>
                <event>
                        <eq property="name" value="EXCP"/>
                </event>
                <property name="all"/>
        </log>
</config>
Сохранить.

Другой вариант:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="/home/usr1cv8/log" history="96">
                <event>
                        <ne property="name" value="DB2" />
                        <ne property="name" value="DBMSSQL" />
                        <ne property="name" value="DBMSSQLCONN" />
                        <ne property="name" value="DBORACLE" />
                        <ne property="name" value="DBPOSTGRS" />
                        <ne property="name" value="DBV8DBENG" />
                        <ne property="name" value="SDBL" />
                        <ne property="name" value="MEM" />
                        <ne property="name" value="TLOCK" />
                        <ne property="name" value="SRVC" />
                        <ne property="name" value="CALL" />
                        <ne property="name" value="CONN" />
                        <ne property="name" value="SCALL" />
                        <ne property="name" value="SCOM" />
                        <ne property="name" value="VRSREQUEST" />
                        <ne property="name" value="VRSRESPONSE" />
                </event>
                <property name="all" />
        </log>
</config>
====================================================== 

Настройка дампов

$ sudo mkdir -p /dumps
$ sudo chown -R usr1cv8:grp1cv8 /dumps
$ echo 'usr1cv8 soft core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'usr1cv8 hard core unlimited' | sudo tee -a /etc/security/limits.conf
$ echo 'kernel.core_pattern=/dumps/core.%e.%p ' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
#$ sudo usermod -aG sudo usr1cv8
======================================================

Скрипт изменения ip адреса


$ nano changeip.sh

Скопируем из буфера следующий скрипт, в котором Вам нужно исправить ip и адрес шлюза в соответствии со своей сетью:

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="test"
# real computer
_iface="enp1s0" _address="192.168.0.43"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
# настроим статический ip
sudo cat > /tmp/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto $_iface
#iface $_iface inet dhcp
iface $_iface inet static
address $_address
netmask $_netmask
gateway $_gateway
dns-nameservers $_nameserver
auto $_iface
EOF
sudo cp /tmp/interfaces /etc/network
#sudo rm /etc/resolv.conf
#sudo /bin/su -c "echo 'nameserver $_nameserver' > /etc/resolv.conf"
# изменим hostname и ip
sudo cat > /tmp/hosts <<EOF
127.0.0.1       localhost  $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# перезагрузим сеть
sudo systemctl restart networking.service

Сохраним файл changeip.sh

Сделаем исполняем
$ chmod +x changeip.sh

Выполним:

$ ./changeip.sh

======================================================

Скрипт завершения работы пользователей

$ sudo nano /root/terminate.sh

Вставить текст ниже:

#!/bin/sh
if ! pgrep 'ras'; then sudo su usr1cv8 -c "/opt/1C/v8.3/x86_64/ras --daemon cluster"; fi
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 /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sh /root/terminate.sh

exit 0

======================================================

Настройка Ubuntu для работы с ИБП от APC

APCUPSd: Поля о состоянии устройства
APCUPSD User Manual
Ureadahead сообщает об ошибках относительного пути в выходных данных journalctl

$ lsusb
....
Bus 001 Device 002: 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
......
2.
#UPSTYPE apcsmart
UPSTYPE usb

3. закомментировать DEVICE /dev/ttyS0
#DEVICE /dev/ttyS0

# Для проверки можно 30 (потом убрать )
TIMEOUT 0

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,0828
DATE     : 2018-08-02 18:16:34 +0300
HOSTNAME : s1030
VERSION  : 3.14.12 (29 March 2014) debian
UPSNAME  : s1030
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2018-08-02 18:16:32 +0300
MODEL    : Back-UPS ES 700G
STATUS   : ONLINE
LINEV    : 232.0 Volts
LOADPCT  : 19.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 25.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 30 Seconds
SENSE    : Medium
LOTRANS  : 180.0 Volts
HITRANS  : 266.0 Volts
ALARMDEL : No alarm
BATTV    : 13.6 Volts
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
STATFLAG : 0x05000008
SERIALNO : 5B1403T02541
BATTDATE : 2014-01-15
NOMINV   : 230 Volts
NOMBATTV : 12.0 Volts
FIRMWARE : 871.O3 .I USB FW:O3
END APC  : 2018-08-02 18:16:48 +0300


BCHARGE  : 50.0 Percent - Зарядка батарей 50%
TIMELEFT : 18.2 Minutes - Оставшееся время работы от батареи по оценке ИБП.


Нормально работает на 16.04 с ядром 4.4
С ядром 4.15 на материнке msi B250M выдает сообщения на консоль сервера:
янв 23 21:56:29 kamin kernel: do_IRQ: 6.33 No irq handler for vector

На виртуальной машине работает нормально.

Ошибка ядра ​​4.15 с apcupsd

$ journalctl -b -p err
янв 23 21:56:29 kamin kernel: do_IRQ: 6.33 No irq handler for vector
янв 23 21:56:30 kamin kernel: do_IRQ: 6.33 No irq handler for vector

Выяснилось что такие сообщения с ядром 4.15
появляются если в /etc/apcupsd/apcupsd.conf
$ sudo nano /etc/apcupsd/apcupsd.conf
не закомментировать DEVICE /dev/ttyS0
DEVICE /dev/ttyS0

Если закомментировать все нормально.
======================================================
 Тестовая база

Заполнить документ - 144 с

Провести сохранить - 113 с




Как посмотреть размер базы ?

Как посмотреть размер базы demo postgresql?
$ sudo -u postgres psql -c '\l+'

   
$ sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('demo'))"
 pg_size_pretty
----------------
 146 MB
(1 строка)

Тест  pgbench

$ sudo -u postgres psql -c "CREATE DATABASE example;"
$ sudo -u postgres pgbench -i -s 500 example
$ sudo -u postgres pgbench -c 10 -j 10 -t 10000 example

3 измерения.

$ sudo -u postgres pgbench -c 10 -j 10 -t 10000 example

$ sudo -u postgres pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 0.803 ms
tps = 12446.906212 (including connections establishing)
tps = 12454.236937 (excluding connections establishing)

user@test:~$ sudo -u postgres pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 0.844 ms
tps = 11849.561493 (including connections establishing)
tps = 11856.604068 (excluding connections establishing)

user@test:~$ sudo -u postgres pgbench -c 10 -j 10 -t 10000 example
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: simple
number of clients: 10
number of threads: 10
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
latency average = 0.841 ms
tps = 11887.282485 (including connections establishing)
tps = 11893.827870 (excluding connections establishing)

$ sudo -u postgres psql -c "DROP DATABASE example;"


Публикация ИБ на веб-сервере Apache 2.4.

$ sudo dpkg -i 1c-enterprise83-ws_8.3.13-1690_amd64.deb
$ sudo apt-get install apache2 -y

Создаем директорию для vrd-файла:
$ sudo mkdir -p /var/www/ib/demo

А также файл конфигурации Apache:
$ sudo touch /etc/apache2/conf-available/demo.conf

Переходим в каталог со утилитой публикации веб-клиента:
$ cd /opt/1C/v8.3/x86_64/

Запускаем утилиту:
$ sudo ./webinst -apache24 -wsdir demo -dir '/var/www/ib/demo' -connstr 'Srvr="test";Ref="demo";' -confPath /etc/apache2/conf-available/demo.conf


Где /var/www/ib/demo - директория где будет создан vrd-файл, demo - имя ИБ, test - адрес сервера 1С:Предпрятие, а /etc/apache2/conf-available/demo.conf - путь до конфигурационного файла Apache.

 Подключаем конфигурацию:
$ sudo a2enconf demo

 Перезагрузка Apache:
$ sudo service apache2 reload
# systemctl restart apache2

Смотрим:
http://test/demo или https://test/demo

Может быть так:
$ sudo apachectl -V | grep -i mpm
AH00534: apache2: Configuration error: No MPM loaded.

А может вот так:
$ sudo apachectl -V | grep -i mpm
Server MPM:     event
$ sudo a2dismod mpm_event

$ sudo a2enmod mpm_worker

Considering conflict mpm_event for mpm_worker:
Considering conflict mpm_prefork for mpm_worker:
Enabling module mpm_worker.
To activate the new configuration, you need to run:
  service apache2 restart

$ sudo service apache2 restart


$ sudo apachectl -V | grep -i mpm
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.0.239. Set the 'ServerName' directive globally to suppress this message
Server MPM:     worker

Apache MPM worker

$ sudo nano /etc/apache2/mods-enabled/mpm_worker.conf

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
#                         graceful restart. ThreadLimit can only be changed by stopping
#                         and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of threads
# MaxConnectionsPerChild: maximum number of requests a server process serves

<IfModule mpm_worker_module>
        StartServers                     2
        MinSpareThreads          25
        MaxSpareThreads          75
        ThreadLimit                      64
        ThreadsPerChild          25
        MaxRequestWorkers         150
        MaxConnectionsPerChild   0
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Делаем сертификаты  вариант от root :


$ sudo mkdir /var/www/example.com  
$ sudo nano /etc/apache2/conf-available/example.com.conf

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/example.com
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохранить.

Подключаем конфигурацию:
$ sudo a2enconf example.com  

 Перезагрузка Apache:
$ sudo service apache2 reload
# systemctl restart apache2

Проверка:

http://example.com/demo/

Кроме того, мы можем включить поддержку ssl
для нашего веб-сервера.


Делаем сертификаты есть варианты либо от root :

Вариант от root :
$ sudo -i
# curl https://get.acme.sh | sh

Делаем сертификаты:
# /root/.acme.sh/acme.sh --issue -d example.com -w /var/www/example.com
$ ~/.acme.sh/acme.sh --issue -d example.com -w /var/www/example.com

[Mon Jun 17 12:28:42 CEST 2019] Your cert is in  /root/.acme.sh/example.com/example.com.cer
[Mon Jun 17 12:28:42 CEST 2019] Your cert key is in  /root/.acme.sh/
example.co/example.com.key
[Mon Jun 17 12:28:42 CEST 2019] The intermediate CA cert is in  /root/.acme.sh/
example.co/ca.cer
[Mon Jun 17 12:28:42 CEST 2019] And the full chain certs is there:  /root/.acme.sh/
example.com/fullchain.cer

Для этого выполните:

$ sudo a2enmod ssl 
$ sudo a2enmod rewrite

$ sudo nano /etc/apache2/sites-available/site.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/example.com
    SSLEngine on
    SSLCertificateFile      /root/.acme.sh/example.com/example.com.cer
    SSLCertificateKeyFile  /root/.acme.sh/example.com/example.com.key
    #SSLCertificateChainFile /root/.acme.sh/example.com/fullchain.cer
</VirtualHost> 

Сохранить.

$ sudo a2ensite site
#(отключить sudo a2dissite site)


Перезагрузка Apache:
#$ sudo systemctl restart apache2
$ sudo service apache2 reload

https://example.com/demo/



Обратить внимание, если ставили сертификаты для пользователя root автоматом:

$ sudo crontab -l
0 2 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

Комментариев нет:

Отправить комментарий