четверг, 25 июня 2020 г.

Установка 1С + postgresql под windows

Установка PostgreSQL, версия 10.5-24.1C windows 10

1. PostgreSQL. Версия 11.7-5.1C. Дистрибутив СУБД PostgreSQL для Windows (64-bit) одним архивом

Ставим на дополнительный SSD диск:
 F:\PostgreSQL\11.7-5.1C\

Обратить внимание, что если PostgreSQL установлен не по умолчанию, нужно добавить права
полный доступ для NETWORK SERVICE для папки установки (если изменен) или на папку с данными. Иначе после reboot PostgreSQL не будет запускаться!!! (В последних версиях исправлена?)




start → run → services.msc  



2. Необходимо пересоздать кластер с data_checksums

(Остановить сервер 1с если уже установлен)
Программы -> 1С:Предприятие 8(x86-64) -> Остановка сервера x86-64 (8.3.17.1386)

Программы -> PostgreSQL 11.5-19.1C(x64) -> psql к 'postgres'
Посмотреть базы:
postgres-# \l
Посмотреть размер баз:
postgres-# \l+

postgres=# SHOW data_checksums;
 data_checksums
----------------
 off
(1 row)


Сделать pg_dump, если есть базы от администратора:
Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt
F: 
cd "F:\PostgreSQL\11.7-5.1C\bin" 

pg_dump -p 5432 -U postgres -Fc -d demo -f F:/backup/demo.custom
pg_dump -p 5432 -U postgres -Fc -d demo1 -f F:/backup/demo1.custom

Остановим сервис от имени администратора:
Программы -> PostgreSQL 11.7-5.1C(x64) -> Stop service

Удалим кластер запуск от администратора
Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt 
#rd /s /q "c:\Program Files\PostgreSQL\10.5-24.1C\data"
rd /s /q "f:\PostgreSQL\11.7-5.1C\data"

Создание кластера (возможно \ - перенос удалить!):

"f:\PostgreSQL\11.7-5.1C\bin\initdb" --encoding=UTF8 -U "postgres" \
   -W -D "f:\PostgreSQL\11.7-5.1C\data" --auth-local peer --auth-host md5 \
   --data-checksums


Программы -> PostgreSQL 11.7-5.1C(x64) -> Редактировать postgresql.conf
 
Добавить в конец: 
  
# DB Version: 11
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
max_connections = 1000
shared_buffers = 512MB
temp_buffers = 256MB
work_mem = 256MB
effective_cache_size = 8GB
maintenance_work_mem = 1024MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
#effective_io_concurrency = 2
seq_page_cost = 1.0
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.005
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 10000
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
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.enable = on
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'
max_replication_slots = 10
max_wal_senders = 10
wal_level = replica   

Сохранить.

Запустим сервис от имени администратора:
Программы -> PostgreSQL 11.7-5.1C(x64) -> Start service


Программы -> PostgreSQL 11.7-5.1C(x64) -> psql к 'postgres'

postgres=# SHOW data_checksums;
 data_checksums
----------------
 on
(1 row)


Восcтановим базы (если есть):
 
Программы -> PostgreSQL 11.7-5.1C(x64) -> Command Prompt
F: 
cd "F:\PostgreSQL\11.7-5.1C\bin" 

#dropdb --username postgres demo
createdb --username postgres -T template0 demo
pg_restore -d demo -p 5432 -U postgres -C F:/backup/demo.custom
#dropdb --username postgres demo1
createdb --username postgres -T template0 demo1
pg_restore -d demo1 -p 5432 -U postgres -C F:/backup/demo1.custom

Запустить сервер 1с
Программы -> 1С:Предприятие 8(x86-64) -> Запуск сервера x86-64 (8.3.17.1386) 


3. Ставим  Cервер 1С:Предприятия (64-bit) для Windows 8.3.15.1830 или
старше.

4. IP 6 отключаем

5. Технологический журнал не настраиваем.

6. При последней установке служба агента не запускалась
Удалить службу
sc delete "1C:Enterprise 8.3 Server Agent (x86-64)"

1C:Enterprise 8.3 Server Agent (x86-64) пока вход в систему не был переделан с системной учетной записью.


7. Настраиваем  pg_probackup

pg_probackup настройка автономного резервного копирования windows

Если не использум pg_probackup, нужно настроить pg_basebackup

PostgreSQL 10.5-24 настройка WAL архивирования windows
Резервное копирование кластера PostgreSQL pg_basebackup Windows
 
8. Настроить vacuum

Windows обслуживание баз PostgreSQL

В скрипте настроить путь и пароль:

REM Установка переменных окружения
SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGUSER=postgres
SET PGPASSWORD=pass

11. Настроить backup в dump
Из статьи ниже просто взять скрипт
Резервное копирование базы PostgreSQL pg_dump под windows
Сделать свой скрипт на каждую базу в скрипте настроить:
Имя базы:
SET PGDATABASE=demo

SET PGBIN=C:\Program Files\PostgreSQL\10.5-24.1C\bin
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=pass

9. Сделать общий скрипт в планировщике

Вообще хорошо перед pg_dump
Остановить сервер 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -stop
скрипт vacuum
скрипт dump на каждую базу ...
скрипт dump на каждую базу ...
После pg_dump
Запуск сервера 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -start

Целесообразно настроить удаление старых копий
forfiles /P "d:\demo" /D -30 /C "cmd /c del @path /q"


10. Настройка web доступа
Установка Apache HTTP Server 64 on Microsoft Windows

Пересоздание кластера postgresql под windows

Остановить сервер 1с
Программы -> 1С:Предприятие 8(x86-64) -> Остановка сервера x86-64 (8.3.17.1386)

Программы -> PostgreSQL 11.5-19.1C(x64) -> psql к 'postgres
Посмотреть базы:
postgres-# \l
Посмотреть размер баз:
postgres-# \l+

postgres=# SHOW data_checksums;
 data_checksums
----------------
 on
(1 row)

Сделать pg_dump
Программы -> PostgreSQL 11.5-19.1C(x64) -> Command Prompt
pg_dump -p 5432 -U postgres -Fc -d demo -f F:/backup/demo.custom
pg_dump -p 5432 -U postgres -Fc -d demo1 -f F:/backup/demo1.custom

Остановим сервис от имени администратора:
Программы -> PostgreSQL 11.5-19.1C(x64) -> Stop service

Удалим кластер

#rd /s /q "c:\Program Files\PostgreSQL\10.5-24.1C\data"
rd /s /q "f:\PostgreSQL\11.5-19.1C\data"

Создание кластера (\ - знак переноса, возможно нужно убрать):

"f:\PostgreSQL\11.5-19.1C\bin\initdb" --encoding=UTF8 -U "postgres" \
 -W -D "f:\PostgreSQL\11.5-19.1C\data" --auth-local peer --auth-host md5 \
 --data-checksums 

Программы -> PostgreSQL 11.5-19.1C(x64) -> Редактировать postgresql.conf

# DB Version: 11
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
max_connections = 1000
shared_buffers = 512MB
temp_buffers = 256MB
work_mem = 256MB
effective_cache_size = 8GB
maintenance_work_mem = 1024MB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB
default_statistics_target = 100
#effective_io_concurrency = 2
seq_page_cost = 1.0
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.005
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 10000
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
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.enable = on
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'
max_replication_slots = 10
max_wal_senders = 10
wal_level = replica   

Сохранить.

Запустим сервис от имени администратора:
Программы -> PostgreSQL 11.5-19.1C(x64) -> Stop service


Восcтановим базы:
Программы -> PostgreSQL 11.5-19.1C(x64) -> Command Prompt
F:\PostgreSQL\11.7-5.1C\bin> далее > 
 
>dropdb --username postgres demo
>psql --username postgres -l 
>createdb --username postgres -T template0 demo
>pg_restore -d demo -p 5432 -U postgres -C F:/backup/demo.custom
>dropdb --username postgres demo1
>createdb --username postgres -T template0 demo1
>pg_restore -d demo1 -p 5432 -U postgres -C F:/backup/demo1.custom
 
Запустить сервер 1с
Программы -> 1С:Предприятие 8(x86-64) -> Запуск сервера x86-64 (8.3.17.1386) 

понедельник, 1 июня 2020 г.

multipath[3314]: sdb: can't store path info

Путь не найден

journalctl -xe
...
июн 01 11:23:58 acer multipath[4268]: sdb: can't store path info
июн 01 11:23:59 acer multipathd[588]: sdb: spurious uevent, path not found
июн 01 11:23:59 acer multipathd[588]: uevent trigger error
...

ll /dev/disk/by-id/ | grep sdb
lrwxrwxrwx 1 root root   9 июн  1 11:19 usb-Generic-_SD_MMC_MS_PRO_20120926571200000-0:0 -> ../../sdb


 cat /etc/multipath.conf
defaults {
    user_friendly_names yes
}

sudo nano  /etc/multipath.conf

defaults {
    user_friendly_names yes
}
blacklist {
    wwid 20120926571200000
}

Сохранить

sudo reboot

вторник, 12 мая 2020 г.

Установка stunnel для apache вебсервера 1С:Предпритие 8.3 Ubuntu 20.04 с авторизацией


 Установка  stunnel4 на сервере Ubuntu 20.04:

sudo apt install stunnel4 -y

Нам нужны пары сертификат/ключ для сервера и каждого клиента.
Для сервера:
sudo openssl genrsa -out /etc/stunnel/server-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/server-key.pem -out /etc/stunnel/server-cert.pem -days 36500
##sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem" 

Создадим пару для клиента client01:

sudo openssl genrsa -out /etc/stunnel/client01-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/client01-key.pem -out /etc/stunnel/client01-cert.pem -days 36500
sudo su -c "cat /etc/stunnel/client01-cert.pem >> /etc/stunnel/clients.pem"
 

Файлы client01-cert.pem  client01-key.pem  server-cert.pem
скопируем на машину с клиентом client01 (windows)

Создадим еще пару для клиента client02:

sudo openssl genrsa -out /etc/stunnel/client02-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/client02-key.pem -out /etc/stunnel/client02-cert.pem -days 36500
sudo su -c "cat /etc/stunnel/client02-cert.pem >> /etc/stunnel/clients.pem"

И т.д.

На сервере настриваем (ниже):accept = 4443 - порт на сервере который нужно открыть во внешнюю сеть или пробросить
connect = 127.0.0.1:80 - 80 порт вебсервера от которого строим туннель tls

sudo nano /etc/stunnel/stunnel.conf

chroot = /var/lib/stunnel4
pid = /stunnel4.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;Отключим отладочные режимы - 0
;debug = 7
#cert = /etc/stunnel/stunnel.pem
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
cert = /etc/stunnel/server-cert.pem
key = /etc/stunnel/server-key.pem
CAfile = /etc/stunnel/clients.pem
#Полностью отключим уязвимые протоколы SSL версии 2 и 3.
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1
ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384

[apache]
accept = 4443
connect = 127.0.0.1:80

Сохранить

Штатный запуск:

sudo su -c "echo 'ENABLED=1' >> /etc/default/stunnel4"

Можно проверить:

cat /etc/default/stunnel4
.....
ENABLED=1
==========================================
Можно просто:
sudo reboot
==========================================
или без перезагрузки:
sudo systemctl enable stunnel4.service
sudo systemctl start stunnel4.service
==========================================


sudo systemctl status stunnel4.service


Лог в chroot  /var/lib/stunnel4/stunnel.log

Установка  stunnel4 на клиенте (Windows):


---------------------------------------------------------------------------------------------------------------------------
Установка stunnel под windows
download stunnel
stunnel-5.56-win64-installer.exe
Все версии 32 и 64 здесь

1. Установить  stunnel-5.56-win64-installer.exe
(для 32 бит   stunnel-5.49-win32-installer.exe )


Подключаться к 1с будем  127.0.0.1:8080

К серверу  по внешнему ip 192.168.1.233:4443 через интернет.

2. Скопировать с сервера сертификат:
/etc/stunnel/stunnel.pem
в 
c:\Program Files (x86)\stunnel\config\stunnel.pem

3. Настройить stunnel.conf
(все строки можно удалить)

c:\Program Files (x86)\stunnel\config\stunnel.conf

cert = client01-cert.pem
key = client01-key.pem
CAfile = server-cert.pem
client = yes
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
[apache]
accept = 127.0.0.1:8080
connect = 192.168.1.233:4443

Сохранить.

Есть ярлык, установить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install

Есть ярлык, запустить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start


Проверить:
http://localhost:8080/demo/ru_RU/ 


Прочие команды.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -stop
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -uninstall

==========================================
Альтернативный вариант с systemd не делаем!

sudo nano /lib/systemd/system/stunnel.service


[Unit]
Description=SSL tunnel
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/pkill stunnel
WorkingDirectory=/etc/stunnel
TimeoutSec=600
Restart=always
PrivateTmp=false

Сохранить.


sudo systemctl enable stunnel.service
sudo systemctl start stunnel.service
sudo systemctl status stunnel.service

воскресенье, 10 мая 2020 г.

Установка stunnel для apache вебсервера 1С:Предпритие 8.3 Ubuntu 20.04

Stunnel + OpenVPN Server on Ubuntu 18.04
Авторизация для stunnel с помощью сертификатов openvpn

Установка  stunnel4 на сервере Ubuntu 20.04:

sudo apt install stunnel4 -y
sudo openssl genrsa -out /etc/stunnel/key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/key.pem -out /etc/stunnel/cert.pem -days 3650
sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem" 

Фйайл /etc/stunnel/stunnel.pem скачаваем для установки на клиента

sudo chmod 600 /etc/stunnel/stunnel.pem
sudo rm /etc/stunnel/key.pem  /etc/stunnel/cert.pem 

На сервере настриваем (ниже):
accept = 4443 - порт на сервере который нужно открыть во внешнюю сеть или пробросить
connect = 127.0.0.1:80 - 80 порт вебсервера от которого строим туннель tls

sudo nano /etc/stunnel/stunnel.conf

chroot = /var/lib/stunnel4
pid = /stunnel4.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
#Отключим отладочные режимы - 0
#debug = 7
cert = /etc/stunnel/stunnel.pem
#Полностью отключим уязвимые протоколы SSL версии 2 и 3.
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1
ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384

[apache]
accept = 4443
connect = 127.0.0.1:80

Сохранить



Штатный запуск:

sudo su -c "echo 'ENABLED=1' >> /etc/default/stunnel4"

Можно проверить:

cat /etc/default/stunnel4
.....
ENABLED=1
==========================================
Можно просто:
sudo reboot
==========================================
или без перезагрузки:
sudo systemctl enable stunnel4.service
sudo systemctl start stunnel4.service
==========================================


sudo systemctl status stunnel4.service


Лог в chroot  /var/lib/stunnel4/stunnel.log

Установка  stunnel4 на клиенте (Windows):


---------------------------------------------------------------------------------------------------------------------------
Установка stunnel под windows
download stunnel
stunnel-5.56-win64-installer.exe
Все версии 32 и 64 здесь

1. Установить  stunnel-5.56-win64-installer.exe
(для 32 бит   stunnel-5.49-win32-installer.exe )


Подключаться к 1с будем  127.0.0.1:8080

К серверу  по внешнему ip 192.168.1.233:4443 через интернет.

2. Скопировать с сервера сертификат:
/etc/stunnel/stunnel.pem
в 
c:\Program Files (x86)\stunnel\config\stunnel.pem

3. Настройить stunnel.conf
(все строки можно удалить)

c:\Program Files (x86)\stunnel\config\stunnel.conf

cert = stunnel.pem
client = yes
[apache]
accept = 127.0.0.1:8080
connect = 192.168.1.233:4443


Сохранить.

Есть ярлык, установить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install

Есть ярлык, запустить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start


Проверить:
http://localhost:8080/demo/ru_RU/ 


Прочие команды.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -stop
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -uninstall

==========================================
Альтернативный вариант с systemd не делаем!

sudo nano /lib/systemd/system/stunnel.service


[Unit]
Description=SSL tunnel
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/pkill stunnel
WorkingDirectory=/etc/stunnel
TimeoutSec=600
Restart=always
PrivateTmp=false

Сохранить.


sudo systemctl enable stunnel.service
sudo systemctl start stunnel.service
sudo systemctl status stunnel.service

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

суббота, 9 мая 2020 г.

Файловый backup 1c

1c_backup.bat

@echo off
REM скрипт архивирующий папку с базами 1с файлы *.1CD
REM BASEDIR путь к папке где лежат базы 1С , если русскими буквами имя папки DOS dir /x
REM SET BASEDIR=D:\1CBases
REM CALL c:\Apache24\bin\httpd.exe -k stop
SET BASEDIR=c:\V8
REM BACKUPDIR путь к папке куда будем складывать backup
SET BACKUPDIR=f:\backup
REM удаление архивов старше DAY дней
SET DAY=5
REM del /F /Q "%BACKUPDIR%"\
REM forfiles /p %BACKUPDIR% /m *.7z /s /d -%DAY% /c "cmd /c del @path /q"
forfiles /p %BACKUPDIR% /m * /s /d -%DAY% /c "cmd /c del @path /q"
REM PASSWORD пароль для архива
REM SET PASSWORD=VZZETcB1eItOc4HU1RQljWqSeymsM6ZVenvXObU1F5oKM3GLTr96K
REM пароль до 20 символов совместим с rar
SET PASSWORD=VZZETcB1eI
REM NAME имя файла с архивом
SET NAME=backup
SET datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
SET datetimef=%datetimef: =0%
SET FILENAME=%BACKUPDIR%\%NAME%_%datetimef%.7z
SET LOG=%BACKUPDIR%\%NAME%_%datetimef%.log
REM CALL c:\7-zip\7za.exe a  %FILENAME% -mmt2 -mx1 -t7z -v2000m -bso1 %BASEDIR%\*\*.1CD -p%PASSWORD% >%LOG% 2>&1
CALL c:\7-zip\7za.exe a  %FILENAME% -mmt2 -mx1 -t7z -v2000m -bso1 %BASEDIR%\*\*.1CD >%LOG% 2>&1
REM CALL c:\Apache24\bin\httpd.exe -k start
REM cd f:\rclone
REM  rclone copy f:/backup webdav:backup_1c --progress --config rclone.conf




rclone sync f:/backup webdav:backup_1c --progress --config rclone.conf

rclone copy f:/backup webdav:backup_1c --progress --config rclone.conf