пятница, 31 августа 2018 г.

Настройка Linux для PostgrSQL

Ubuntu 16.04.5 1С:Предприятие 8.3.13.1472 PostgreSQL, версия 10.3-2.1C

Установка 1С 8.3.13.1472 СУБД PostgreSQL, версия 10.3-2.1C ubuntu 16.04.5

данной статье опишем установку сервера и клиента 1С 8.3.13.1472 с СУБД PostgreSQL, версия 10.3-2.1C  на ubuntu 16.04.5 на virtualbox.
Нам потребуется (все 64 бит):
1. ubuntu 16.04.5
2. 1С берем на сайте 8.3.13.1472 при наличии договора ИТС
3. PostgreSQL, версия 10.3-2.1C  при наличии договора ИТС 
4.  Фонты берем etersoft по кнопке получить (после бесплатной регистрации wine.local для ubuntu 16.04 64 бит)
5. Драйверы hasp берем etersoft

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

Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.


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

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba -y

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

$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Пробросить hasp средствами VirtualBox

$ 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:53:b6:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.169/24 brd 192.168.0.255 scope global enp0s3

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт настройки сети:

$ nano network.sh

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

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="ufo"
# real computer
#_iface="enp0s31f6"
# kvm iface
#_iface="ens3"
# virtualbox iface
_iface="enp0s3"
#_iface="enp1s0"
_address="192.168.0.101"
_gateway="192.168.0.1"
_netmask="255.255.255.0"
_nameserver="8.8.8.8"
#----------------------------------------------------------------------
#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 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
$_address       $_hostname
EOF
sudo cp /tmp/hosts /etc
# изменим hostname
sudo hostname $_hostname
sudo /bin/su -c "echo $_hostname > /etc/hostname"
# отключим ip6
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"
sudo /bin/su -c "echo 'vm.swappiness=0' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'vm.vfs_cache_pressure = 50' >> /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
# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart
# ubuntu
# Отключим службу ondemand
# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

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

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

Выполним:

$ ./network.sh
------------------------------------------
или так:
$  sudo sh network.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

3. Установка СУБД PostgreSQL, версия 10.3-2.1C и 1c скриптом:

После перезагрузки по сети можно подключиться любым ftp клиентом к ftp серверу на нашей виртуальной машине (по ip или или имени ud1604) пользователь test пароль test и загрузить файлы установки:

Файлы необходимые для установки (предварительно нужно скачать по указанным в начале статьи ссылкам):
postgresql_10.3_2.1C_amd64_deb.tar.bz2postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2
client_8_3_13_1472.deb64.tar.gz
deb64_8_3_13_1472.tar.gz
deb64.tar.gz  #переименуем так 64 битный сервер для deb
client.deb64.tar.gz #переименуем так 64 битный клиенте для deb
fonts-ttf-ms_1.0-eter4ubuntu_all.deb
aksusbd_7.81-1_amd64.deb
Исправим bug
Several regex warnings when installing latest postgres update

sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;


Install PostgreSQL 10 on Ubuntu
Xenial-pgdg

Откроем firefox (в ubuntu), откроем эту страничку  и скопируем в буфер скрипт установки СУБД PostgreSQL версия 9.6.5-4.1С и 1c:

$ nano install_post103_2.sh

Скопируем из буфера следующий скрипт:

#!/bin/sh
sudo apt-get install libicu55  -y
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
#sudo cp /usr/share/hunspell/ru_RU.aff  /usr/share/hunspell/ru_RU.aff.copy
#sudo sed -e '1s/^\xef\xbb\xbf//' /usr/share/hunspell/ru_RU.aff
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.3_2.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.3_2.1C_amd64_deb.tar.bz2
cd  postgresql-10.3-2.1C_amd64_deb
sudo dpkg -i *.deb
cd /tmp/post/
tar -xvf postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.3-2.1C_amd64_addon_deb
sudo dpkg -i *.deb
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 rm /etc/apt/sources.list.d/postgresql.list
sudo apt update  -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432

# установка 1с
mkdir -p /tmp/1ctmp
cd /tmp/1ctmp
sudo apt install imagemagick -y
sudo apt install -y unixodbc libgsf-1-114 libglib2.0
#ubuntu
#sudo apt install ttf-mscorefonts-installer -y
#debian
#wget  http://ftp.ru.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb
sudo  apt install -y xfonts-utils cabextract
#sudo dpkg -i ttf-mscorefonts-installer_3.6_all.deb
# фонты от Etersoft
#ubuntu
cp /home/user/test/fonts-ttf-ms_1.0-eter4ubuntu_all.deb /tmp/1ctmp
sudo dpkg -i fonts-ttf-ms_1.0-eter4ubuntu_all.deb
#sudo apt -f -y install
#debian
#cp /home/user/Загрузки/fonts-ttf-ms_1.0-eter4debian_all.deb /tmp/1ctmp
#sudo dpkg -i fonts-ttf-ms_1.0-eter4debian_all.deb
cp /home/user/test/deb64_8_3_13_1472.tar.gz /tmp/1ctmp/deb64.tar.gz
cp /home/user/test/client_8_3_13_1472.deb64.tar.gz /tmp/1ctmp/client.deb64.tar.gz
tar xvzf deb64.tar.gz
tar xvzf client.deb64.tar.gz
sudo dpkg -i 1c*.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
mkdir /tmp/hasp
cd /tmp/hasp
cp /home/user/test/aksusbd_7.81-1_amd64.deb  /tmp/hasp
sudo dpkg -i aksusbd_7.81-1_amd64.deb

sudo dpkg -i *.deb
#sudo apt-get install -f -y

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

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

Выполним:

$ ./install_post103_2.sh

или
$ sudo sh install_post103_2.sh

Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

$ sudo reboot

$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Ср 2018-03-14 16:45:43 MSK; 7min ago
  Process: 1430 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 1430 (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0
   CGroup: /system.slice/postgresql.service

мар 14 16:45:43 kamin systemd[1]: Starting PostgreSQL RDBMS...
мар 14 16:45:43 kamin systemd[1]: Started PostgreSQL RDBMS.
user@kamin:~$

$ sudo ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*                   users:(("postgres",pid=1269,fd=6))
  
$ sudo systemctl start postgresql.service
$ sudo systemctl restart postgresql.service
$ sudo systemctl stop postgresql.service

$ sudo systemctl status srv1cv83.service
● srv1cv83.service - LSB: Starts and stops the 1C:Enterprise daemons
   Loaded: loaded (/etc/init.d/srv1cv83; bad; vendor preset: enabled)
   Active: active (exited) since Ср 2018-03-14 16:45:46 MSK; 11min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1215 ExecStart=/etc/init.d/srv1cv83 start (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0

мар 14 16:45:41 kamin systemd[1]: Starting LSB: Starts and stops the 1C:Enterprise daemons...
мар 14 16:45:41 kamin su[1267]: Successful su for usr1cv8 by root
мар 14 16:45:41 kamin su[1267]: + ??? root:usr1cv8
мар 14 16:45:41 kamin su[1267]: pam_unix(su:session): session opened for user usr1cv8 by (uid=0)
мар 14 16:45:46 kamin srv1cv83[1215]: Starting 1C:Enterprise 8.3 server: OK
мар 14 16:45:46 kamin systemd[1]: Started LSB: Starts and stops the 1C:Enterprise daemons.




$ sudo ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*                   users:(("rphost",pid=1402,fd=23))
LISTEN     0      128          *:1540                     *:*                   users:(("rphost",pid=1402,fd=15),("ragent",pid=1305,fd=15))
LISTEN     0      128          *:1541                     *:*                   users:(("rmngr",pid=1325,fd=12))
LISTEN     0      128         :::1560                    :::*                   users:(("rphost",pid=1402,fd=22))
LISTEN     0      128         :::1540                    :::*                   users:(("rphost",pid=1402,fd=14),("ragent",pid=1305,fd=14))
LISTEN     0      128         :::1541                    :::*                   users:(("rmngr",pid=1325,fd=11))

sudo service aksusbd status
● aksusbd.service - Sentinel LDK Runtime Environment (aksusbd daemon)
   Loaded: loaded (/etc/systemd/system/aksusbd.service; enabled; vendor preset: enabled)
   Active: active (running) since Пт 2018-08-31 19:02:54 MSK; 5min ago
  Process: 856 ExecStart=/usr/sbin/aksusbd_x86_64 (code=exited, status=0/SUCCESS)
 Main PID: 858 (aksusbd_x86_64)
    Tasks: 3
   Memory: 544.0K
      CPU: 2ms
   CGroup: /system.slice/aksusbd.service
           └─858 /usr/sbin/aksusbd_x86_64

авг 31 19:02:54 ufo systemd[1]: Starting Sentinel LDK Runtime Environment (aksusbd daemon)...
авг 31 19:02:54 ufo aksusbd[858]: loaded, daemon version: 7.81.1.80357, key API (USB) version: 3.88 (parallel driver not avail
авг 31 19:02:54 ufo systemd[1]: Started Sentinel LDK Runtime Environment (aksusbd daemon).
      

$ sudo poweroff

Здесь полезно сделать "консервы".
До подключения базы 1с легко менять ip адрес и название сервера.
Сделаем выгрузку post10.ova

Перезагрузимся, если не делали выгрузку или просто загрузим виртуалку.


Можно подключать базу 1С postgres пароль pass
(вместо astra имя своего сервера)




Для 32 Gb RAM иначе не запустится!!!

sudo cp  /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak 
sudo nano  /etc/postgresql/10/main/postgresql.conf

Заменить:


Сохранить.

$ sudo systemctl restart postgresql.service
$ sudo systemctl restart srv1cv83.service 
.
$ nano changeip.sh

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

#!/bin/bash
# настройка ip и hostname
#----------------------------------------------------------------------
_hostname="kamin"
# real computer
#_iface="enp0s31f6"
# kvm iface
#_iface="ens3"
# virtualbox iface
#_iface="enp0s3"
_iface="enp1s0"
_address="192.168.1.95"
_gateway="192.168.1.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
$_address       $_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

суббота, 25 августа 2018 г.

Настройка postgres.conf для решений 1С

PostgreSQL Vacuum

Антон Дорошкевич и другие youtube.com

Анализ технологического журнала 1С с помощью регулярных выражений

вторник, 21 августа 2018 г.

SSD Total Bytes Written

SSD Total Bytes Written Calculator
Обзор SSD Samsung 850 EVO на базе 3D NAND: быстрый, долговечный, массовый
Обзор SSD Samsung 850 Pro: рождение новой звезды?
Надёжность SSD: результаты ресурсных испытаний [обновлено 21.08.18]
Samsung 850 EVO v2
Обзор SSD-накопителя Samsung 860 EVO: и нашим и вашим


Твердотельные диски становятся все более распространенными. Проблема, связанная с SSD, - ограниченное время жизни. В зависимости от их технологии изготовления каждая ячейка может быть перезаписана с 1000 раз в пользовательских TLC SSD до 100 000 раз на корпоративных SSD-устройствах на базе SLC.

Ценность, на которую следует обратить внимание, - это гарантированное TBW (Total Bytes Written или Terabytes Written), которое обычно предоставляется поставщиком в их спецификациях. Это значение описывает, сколько терабайт может быть записано на устройство до истечения срока гарантии. Значение TBW можно считывать с помощью SMART в поле Total_LBAs_Written . Значение находится в LBA, которое необходимо умножить на размер сектора и соответственно разделить для получения результата:
на 1024 в Kb
на 1024*1024 в Mb
на 1024*1024*1024 в Gb

$ sudo apt install smartmontools
$ find /dev -name 'sd*'
/dev/sda

$ sudo smartctl -i /dev/sda


$ sudo smartctl -A /dev/sda


$ sudo smartctl /dev/sda --all |grep "Sector Size"


$ sudo smartctl /dev/sda --all | grep Total_LBAs_Written


Паспортное значение  Samsung SSD 850 EVO 1TB - 150 TB
Паспортное значение  Samsung SSD 850 EVO 250GB - 75 TB
Делаем выводы.

Другой диск 22.08.2018 10:00



Оценка состояния сервера при использовании ОС Linux

$ uptime   # По сути, вам нужен для того, чтобы увидеть load average
$ dmesg | tail  #Нам нужно понять, были ли ошибки ядра.
$ vmstat 1  #Можно увидеть общую статистику во времени каждую секунду, посмотреть
по-крупному, что происходит.
$ mpstat -P ALL 1 #Попробовать увидеть загрузку CPU по ядрам.
$ pidstat 1  #Узнаем использование процессами ресурсов.
$ sudo apt install sysstat
$ iostat -xz 1 #Сможем увидеть disk I/O.
$ free -m  #Сможем увидеть использование памяти.
$ sar -n DEV 1  #Сможем увидеть network I/O.
$ sar -n TCP,ETCP 1  #Увидим статистику по TCP.
$ top  #По-крупному увидим, какие процессы какой объем ресурсов потребляют.

$ tload  #Смотреть нагрузку процессора в динамике
$ perl -e 'while(1){}'  #Загрузить ядро на 100%
-----------------------------------------------------------------------------------------
Проверка SSD
-----------------------------------------------------------------------------------------
Температура ядер
$ sudo apt install lm-sensors
#$ sudo sensors-detect
$ sensors


$ perl -e 'while(1){}'  #Загрузить ядро на 100%


.

# ps aux --sort -%mem | awk '{print $6/1024 " MB\t\t" $11}' | head -n20
0 MB            COMMAND
2210.54 MB              /opt/1C/v8.3/x86_64/rphost
1125.74 MB              postgres:
344.141 MB              /usr/lib/postgresql/10/bin/postgres
283.16 MB               postgres:
226.902 MB              /opt/1C/v8.3/x86_64/rmngr
109.016 MB              postgres:
58.6758 MB              postgres:
29.0547 MB              /opt/1C/v8.3/x86_64/ragent
24.0352 MB              /usr/lib/snapd/snapd
20.9375 MB              postgres:
16.0938 MB              /lib/systemd/systemd-journald
15.2031 MB              /usr/sbin/smbd
9.12109 MB              /usr/sbin/nmbd
7.91016 MB              postgres:
7.375 MB                postgres:
6.8125 MB               sshd:
6.63672 MB              postgres:
6.57422 MB              sshd:
6.375 MB                /usr/lib/accountsservice/accounts-daemon


Скрипт выводящий на экран основные параметры сервера:

установка дополнительных программ:

$ sudo apt install sysstat lm-sensors smartmontools

$ nano /home/user/sysinfo.sh

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

#!/bin/sh
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
#FILE= 'sys_$DATA.txt'
echo "---------------------------------------------------------------------------------------"
echo $DATA  >> sysinfo.txt
#echo  '12345'  > sys_$DATA.txt
echo "---------------------------------------------------------------------------------------"
echo "uptime"
uptime
echo "---------------------------------------------------------------------------------------"
echo "free -m"
free -m
echo "---------------------------------------------------------------------------------------"
echo "df -h"
df -h
echo "---------------------------------------------------------------------------------------"
echo "Размер папки с логами postgresql:"
echo "du -h -s /var/lib/postgresql/9.6/main/pg_log"
du -h -s /var/lib/postgresql/9.6/main/pg_log
echo "---------------------------------------------------------------------------------------"
echo "Размер папки с базами postgresql:"
echo "du -h -s /var/lib/postgresql/9.6/main/base"
du -h -s /var/lib/postgresql/9.6/main/base
echo "---------------------------------------------------------------------------------------"
echo "Размер папки с логами технологического журнала 1с:"
echo "du -h -s  /home/usr1cv8/log"
du -h -s  /home/usr1cv8/log
echo "---------------------------------------------------------------------------------------"
echo "Размер папки с dumps 1с:"
echo "du -h -s  /dumps"
du -h -s  /dumps
echo "---------------------------------------------------------------------------------------"
echo "sensors"
sensors
echo "---------------------------------------------------------------------------------------"
echo "iostat -xz"
iostat -xz
echo "---------------------------------------------------------------------------------------"
echo "sar -r 1 1"
sar -r 1 1
echo "---------------------------------------------------------------------------------------"
echo "ps aux --sort -%mem | awk '{print $6/1024 " MB\t\t" $11}' | head -n10"
ps aux --sort -%mem | awk '{print $6/1024 " MB\t\t" $11}' | head -n10
#echo "---------------------------------------------------------------------------------------"
#echo "cat /proc/meminfo"
#cat /proc/meminfo
#echo "---------------------------------------------------------------------------------------"
#echo "mpstat -P ALL"
#mpstat -P ALL
echo "---------------------------------------------------------------------------------------"
echo "smartctl -A /dev/sda"
smartctl -A /dev/sda
echo "---------------------------------------------------------------------------------------"

Сохранить.
$ sudo sh /home/user/sysinfo.sh

Настройка Postfix для отправки почты через yandex
Базовый траблшутинг Linux систем [GeekBrains]


.

понедельник, 20 августа 2018 г.

Бэкап и восстановление базы 1С в бд postgresql, обслуживание базы, чистка логов PostgreSQL

Бэкап и восстановление базы 1С в бд postgresql, обслуживание базы
Опыт обслуживания базы 1С в PostgreSQL
Резервное копирование баз данных PostgreSQL
24.1. Дамп SQL

Может возникнуть ситуация при которой файл .dt будет выгружаться средствами 1с,
но при обратной загрузке или загрузке в файловую базу, загружаться не будет (при ошибках в базе).
Файл .dt может считаться бэкапом только при условии проверки загрузки!
Поэтому необходимо организовать бэкап средствами базы данных.
/home/user/test/ - папка с доступом по ftp (test test) (ранее подготовлена)

Подготовка:
$ sudo mkdir /home/user/test/backup
$ sudo chmod -R 777 /home/user/test/backup
$ sudo apt-get -y install pigz


Бэкап с архивированием:
$ sudo su - postgres
$ pg_dump demo | pigz > /home/user/test/backup/demo.sql.gz

Разархивирование с сохранением архива
$ sudo su - postgres
$ unpigz -c /home/user/test/backup/demo.sql.gz > /home/user/test/backup/demo.sql


Создадим базу demotest (если еще не создана)
$ sudo su - postgres
$ createdb --username postgres -T template0 demotest

Восстановим в базу demotest:
$ psql -l
$ unpigz -c /home/user/test/backup/demo.sql.gz > /home/user/test/backup/demo.sql
$ psql demotest < /home/user/test/backup/demo.sql

Подключимся к базе средствами 1С:



Базу demotest можно оставить для регулярного тестирования бэкапов.

Убьем базу demotest:
sudo su - postgres
$ dropdb demotest
$ psql -l

-----------------------------------------------------------------------------------------------------------------
Для автоматического создания бекапов:
Зададим папку, если не делали раньше,
см. начало статьи!

Папка с бэкапами будет доступна по ftp (test test)
Подготовка:
$ sudo mkdir /home/user/test/backup
$ sudo chmod -R 777 /home/user/test/backup
$ sudo apt-get -y install pigz
$ sudo su - postgres
$ nano /home/user/test/backup/backup-sql.sh

Вставить:

#!/bin/sh
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup demo" >> /home/user/test/backup/backup.log

# Бэкапим базу данных demo и сразу сжимаем
/usr/bin/pg_dump demo | pigz > /home/user/test/backup/$DATA-demo.sql.gz

echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup demo" >> /home/user/test/backup/backup.log

sleep 2

echo "-------------------------------------------" >> /home/user/test/backup/backup.log

# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start vacuumdb demo" >> /home/user/test/backup/backup.log

vacuumdb --verbose --analyze --full --quiet --dbname=demo

echo "`date +"%Y-%m-%d_%H-%M-%S"` End vacuumdb demo" >> /home/user/test/backup/backup.log

echo "-------------------------------------------" >> /home/user/test/backup/backup.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log

Сохранить.

Тестовый запуск:
#$ cd /home/user/test/backup/
$ sudo su - postgres 
$ sh /home/user/test/backup/backup-sql.sh

$ sudo su - postgres
$ crontab -e
Добавить в конец (сработает в 2:01):

#01 22 * * * vacuumdb --analyze --full --quiet --dbname=demo
01 02 * * * sh /home/user/test/backup/backup-sql.sh 
Сохранить
 
Смотреть задания:
$ crontab -l

Регулярно восстанавливайте и проверяйте Бекапы средствами 1С!

Смотреть лог:
$ sudo su - postgres
$ nano /home/user/test/backup/backup.log


Если мы хотим тот же скрипт выполнить от root
модернизируем его предварительно отключив от postgres

$ sudo su - postgres
$ crontab -e
Закомментировать:
#01 22 * * * vacuumdb --analyze --full --quiet --dbname=demo
#01 02 * * * sh /home/user/test/backup/backup-sql.sh 
Сохранить
Выйти.
 
$ exit

Теперь заменим скрипт на следующий:
$ nano /home/user/test/backup/backup-sql.sh

Вставить:

#!/bin/sh
set -e
# останавливаем сервер 1С
systemctl stop  srv1cv83.service
systemctl status  srv1cv83.service >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup demo" >> /home/user/test/backup/backup.log

# Бэкапим базу данных demo и сразу сжимаем
cd /home/user/test/backup/
/bin/su postgres -c "/usr/bin/pg_dump demo | pigz > /home/user/test/backup/$DATA-demo.sql.gz"
echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup demo" >> /home/user/test/backup/backup.log
sleep 2
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start vacuumdb demo" >> /home/user/test/backup/backup.log
/bin/su postgres -c "/usr/bin/vacuumdb --verbose --analyze --full --quiet --username postgres --dbname=demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` End vacuumdb demo" >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# запускаем сервер 1Сsystemctl start  srv1cv83.service
systemctl status  srv1cv83.service >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log


Сохранить.

$ sudo -i
# crontab -e
Добавить в конец (сработает в 2:01):

01 02 * * * sh /home/user/test/backup/backup-sql.sh 
Сохранить
 
Смотреть задания:
# crontab -l

$ nano backup-sql.sh

#!/bin/sh
set -e
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
systemctl stop  srv1cv83.service
#systemctl status  srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С"  >> /home/user/test/backup/backup.log
systemctl status  srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M"`
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup demo" >> /home/user/test/backup/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo "бэкапим базу данных demo"
cd /home/user/test/backup/
/bin/su postgres -c "/usr/bin/pg_dump demo | pigz > /home/user/test/backup/$DATA-demo.sql.gz"
echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup demo" >> /home/user/test/backup/backup.log
sleep 2
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
# Записываем информацию в лог с секундами
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start vacuumdb demo" >> /home/user/test/backup/backup.log
echo "запускаем vacuum full"
/bin/su postgres -c "/usr/bin/vacuumdb --verbose --analyze --full --quiet --username postgres --dbname=demo"
echo "`date +"%Y-%m-%d_%H-%M-%S"` End vacuumdb demo" >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
echo "`date +"%Y-%m-%d_%H-%M-%S"` Size database file: " >> /home/user/test/backup/backup.log
du -h -s /var/lib/postgresql/9.6/main/base  >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
sleep 2
# запускаем сервер 1С
echo "запускаем сервер 1С"
systemctl start  srv1cv83.service
#systemctl status  srv1cv83.service >> /home/user/test/backup/backup.log
echo "состояние сервера 1С"  >> /home/user/test/backup/backup.log
systemctl status  srv1cv83.service | grep 'Active:' >> /home/user/test/backup/backup.log
echo "-------------------------------------------" >> /home/user/test/backup/backup.log
echo "закончено"


воскресенье, 19 августа 2018 г.

CentOS 7.5 установка PostgreSQL, версия 9.6.7-1.1C

CentOS 7.5 1С:Предприятие 8.3.13.1513 PostgreSQL, версия 10.3-3.1C 
CentOS-7-x86_64-DVD-1804.iso
Репозитарий
Обновление ядра в CentOS до последней версии
How to Install or Upgrade to Kernel 4.17 in CentOS 7

1. Не забыть при установке включить сетевой адаптер!
(включается вручную)
2. Пароль root не задаем, создаем пользователя user, c правами администратора

После перезагрузки
$ ip a
узнае ip далее заходим по ssh

$ uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

Обновимся:
$ sudo yum -y update
$ sudo yum -y install epel-release
$ sudo yum -y install nano mc wget net-tools

Узнать ip:

$ ip addr
inet 192.168.1.194/24

Настройка сети:
$ sudo cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s3.bak
$ sudo nano /etc/sysconfig/network-scripts/ifcfg-enp0s3


TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="440b97fb-010b-454c-8759-fcab6a03170b"
DEVICE="enp0s3"
ONBOOT="yes"

Отредактировать:

TYPE="Ethernet"
PROXY_METHOD="none"
DNS1="192.168.1.1"
IPADDR0="192.168.1.194"
PREFIX0=24
GATEWAY0="192.168.1.1"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"

NAME="enp0s3"
UUID="440b97fb-010b-454c-8759-fcab6a03170b"
DEVICE="enp0s3"
ONBOOT="yes"

Сохранить.

Посмотрим, что использует ip6:


$ netstat -tulnp
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 ::1:25                  :::*                    LISTEN      -
udp        0      0 127.0.0.1:323           0.0.0.0:*                           -
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -
udp6       0      0 ::1:323                 :::*                                -

Отключим ip6

$ sudo nano /etc/sysctl.conf

Добавим в конец:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Сохранить.

$ sudo nano /etc/hostname

Изменить имя

centos

Сохранить.

Вписываем имя хоста (centos) в /etc/hosts:
$ sudo cp /etc/hosts /etc/host.bak

$ sudo nano /etc/hosts

Изменить:

#127.0.0.1   localhost
#192.168.0.62 centos
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 centos

Сохранить.

Вписываем (проверяем) имя хоста в /etc/sysconfig/network:

$ sudo nano /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=centos

Сохранить.
$ sudo service network restart
$ ping centos

Настроим netbios name centos

$ sudo yum -y install samba
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
#$ sudo nano /etc/samba/smb.conf


$ sudo systemctl enable smb.service
$ sudo systemctl enable nmb.service
$ sudo systemctl restart smb.service
$ sudo systemctl restart nmb.service


!!!Откроем сетевой экран:
!!!# firewall-cmd --permanent --zone=public --add-service=samba
!!!# firewall-cmd --reload

Наша цель что бы сервер откликался по имени, детальная настройка samba по ссылке:
Анонимный доступ средствами samba

Отключить firewall centos 7
Отключаем файрволл (сервер внутри сети, в угоду простоте не будем заморачиваться):
$ sudo systemctl status firewalld
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld

Отключаем SELinux — в файле /etc/sysconfig/selinux присваиваем параметру SELINUX флаг disabled:
$ sudo nano /etc/sysconfig/selinux

Редактируем:

#SELINUX=enforcing
SELINUX=disabled

Сохранить.

$ sudo poweroff

Создаем образ centos.ova (существующий образ без выделенного красным)

#$ sudo yum install readline #стоит
#$ sudo yum install libtermcap #нет такого
#$ sudo yum install krb5-libs #стоит
#$ sudo yum install openssl #стоит
#$ sudo yum install libicu50 # нет такого


$ sudo yum install libicu-devel
$ sudo yum -y install bzip2


$ mkdir -p /tmp/post

$ cp /home/user/test/postgresql_9.6.7_1.1C_x86_64_rpm.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_9.6.7_1.1C_x86_64_addon_rpm.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_9.6.7_1.1C_x86_64_rpm.tar.bz2
$ cd postgresql-9.6.7-1.1C_x86_64_rpm
$ sudo yum localinstall -y *.rpm
$ cd /tmp/post/
$ tar -xvf postgresql_9.6.7_1.1C_x86_64_addon_rpm.tar.bz2
$ cd postgresql-9.6.7-1.1C_x86_64_addon_rpm
$ sudo yum localinstall -y *.rpm
$ sudo su - postgres
-bash-4.2$ /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data --locale=ru_RU.UTF-8
-bash-4.2$ /usr/pgsql-9.6/bin/pg_ctl -D /var/lib/pgsql/9.6/data -l logfile start
-bash-4.2$ /usr/pgsql-9.6/bin/psql
postgres=# ALTER USER postgres WITH PASSWORD 'pass'
postgres=# \q
-bash-4.2$ psql -l
-bash-4.2$ exit
$ sudo reboot

$ sudo service postgresql-9.6 start
$ sudo chkconfig postgresql-9.6 on
$ sudo service postgresql-9.6 status


$ netstat -tunpl | grep 5432


Добавляем необходимые шрифты и прочие утилиты:

Get Microsoft's Core Fonts for the Web and Cleartype Fonts

$ sudo yum -y install xorg-x11-fonts-Type1 xorg-x11-fonts-truetype
$ sudo yum install -y curl cabextract xorg-x11-font-utils fontconfig
$ sudo rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm



Для 1с
$ sudo yum -y install ImageMagick glib2-devel unixODBC libmspack
$ sudo yum -y install libgsf
$ mkdir -p /tmp/1c
$ cp /home/user/test/client_8_3_12_1595.rpm64.tar.gz /tmp/1c
$ cp /home/user/test/rpm64_8_3_12_1595.tar.gz /tmp/1c
$ cd /tmp/1c
$ tar xvzf client_8_3_12_1595.rpm64.tar.gz
$ tar xvzf rpm64_8_3_12_1595.tar.gz

Веб сервер не устанавливается 8.3.12.1595
код ошибки 1с 10200637

$ sudo yum install 1C_Enterprise83-common-8.3.12-1595.x86_64.rpm
$ sudo yum install 1C_Enterprise83-server-8.3.12-1595.x86_64.rpm
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
Зададим пароль pass
$ sudo passwd usr1cv8
Запустим сервер
$ sudo service srv1cv83 start
$ sudo chkconfig srv1cv83 on
$ sudo reboot
$ sudo service srv1cv83 status


$ netstat -tlnp | grep :15


$ sudo cp /var/lib/pgsql/9.6/data/postgresql.conf  /var/lib/pgsql/9.6/data/postgresql.conf.bak
Установка hasp
Sentinel HASP LDK RedHat and SuSE RPM Run-time Installer

$ mkdir -p /tmp/hasp
$ cp /home/user/test/Sentinel_LDK_RedHat_and_SuSE_RPM_Run-time_Installer.tar.gz /tmp/hasp
$ cd /tmp/hasp
$ tar xvzf Sentinel_LDK_RedHat_and_SuSE_RPM_Run-time_Installer.tar.gz
$ cd Sentinel_LDK_RedHat_and_SuSE_RPM_Run-time_Installer
$ sudo yum install aksusbd-7.81-1.x86_64.rpm
$ sudo poweroff

Создаем образ cpost1c.ova

/etc/sysconfig/srv1cv83 - файл конфигурации сервера 1С
/home/usr1cv8/.1cv8/1C/1cv8/1cv8wsrv.lst - файл, в котором хранятся основные свойства сервера - например, учётные данные администратора сервера, зарегистрированые кластеры и т.п.
/home/usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst - файл, в котором хранятся свойства кластера по умолчанию
/opt/1C/v8.3/x86_64/ - (вместо "x86_64" может быть "i386" - в зависимости от архитектуры системы) исполняемые файлы и сопутствующие ресурсы сервера (и клиента) 1С
/var/1C/licenses - здесь лежат файлы электронных ключей лицензий


Копировать postgresql.conf
$ sudo cp /var/lib/pgsql/9.6/data/postgresql.conf  /var/lib/pgsql/9.6/data/postgresql.conf.bak
!!!sudo cp /var/lib/pgsql/9.6/data/postgresql.conf.bak  /var/lib/pgsql/9.6/data/postgresql.conf
$ sudo cp /var/lib/pgsql/9.6/data/postgresql.conf  /var/lib/pgsql/9.6/data/postgresql.conf.bak-1

Пример  postgresql.conf  для 32 Gb RAM
$ sudo nano /var/lib/pgsql/9.6/data/postgresql.conf

Заменить:

#----------------------------------------------------------------------
listen_addresses = '*'        # what IP address(es) to listen on;
dynamic_shared_memory_type = posix    # the default is the first option
log_destination = 'stderr'        # Valid values are combinations of
log_rotation_age = 1d            # Automatic rotation of logfiles will
datestyle = 'iso, dmy'
timezone = 'W-SU'
lc_messages = 'ru_RU.UTF-8'            # locale for system error message
lc_monetary = 'ru_RU.UTF-8'            # locale for monetary formatting
lc_numeric = 'ru_RU.UTF-8'            # locale for number formatting
lc_time = 'ru_RU.UTF-8'                # locale for time formatting
default_text_search_config = 'pg_catalog.russian'
#----------------------------------------------------------------------
effective_cache_size = '12288MB'
work_mem = '32MB'
shared_buffers = '12288MB'
maintenance_work_mem = '512MB'
temp_buffers = '32MB'
#temp_tablespaces = 'user_temp'
max_files_per_process = '24576'
autovacuum_max_workers = '4'
autovacuum_analyze_scale_factor = '0.01'
autovacuum_vacuum_scale_factor = '0.02'
random_page_cost = '1.5'
log_statement = 'none'
#----------------------------------------------------------------------
log_filename = 'postgresql-%Y-%m-%d.log'
log_rotation_size = '0'
log_timezone = 'W-SU'
log_truncate_on_rotation = 'on'
logging_collector = 'on'

shared_preload_libraries = 'online_analyze, plantuner, auto_explain'

online_analyze.enable = off
online_analyze.verbose = off
online_analyze.table_type = 'temporary'
online_analyze.scale_factor = 0.3
online_analyze.min_interval = 10000
online_analyze.threshold = 500
online_analyze.local_tracking = on


cpu_operator_cost = 0.0005
plantuner.fix_empty_table = on

autovacuum_naptime = '20' # s
#autovacuum_analyze_threshold = 20

bgwriter_delay = '10' # ms
bgwriter_lru_maxpages = '800'
bgwriter_lru_multiplier = '8'

# storage specific
effective_io_concurrency = '2'
random_page_cost = '2'

checkpoint_completion_target = 0.9
#checkpoint_segments = '128'
max_connections = '1000'

synchronous_commit = 'off'
commit_delay = '1000'

# 1C specific
escape_string_warning = 'off'
standard_conforming_strings = 'off'
max_locks_per_transaction = '256'
#work_mem = 65536

# pgbadger

log_directory = 'pg_log'
#log_directory = '/var/log/pgsql'
#log_filename = 'postgresql.log'
log_min_duration_statement = 0s
log_autovacuum_min_duration = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0

# backup
max_wal_senders = 4
wal_level = hot_standby
wal_keep_segments = 1024
#----------------------------------------------------------------------

Сохранить.

$ sudo reboot

среда, 15 августа 2018 г.

Перемещение каталога данных PostgreSQL в Ubuntu 16.04

Подключить базу 1С на windows


Если нужно подключиться к папке на windows 10
How to share between ubuntu 18.04 LTS and Windows 10
Монтирование расшаренных windows-ресурсов в Linux через CIFS
MountWindowsSharesPermanently
How to configure Samba to use SMBv2 and disable SMBv1 on Linux or Unix


Если не стоит samba
$ sudo apt install smbclient
$ sudo nano /etc/samba/smb.conf

Добавить после workgroup - "client max protocol = NT1 "

[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKGROUP
   client max protocol = NT1
 
Сохранить

Перегрузить samba или

$ sudo reboot

Посмотреть share

$ smbclient -L //192.168.0.2
WARNING: The "syslog" option is deprecated
Enter WORKGROUP\user's password:

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Удаленный Admin
        C$              Disk      Стандартный общий ресурс
        CanonLBP6020    Printer   Canon LBP6020
        D$              Disk      Стандартный общий ресурс
        E$              Disk      Стандартный общий ресурс
        IPC$            IPC       Удаленный IPC
        print$          Disk      Драйверы принтеров
        V8$             Disk
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.0.2 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available


$ sudo apt install cifs-utils
$ sudo mkdir /media/winshare
$ sudo chown -R nobody:nogroup /media/winshare
$ sudo chmod -R 0777 /media/winshare

$ sudo mount -t cifs //192.168.0.2/v8$/ /media/winshare -o username=user,password=12345,uid=nobody,iocharset=utf8,file_mode=0777,dir_mode=0777

Размонтируем так:
$ sudo mount -a

Так не работает (работало в 16.04):
$ sudo mount -t cifs //192.168.0.2/v8$/ /media/winshare -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777

mount error(13): Permission denied


Подключим автомонтирование:
$ sudo nano /etc/fstab
Добавить в конец
//192.168.0.2/v8$/ /media/winshare cifs username=user,password=12345,uid=nobody,iocharset=utf8,file_mode=0777,dir_mode=0777


Для того, чтобы проверить корректно ли монтируется shared-папка из fstab без перезагрузки нужно выполнить такую команду:

sudo mount -a

вторник, 14 августа 2018 г.

Стабильные релизы 1С:Предприятие 8.3

Пробуйте сами ;-)
Но можно подглядеть здесь

Управление сервером 1С:Предприятие 8.3

Глава 5. Администрирование

Бывает необходимо установить обновления конфигурации 1С, размещенной на сервере 1С:Предприятие 8.3 мешают фоновые регламентные задания.

Подключиться из под windows и создать центральный сервер (только один раз)


Задать имя с сервером 1с (сервер с Linux)

Создать администратора:


Задать имя и пароль администратора
.

Выбрать свойство информационной базы (по правой кнопке мыши или в меню действия)


В свойствах информационной базы установить галку - "Блокировка регламентных заданий включена" и нажать ОК.



.

понедельник, 13 августа 2018 г.

Установка 1С 8.3.12.1529 СУБД PostgreSQL 9.6.9 от postgrespro.ru ubuntu desktop 18.04.1

В статье опишем установку сервера и клиента 1С 8.3.12.1529 с СУБД PostgreSQL 9.6.9 от postgrespro.ru на ubuntu desktop 18.04.1 на virtualbox.

Нам потребуется (все 64 бит):
1. ubuntu 18.04.1
2. 1С берем на сайте 8.3.12.1529 при наличии договора ИТС
3. PostgreSQL 9.6.9 для Ubuntu 18.04 от postgrespro.ru 
4.  Фонты берем etersoft по кнопке получить (после бесплатной регистрации wine.local для ubuntu 16.04 64 бит)
5. Драйверы hasp берем у производителя
Качаем последний драйвер 7.81  (через wget не скачть!)

1. Устанавливаем ubuntu 18.04.1 desktop.

Настройки виртуальной машины - RAM (32GB), проброс hasp.
Сеть - сетевой мост.

Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.

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

$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install ssh mc samba -y
$ sudo reboot -y

Фича Ubuntu18.04 в том, что при обращении по имени к серверу, например ud1804,  для ping, ssh, (имя сервера 1С)  добавляем к имени .local, т.е. ud1804.local .


Как настроить статический IP-адрес в Ubuntu 18.04

Настроить энергосбережение на высокую производительность, на реальной машине.
Set CPU governor to performance in 18.04

Настроить xrdp

Установка ftp

$ sudo nano install_ftp.sh

Вставить:

#!/bin/sh
# Настройка ftp пользователь: test пароль: test
sudo apt install pure-ftpd -y
sudo groupadd ftpgroup
sudo usermod -aG ftpgroup user
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo mkdir /home/user/test
sudo chown -R user:ftpgroup /home/user/test
#sudo pure-pw useradd test -u user -d /home/user/test
# Заведем пользователя ftp test с паролем test
sudo echo -e "test\ntest\n" | sudo pure-pw useradd test -u user -d /home/user/test
sudo pure-pw mkdb
sudo service pure-ftpd restart

Сохранить.

$ sudo sh install_ftp.sh

Установка PostgreSQL от postgrespro.ru ( postgresql-pro-1c-9.6)

$ nano install_postgresql-pro-1c-9.6.sh

Вставить:

#!/bin/sh
sudo apt-get update -y
sudo apt-get install -y wget gnupg2
sudo sh -c 'echo "deb http://1c.postgrespro.ru/archive/2018_06_09/deb bionic main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --no-verbose -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C| sudo apt-key add - && sudo apt-get update 
sudo apt-get update -y
if sudo dpkg -s libpq5 2>/dev/null; then sudo apt-get remove -y libpq5; fi
sudo apt-get install -y libpq5=9.6.*.1C.bionic
sudo apt-get install -y postgresql-pro-1c-9.6
sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf.bak

Сохранить:

$ sudo sh install_postgresql-pro-1c-9.6.sh

Проверка работы:
$ sudo systemctl status postgresql.service


$ ss -tunpl | grep 5432


# установка 1с
Проверям hasp
$ lsusb


Переименовываем deb64.tar.gz client.deb64.tar.gz
Загружаем по ftp:

deb64.tar.gz
client.deb64.tar.gz
fonts-ttf-ms_1.0-eter4ubuntu_all.deb
aksusbd_7.81-1_amd64.deb

 


$ nano install_1c.sh

Вставить:

#!/bin/sh
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 -y xfonts-utils cabextract
# фонты от Etersoft
#ubuntu
cp /home/user/test/fonts-ttf-ms_1.0-eter4ubuntu_all.deb /tmp/1ctmp
sudo dpkg -i fonts-ttf-ms_1.0-eter4ubuntu_all.deb
#sudo apt -f -y install
cp /home/user/test/deb64.tar.gz /tmp/1ctmp
cp /home/user/test/client.deb64.tar.gz /tmp/1ctmp
tar xvzf deb64.tar.gz
tar xvzf client.deb64.tar.gz
sudo dpkg -i 1c*.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
#установка hasp
mkdir /tmp/hasp
cd /tmp/hasp
cp /home/user/test/aksusbd_7.81-1_amd64.deb  /tmp/hasp
sudo dpkg -i aksusbd_7.81-1_amd64.deb
#sudo reboot

Сохранить.

$ sudo sh install_1c.sh

Проверка работы 1с:
$ sudo service srv1cv83 status


 $ ss -tlnp | grep :15


$ sudo service aksusbd status


$ sudo ss -tlnp | grep apc
LISTEN     0      5      127.0.0.1:3551                     *:*                   users:(("apcupsd",pid=1354,fd=4))

$ sudo ss -tlnp | grep hasp
LISTEN     0      128          *:1947                     *:*                   users:(("hasplmd",pid=1002,fd=9))


$ sudo reboot
На виртуальной машине самое время сохранить образ.

Под windows для корректной работы нужно прописать в hosts ip адрес linux сервера
 c:\Windows\System32\drivers\etc\hosts

192.168.0.125    ud1804

Создаем новую базу одинаково w/l:



В утилите администрирования сервера 1С, если подключаться по ud1804.local, выдает ошибку, хотя база подключается по ud1804.local.

 
Поэтому подключаемся по имени сервера ud1804 для корректной работы прописав в hosts ip адрес linux сервера
 c:\Windows\System32\drivers\etc\hosts

192.168.0.125    ud1804
.

воскресенье, 12 августа 2018 г.

Set CPU governor to performance in 18.04

PGConf.Russia 2018

ubuntu 18.04.1 xrdp

Новая статья:

Ubuntu 18.04.2 — RDP Server за 1 минуту 

xRDP – Install xRDP the easy way (Scripted Installation – Version 0.4)
скрипт

$ nano Std-Xrdp-Install-0.4.sh
Скопировать  и вставить техт ниже:

#####################################################################################################
# Script_Name : Std-Xrdp-install-0.4.sh
# Description : Perform an automated standard installation of xrdp
# on ubuntu 17.10 and later
# Date : May 2018
# written by : Griffon
# Web Site :http://www.c-nergy.be - http://www.c-nergy.be/blog
# Version : 0.4
# History : 0.4 - Add logic to fix GDM lock screen + minor change
#         : 0.3 - Adding logic to fix theme and extensions for any users login through xrdp
#           0.2 - Added Logic for Ubuntu 17.10 and 18.04 detection
#               - Updated the polkit section
#               - New formatting and structure 
#           0.1 - Initial Script      
# Disclaimer : Script provided AS IS. Use it at your own risk....
####################################################################################################

echo
/bin/echo -e "\e[1;36m#-------------------------------------------------------------#\e[0m"
/bin/echo -e "\e[1;36m#   Standard XRDP Installation Script  - Ver 0.4              #\e[0m"
/bin/echo -e "\e[1;36m#   Written by Griffon - June 2018 - www.c-nergy.be           #\e[0m"
/bin/echo -e "\e[1;36m#-------------------------------------------------------------#\e[0m"
echo

#---------------------------------------------------#
# Step 0 - Try to Detect Ubuntu Version....
#---------------------------------------------------#

echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Detecting Ubuntu version                  # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

version=$(lsb_release -d | awk -F":" '/Description/ {print $2}')

if [[ "$version" = *"Ubuntu 17.10"* ]] || [[ "$version" = *"Ubuntu 18.04"* ]];
then
echo
/bin/echo -e "\e[1;32m.... Ubuntu Version :$version\e[0m"
/bin/echo -e "\e[1;32m.... Supported version detected....proceeding\e[0m"

else
/bin/echo -e "\e[1;31m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"
/bin/echo -e "\e[1;31mYour system is not running Ubuntu 17.10 Edition.\e[0m"
/bin/echo -e "\e[1;31mThe script has been tested only on Ubuntu 17.10...\e[0m"
/bin/echo -e "\e[1;31mThe script is exiting...\e[0m"
/bin/echo -e "\e[1;31m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"
echo
#exit
fi

#---------------------------------------------------#
# Step 1 - Install xRDP Software....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Installing XRDP Packages...Proceeding...  # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

sudo apt-get install xrdp -y

#---------------------------------------------------#
# Step 2 - Install Gnome Tweak Tool....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Installing Gnome Tweak...Proceeding...    # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

sudo apt-get install gnome-tweak-tool -y

#---------------------------------------------------#
# Step 3 - Allow console Access ....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Granting Console Access...Proceeding...   # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config

#---------------------------------------------------#
# Step 4 - create policies exceptions ....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Creating Polkit File...Proceeding...      # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

sudo bash -c "cat >/etc/polkit-1/localauthority/50-local.d/45-allow.colord.pkla" <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

#---------------------------------------------------#
# Step 5 - Fixing Theme and Extensions ....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Fix Theme and extensions...Proceeding...  # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo

#Check if script has already run....
if grep -xq "#fixGDM-by-Griffon" /etc/xrdp/startwm.sh; then
 echo "Skip theme fixing as script has run at least once..."
else
#Set xRDP session Theme to Ambiance and Icon to Humanity
sudo sed -i.bak "4 a #fixGDM-by-Griffon\ngnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com\ngnome-shell-extension-tool -e ubuntu-dock@ubuntu.com\n\nif [ -f ~/.xrdp-fix-theme.txt ]; then\necho 'no action required'\nelse\ngsettings set org.gnome.desktop.interface gtk-theme 'Ambiance'\ngsettings set org.gnome.desktop.interface icon-theme 'Humanity'\necho 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt\nfi\n" /etc/xrdp/startwm.sh
fi
echo

#---------------------------------------------------#
# Step 6 - Fix GDM Lock screen color ....
#---------------------------------------------------#

#Detect if argument passed
ARGS=$1
echo $ARGS

if [ "$ARGS" = "--fixGDM" ];
then
echo
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
/bin/echo -e "\e[1;33m!   Fix for GDM Lock Screen color...          # \e[0m"
/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
echo
# Step 1 - Install prereqs for compilation later on
sudo apt-get -y install libglib2.0-dev-bin
sudo apt-get -y install libxml2-utils

# extract gresource info (from url...)
workdir=${HOME}/shell-theme
if [ ! -d ${workdir}/theme ]; then
  mkdir -p ${workdir}/theme
  mkdir -p ${workdir}/theme/icons

fi
gst=/usr/share/gnome-shell/gnome-shell-theme.gresource

for r in `gresource list $gst`; do
        gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/}
done

/bin/echo -e "\e[1;33m  -->Creating XML File...   \e[0m"
# create the xml file
bash -c "cat >${workdir}/theme/gnome-shell-theme.gresource.xml" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/theme">
    <file>calendar-arrow-left.svg</file>
    <file>calendar-arrow-right.svg</file>
    <file>calendar-today.svg</file>
    <file>checkbox-focused.svg</file>
    <file>checkbox-off-focused.svg</file>
    <file>checkbox-off.svg</file>
    <file>checkbox.svg</file>
    <file>close-window.svg</file>
    <file>close.svg</file>
    <file>corner-ripple-ltr.png</file>
    <file>corner-ripple-rtl.png</file>
    <file>dash-placeholder.svg</file>
    <file>filter-selected-ltr.svg</file>
    <file>filter-selected-rtl.svg</file>
    <file>gnome-shell.css</file>
    <file>gnome-shell-high-contrast.css</file>
    <file>logged-in-indicator.svg</file>
    <file>no-events.svg</file>
    <file>no-notifications.svg</file>
    <file>noise-texture.png</file>
    <file>page-indicator-active.svg</file>
    <file>page-indicator-inactive.svg</file>
    <file>page-indicator-checked.svg</file>
    <file>page-indicator-hover.svg</file>
    <file>process-working.svg</file>
    <file>running-indicator.svg</file>
    <file>source-button-border.svg</file>
    <file>summary-counter.svg</file>
    <file>toggle-off-us.svg</file>
    <file>toggle-off-intl.svg</file>
    <file>toggle-on-hc.svg</file>
    <file>toggle-on-us.svg</file>
    <file>toggle-on-intl.svg</file>
    <file>ws-switch-arrow-up.png</file>
    <file>ws-switch-arrow-down.png</file>
  </gresource>
</gresources>
EOF
cd ${workdir}/theme
/bin/echo -e "\e[1;33m  -->Modify Css...   \e[0m"
sed -i -e 's/background: #2e3436/background: #2c00e1/g' ~/shell-theme/theme/gnome-shell.css

##Delete the file noise-texture.png (grey one)
rm ${workdir}/theme/noise-texture.png

/bin/echo -e "\e[1;33m  -->Download Purple image file...   \e[0m"
#Download the noise-texture.png with purple background
wget http://www.c-nergy.be/downloads/noise-texture.png

/bin/echo -e "\e[1;33m  -->Compile Resource File...   \e[0m"
#Compile file and copy to correct location....
cd ${workdir}/theme
glib-compile-resources gnome-shell-theme.gresource.xml

/bin/echo -e "\e[1;33m  -->Copy file to target location...   \e[0m"

# make a backup of the file and copy the file....
sudo cp /usr/share/gnome-shell/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource.bak
sudo cp ${workdir}/theme/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource
echo
#echo
#/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
#/bin/echo -e "\e[1;33m!   REBOOT YOUR SYSTEM TO APPLY CHANGES  ...  # \e[0m"
#/bin/echo -e "\e[1;33m#---------------------------------------------#\e[0m"
#echo
echo
else
echo "No Parameter Pass for GDM FIX....."
fi

#---------------------------------------------------#
# Step 6 - Credits ....
#---------------------------------------------------#
echo
/bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m"
/bin/echo -e "\e[1;36m# Installation Completed\e[0m"
/bin/echo -e "\e[1;36m# Please test your xRDP configuration.A Reboot Might be required...\e[0m"
/bin/echo -e "\e[1;36m# Written by Griffon - June 2018 - Ver 0.4 - Std-Xrdp-Install-0.4.sh\e[0m"
/bin/echo -e "\e[1;36m#-----------------------------------------------------------------------#\e[0m"
echo

Сохранить.

$ sudo sh Std-Xrdp-Install-0.4.sh
$ sudo sh Std-Xrdp-Install-0.4.sh --fixGDM



После реконнекта не переключается клавиатура на русский
Пример xrdp_keyboard.ini для русской клавиатуры


$ sudo nano /etc/xrdp/xrdp_keyboard.ini
 
Добавить в конец
 
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru


[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru 
 
Сохранить.
 
$ sudo reboot
 
Переключение клавиатуры по alt+shift
или win + пробел 
 
# netstat -lntp |grep 3389

Создаем терминальных пользователей



# adduser t01

....

# adduser t10



Для того что бы пользователь мог выйти из сессии

нужно добавить пользователя в группу adm



# usermod -aG adm t01

....

# usermod -aG adm t10



Для каждого пользователя настраиваем

Параметры системы -> Раскладка клавиатуры

добавить раскладку "русская", здесь же параметры

Клавиша(и) для смены раскладки Alt + Shift



Параметры системы -> Яркость и блокировка

При бездействии выключать экран через: Никогда

Блокировать экран через : ЗО минут
 
Снятие терминальной сессии пользователя в XRDP (Linux) и 1C