Я хочу сделать резервную копию своего боевого сервиса OwnCloud 10
не как бекап (хотя это одно и тоже), а прям вот один работает и будет работать второй с идентичными настройками, а действиями ниже я переношу базу, файлы на другой, и он путем перенастройки проброса порта на моем vpn
сервисе (роли OpenVPN Server
+ брандмауэр на базе firewalld
) сразу же начинает работать. А сразу потому, что из вне сервис OwnCloud 10
доступен по адресу https://vpn.host.ru
с сертификатом от Let'S Encrypted.
Предварительные действия для данной заметки.
- Развернуты на тестовом полигоне (
Debian 10 + Proxmox 6
) две виртуальные машины (srv-own1 & srv-own2
) и через скрипт установкиOwnCloud 10
воздвигнут сервис (скрипт самописный), взаимодействие с обоими системами выполняю со своего рабочего ноутбукаLenovo E555 (Ubuntu 18.04 Desktop: hostname: navy)
- На одну машину
srv-own1
заливаю файлы черезWeb
-интерфейс дабы на основе их проверять цель преследуемую данной заметкой.
Шаг №1:
На обоих серверах настраиваю выполнение команд через sudo
без запроса пароля суперпользователя:
sudo visudo ekzorchik ALL=(ALL) NOPASSWD:ALL
Шаг №2:
Настраиваю, что с одного хоста на другой вход под учетной записью ekzorchik
будет производиться через ключи, а не через пароль:
ekzorchik@srv-own1:~$ ssh-keygen -t rsa ekzorchik@srv-own1:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ekzorchik@srv-own2 ekzorchik@srv-own1:~$ sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config ekzorchik@srv-own1:~$ sudo service ssh restart ekzorchik@srv-own1:~$ ssh-keygen -t rsa ekzorchik@srv-own2:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ekzorchik@srv-own1 ekzorchik@srv-own2:~$ sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config ekzorchik@srv-own2:~$ sudo service ssh restart
и для также для системы hostname: navy
что она может подключаться к выше указанным обоим:
ekzorchik@navy:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ekzorchik@srv-own1 ekzorchik@navy:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ekzorchik@srv-own2
Шаг №3:
Перевожу хост srv-own1 & srv-own2
в режим обслуживания:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "cd /var/www/owncloud;sync;sudo -u www-data php occ maintenance:mode --on" Maintenance mode enabled Please also consider to stop the web server on all ownCloud instances ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "cd /var/www/owncloud;sync;sudo -u www-data php occ maintenance:mode --on" Maintenance mode enabled Please also consider to stop the web server on all ownCloud instances
Шаг №4:
Останавливаю Web
—сервис на srv-own1 & srv-own2
, у меня это Apache2:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo service apache2 stop" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "sudo service apache2 stop"
Шаг №5:
Делаю бекап базы OwnCloud 10
хоста srv-own1
и переношу ее на srv-own2
, а затем подгружаю:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo mysqldump --single-transaction -h localhost -u root -p866%sacred.77 db_owncloud > db_owncloud.bak" ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "rsync -v /home/ekzorchik/db_owncloud.bak ekzorchik@srv-own2:/home/ekzorchik/" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "sudo mysql -h localhost -u root -p866%sacred.77 db_owncloud < /home/ekzorchik/db_owncloud.bak"
Шаг №6:
На обоих серверах включаю учетную запись ekzorchik
в группу www-data
и даю права на запись в каталог /var/www/owncloud
— это нужно чтобы синхронизировать каталоги:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo usermod -aG www-data ekzorchik" ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo chmod -R 775 /var/www/owncloud/" ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo chown -R www-data:www-data /var/www/owncloud" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "sudo usermod -aG www-data ekzorchik" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "sudo chmod -R 775 /var/www/owncloud/" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "sudo chown -R www-data:www-data /var/www/owncloud"
Шаг №7:
Синхронизирую каталоги с srv-own1
на srv-own2:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "rsync -avt /var/www/owncloud/{apps,config,data} ekzorchik@srv-own2:/var/www/owncloud" sent 166,771,228 bytes received 296,564 bytes 111,378,528.00 bytes/sec total size is 305,410,851 speedup is 1.83 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2] ekzorchik@navy:~$
Шаг №8:
Изменяем IP
или DNS
—имя в /var/www/owncloud/config/config.php
на второй системе и приводим настройки доступа через Web
—интерфейс с учетом обращения по IP
и DNS
именам:
ekzorchik@srv-own2:~$ hostname -I 172.33.33.122 ekzorchik@srv-own2:~$ sudo nano /var/www/owncloud/config/config.php 'trusted_domains' => array ( 0 => 'localhost', 1 => '172.33.33.122', 2 => 'srv-own2.polygon.lan', 3 => 'srv-own2', ), ekzorchik@srv-own2:~$ sudo chown -R www-data:www-data /var/www/owncloud/ ekzorchik@srv-own2:~$ sudo service apache2 restart
Шаг №9:
Убираем режим обслуживания на обоих srv-own1
(+ запускаем Web
-сервис apache) & srv-own2:
ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "cd /var/www/owncloud;sync;sudo -u www-data php occ maintenance:mode --off" Warning: Permanently added 'srv-own1,172.33.33.121' (ECDSA) to the list of known hosts. ownCloud is in maintenance mode - no app have been loaded Maintenance mode disabled ekzorchik@navy:~$ ekzorchik@navy:~$ ssh -l ekzorchik srv-own1 "sudo service apache2 restart" ekzorchik@navy:~$ ssh -l ekzorchik srv-own2 "cd /var/www/owncloud;sync;sudo -u www-data php occ maintenance:mode --off"
Шаг №10:
Со своей рабочей системы запускаю браузер и обращаюсь ко второй системе https://srv-own2
— авторизуюсь учетными данными с первой системы и вижу файлы, добавленные для проверки выше. Делаю вывод, я получил идентичную копию работоспособного сервиса OwnCloud 10
на Ubuntu 18.04 Server
, т.е. я теперь могу с рабочей системы выполнить боевой переезд наработок и если что откатиться назад, т.к. первый будет доступен и новый, а после на vpn.host.ru выполнить замену:
(к примеру, у меня еще задействован proxy_pass
для nginx
)
root@host.ru:~# nano /etc/nginx/sites-enabled/owncloud.conf location / { proxy_pass https://172.33.33.122; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }
Не спорю, что я усложнил свою заметку, просто мне хотелось сделать ее по минимуму подключаясь к хостам друг с друга, а только с рабочей системы, но это так не обязательно.
Задача заметка выполнена, с уважением автор блога Олло Александр aka ekzorchik.