MS SQL Архивация в сетевую папку
Необходимо выполнять архивацию в сетевую шару в регламентном задании MS SQL
Необходимо выполнять архивацию в сетевую шару в регламентном задании MS SQL
Для обновления bookstack необходима версия php не ниже 8.2, о чем сообщает инсталлятор. Обновление php прошло успешно, но получаю ошибку экспорта Часть лога
1 2 3 4 5 6 7 |
production.ERROR: Target class [BookStack\Entities\Controllers\PageExportController] does not exist. {"userId":3,"exception":"[object] (Illuminate\\Contracts\\Container\\BindingResolutionException(code: 0): Target class [BookStack\\Entities\\Controllers\\PageExportController] does not exist. at /var/www/bookstack/vendor/laravel/framework/src/Illuminate/Container/Container.php:961) |
Решение простое. Выполнить необходимо в корневой папке, где установлен сам движок
1 2 3 |
root@bookstack:/var/www/bookstack# rm bootstrap/cache/routes-v7.php |
После чего экспорт успешно заработал.
Проект Automated database platform for PostgreSQL позволяет автоматизировать разворачивание кластера PostgreSQL версий 10-17 на версиях Linux
Debian: 11, 12
Ubuntu: 22.04, 24.04
CentOS Stream: 9
Oracle Linux: 8, 9
Rocky Linux: 8, 9
AlmaLinux: 8, 9
В целом, все достаточно просто. Поехали
Немного предисловия. Захотелось попробовать крайние версии PostgreSQL для работы 1С. Были испробованы решения на Consul, pgautofailover. Важный момент, который не освещается ни где — это использование как минимум трех нод в реализации конфигурации. В данной статья описано простое решение, без тюнига и дополнительных плюшек, так как далее все это будет упаковано в docker контейнеры. Стек следующий — Oracle Linux 9, Patroni, postgres-pro-1c-17, etcd, haproxy, keepalived. В статье я максимально упросил составление конфигураций и немного скудно добавил описание, так как важно собрать кластер, а уже потом тюнить и выяснять, что это за параметры использовались (имхо) Назовем его rc0.1 Дорастем и до релиза, после проверки материала )
Поехали!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
dnf install wget -y wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo dnf install docker-ce docker-ce-cli -y systemctl enable docker --now COMVER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4) curl -L "https://github.com/docker/compose/releases/download/$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose chmod +x /usr/bin/docker-compose cat << EOF >> /etc/docker/daemon.json { "storage-driver": "overlay2", "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF |
1 2 3 |
systemctl enable --now docker |
Необходимо развернуть сервер rocketchat в контейнере docker Стек ПО следующий: Traefik, MongoDB7 и RocketChat latest. Необходимо заменить только имя домена rocketchat.datastore.center и адрес email
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
services: db: image: docker.io/bitnami/mongodb:7.0.15 container_name: rocketchat-db hostname: rocketchat-db security_opt: - no-new-privileges:true healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 10s retries: 5 start_period: 20s environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 ALLOW_EMPTY_PASSWORD: 1 MONGODB_SYSTEM_LOG_VERBOSITY: 3 volumes: - /volume1/docker/rocketchat/db:/bitnami/mongodb:rw restart: on-failure:5 rocketchat: image: rocketchat/rocket.chat:latest container_name: rocketchat hostname: rocketchat healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 3000 || exit 1"] interval: 10s timeout: 5s retries: 3 start_period: 90s hostname: rocketchat security_opt: - no-new-privileges:true environment: MONGO_URL: mongodb://rocketchat-db:27017/rocketchat?replicaSet=rs0 MONGO_OPLOG_URL: mongodb://rocketchat-db:27017/local?replicaSet=rs0 ROOT_URL: https://rocketchat.datastore.center URL: https://rocketchat.datastore.center PORT: 3000 DEPLOY_METHOD: docker volumes: - /volume1/docker/rocketchat/data:/app/uploads:rw ports: - 3000:3000 restart: on-failure:5 depends_on: db: condition: service_started |
Все тоже самое, но с использованием traefik в качестве WEB-сервера и автоматического продления сертификата Let’s Encrypt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
services: db: image: docker.io/bitnami/mongodb:7.0.15 container_name: rocketchat-db hostname: rocketchat-db security_opt: - no-new-privileges:true healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 10s retries: 5 start_period: 20s environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 ALLOW_EMPTY_PASSWORD: 1 MONGODB_SYSTEM_LOG_VERBOSITY: 3 volumes: - /volume1/docker/rocketchat/db:/bitnami/mongodb:rw restart: on-failure:5 rocketchat: image: rocketchat/rocket.chat:latest container_name: rocketchat hostname: rocketchat healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 3000 || exit 1"] interval: 10s timeout: 5s retries: 3 start_period: 90s security_opt: - no-new-privileges:true labels: traefik.enable: true traefik.http.routers.rocketchat.rule: Host(`rocketchat.datastore.center`) traefik.http.routers.rocketchat.entrypoints: http traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https traefik.http.routers.rocketchat.middlewares: redirect-to-https@docker traefik.http.routers.rocketchat-secured.rule: Host(`rocketchat.datastore.center`) traefik.http.routers.rocketchat-secured.entrypoints: https traefik.http.routers.rocketchat-secured.tls: true traefik.http.routers.rocketchat-secured.tls.certresolver: le environment: MONGO_URL: mongodb://rocketchat-db:27017/rocketchat?replicaSet=rs0 MONGO_OPLOG_URL: mongodb://rocketchat-db:27017/local?replicaSet=rs0 ROOT_URL: https://rocketchat.datastore.center URL: https://rocketchat.datastore.center PORT: 3000 DEPLOY_METHOD: docker volumes: - /volume1/docker/rocketchat/data:/app/uploads:rw ports: - 3000:3000 restart: on-failure:5 depends_on: db: condition: service_started traefik: image: docker.io/traefik:latest hostname: rocketchat-web container_name: rocketchat-web restart: always command: - --api.insecure=true - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.http.address=:80 - --entrypoints.https.address=:443 - --certificatesresolvers.le.acme.tlschallenge=true - --certificatesresolvers.le.acme.email=spiridonov.konstantin@gmail.com - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json # This line below is to get a testing SSL cert, just uncomment it and thats it. #- --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory ports: - 80:80 - 443:443 - 8080:8080 volumes: - ./letsencrypt:/letsencrypt:rw - /var/run/docker.sock:/var/run/docker.sock:ro |
В portainer stack выглядит вот так
Тут достаточно все просто. Думаю не нужно дополнительного описания
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# Script to clone a VM in Hyper-V $SourceVMName = "mini-templ" $CloneVMName = "new-vm-name" $ExportFolder = "F:\Hyper-V\Virtual Machine" $CloneFolder = "F:\Hyper-V\Virtual Machines\$CloneVMName" If (Test-Path $CloneFolder){ Write-Warning "Clone folder: $CloneFolder already exists. Aborting script..." Break } # Export the Source VM Export-VM $SourceVMName -Path $ExportFolder # Import the Exported VM, full copy, and generating a new ID $CloneVMConfigFile = (Get-ChildItem "$ExportFolder\$SourceVMName" -Filter *.vmcx -Recurse | Select -First 1).Fullname $CloneVMConfig = @{ Path = $CloneVMConfigFile; SnapshotFilePath = Join-Path $CloneFolder "Snapshots"; VhdDestinationPath = Join-Path $CloneFolder "Virtual Hard Disks"; VirtualMachinePath = $CloneFolder; } $Result = Import-VM -Copy -GenerateNewID @CloneVMConfig # Rename the imported VM (will be imported with original name) $Result | Rename-VM -NewName $CloneVMName # Remove the exported VM $SourceVMExportPath = "$ExportFolder\$SourceVMName" If (Test-Path $SourceVMExportPath) { Remove-Item -Path $SourceVMExportPath -Recurse -Force } #Start new VM Start-VM -Name $CloneVMName |
Необходимо проинсталлировать реплику сервера FreeIPA, настроить синхронизацию и произвести переключение ролей Replica <-> Master FreeIPA. Поехали
Читать дальше ИнформацияВторичный сервер FreeIPA и настройка репликации …
Необходимо проинсталлировать и настроить сервер FreeIPA. Приступаем
Появилась необходимость добавления в установочный образ VMWare ESXI добавить драйвер RAID контроллера. Для этого необходимо выполнить следующие действия:
Читать дальше ИнформацияКастомизация инсталляционного образа VMWare …
Для пользователя указана среда, но при подключении к терминальному серверу, среда не выполняется. Что пишет MS Основное, что необходимо сделать, это добавить два ключа реестра
1 2 3 4 5 6 7 8 9 10 11 |
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services Name: fQueryUserConfigFromDC Type: Reg_DWORD Value: 1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp Name: fQueryUserConfigFromDC Type: Reg_DWORD Value: 1 |
У меня заработало без перезагрузки
Коротенько — обновление openssl на старой системе
1 2 3 4 5 6 7 8 9 10 11 12 |
mkdir ~/src/ cd ~/src/ wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz tar -zxvf openssl-*.tar.gz cd openssl-* ./config -fpic shared && make && make install echo "/usr/local/ssl/lib" >> /etc/ld.so.conf mv /usr/bin/openssl /root/openssl.back ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ldconfig |
1 2 3 4 |
openssl version OpenSSL 1.0.2a 19 Mar 2015 |
Необходимо выдать права группе пользователей на подключение к shadow сессии на терминальном сервере В командной строке терминального сервера выполняем следующую команду
1 2 3 |
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName="RDP-Tcp") CALL AddAccount "mydonain\RDS_Shadow",2 |
Необходима перезагрузка Определяем список сессий
1 2 3 |
query session /server:terminal01 |
И выполняем подключение
1 2 3 |
mstsc /shadow:5 /control /noconsentprompt |
Небольшой скрипт автоматизации подключения
1 2 3 4 5 6 7 |
@echo off query session echo set /p UserSessionID= Enter the session ID: mstsc /shadow:%UserSessionID% /control /noconsentprompt |
Ошибка подключения — expected key exchange group packet from server
Читать дальше ИнформацияExpected key exchange group packet from server …
После установки клиента OpenVPN, возникает ошибка вида
1 2 3 |
All TAP-Windows adapters on this system are currently in use |
Варианты решения
Читать дальше ИнформацияOpenVPN — All TAP-Windows adapters on this system are currently in use …