UMGUM.COM 

Миграция moodle-сайта ( Шпаргалка по переносу простейших сайтов на примере работающих под управлением LMS "Moodle". )

20 марта 2020  (обновлено 3 мая 2021)

OS: "Linux Debian 9/10", "Linux Ubuntu 16/18/20 LTS".

Здесь шпаргалка по переносу сайтов, работающих под управлением LMS "Moodle". Далее просто и последовательно.


Предварительные работы на принимающей стороне.

Естественно, web-сервер должен быть сконфигурирован и готов к обслуживанию сайтов (например, по родительской инструкции).

Подготовим место для приёма переносимых файлов:

# mkdir -p /var/www/moodle.example.net/www
# mkdir -p /var/www/moodle.example.net/moodledata
# chown -R user /var/www/moodle.example.net

Копирование данных на принимающий web-сервер.

На время миграции сайт нужно обязательно перевести в режим обслуживания (admin/settings.php?section=maintenancemode), чтобы в этот период не пускать в него пользователей. Также можно закрыть доступ к сайту посредством web-сервера, оставив проход только себе.

Перед копированием файлов сайта облегчаем этот процесс предварительной зачисткой кешей:

# sudo -u www-data php /var/www/moodle.example.net/www/admin/cli/purge_caches.php

Запускаем процедуру копирования файлов сайта (напрашивающаяся для применения утилита "scp" следует за символическими ссылками, а у нас в каждом сайте ссылки на много много-гигабайтные хранилища данных, так что используем "tar"):

# cd /var/www/moodle.example.net/www ; tar cfv - * | ssh user@new-moodle.example.net "(cd /var/www/moodle.example.net/www ; tar xf - )"
# cd /var/www/moodle.example.net/moodledata ; tar cfv - * --exclude='./filedir' | ssh user@new-moodle.example.net "(cd /var/www/moodle.example.net/moodledata ; tar xf - )"

Файлы данных копируем отдельно, из примонтированного раздела внешнего хранилища (которое обычно введено в структуру сайта символической ссылкой):

# rsync -av --delete -e ssh /var/www/mnt/moodle.example.net/moodledata/filedir/ user@new-moodle.example.net:/var/www/mnt/moodle.example.net/moodledata/filedir

Выгружаем "логический дамп" БД, на лету передавая его на целевой web-сервер:

# mysqldump -u root moodle_example_net | ssh user@new-moodle.example.net "cat > /var/www/moodle.example.net/moodle_example_net.sql"

Копируем конфигурационные файлы web-сервера, описывающие переносимые сайты:

# scp -r /etc/nginx/sites-available/moodle.example.net.conf user@new-moodle.example.net:/var/www/moodle.example.net/

Выгружаем перечень команд запуска задач пользователя web-сервера по расписанию:

# sudo -u www-data crontab -l | ssh user@new-moodle.example.net "cat > /var/www/moodle.example.net/crontab"

Применение данных проекта на принимающем web-сервере.

Первым делом создадим БД и соответствующего пользователя:

# mysql
MySQL> DROP DATABASE `moodle_example_net`;
MySQL> CREATE DATABASE `moodle_example_net` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MySQL> CREATE USER 'moodle_example_net'@'localhost' IDENTIFIED BY 'dbPasword';
MySQL> GRANT ALL PRIVILEGES ON `moodle_example_net`.* TO 'moodle_example_net'@'localhost';
MySQL> FLUSH PRIVILEGES;
MySQL> QUIT;

Внесём в БД содержимое "дампа", полученного с исходного web-сервера

# mysql -u moodle_example_net -p moodle_example_net < /var/www/moodle.example.net/moodle_example_net.sql

Вводим файловое хранилище в структуру сайта:

# ln -s /var/www/mnt/moodle.example.net/moodledata/filedir /var/www/moodle.example.net/moodledata/filedir

Устанавливаем необходимые права доступа к файлам сайта:

# chown -R www-data:www-data /var/www/moodle.example.net
# setfacl --recursive --no-mask --modify user::rwX,group::rwX /var/www/moodle.example.net
# setfacl --recursive --no-mask --modify user:www-data:X /var/www/moodle.example.net

Устанавливаем необходимые права доступа к вынесенным в отдельное хранилище файлам данных:

# chown -R www-data:www-data /var/www/mnt/moodle.example.net/moodledata
# setfacl --recursive --no-mask --modify user::rwX,group::rwX /var/www/mnt/moodle.example.net/moodledata
# setfacl --recursive --no-mask --modify user:www-data:X /var/www/mnt/moodle.example.net/moodledata

Размещаем файлы конфигурации сайта в соответствующих директориях web-сервера и активируем таковой:

# cp /var/www/moodle.example.net/moodle.example.net.conf /etc/nginx/sites-available/moodle.example.net.conf
# ln -s /etc/nginx/sites-available/moodle.example.net.conf /etc/nginx/sites-enabled/moodle.example.net.conf
# nginx -t && nginx -s reload

Переносим из файла "/var/www/moodle.example.net/crontab" задания, имеющие отношение к этому сайту, в "crontab" нового сервера:

# sudo -u www-data crontab -e

Проверяем, верно ли работает сайт на новом месте.

# tail /var/log/nginx/moodle.example.net-error.log


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )