Как перенести сайт на хостинг. А также выполнение резервного копирования и синхронизация изменений

Сложность: 
3

Иногда во время разработки сайта необходимо перенести изменения на другой компьютер, где есть также настроенный локальный веб-сервер. Также стоит помнить о том, что рано или поздно проект должен будет оказаться на отдельном, уже боевом сервере (хостинге). Мы поделимся с вами нашим опытом о том, как это сделать правильно для Друпал-сайта.

В этой статье мы рассмотрим:

  1. Перенос Друпал сайта с одного веб-сервера на другой.

  2. Резервное копирование (бэкапы) Друпал сайта.

  3. Синхронизация изменений между сайтами.

Приступим!

Выполнение переноса Друпал сайта с одного веб-сервера на другой

Рано или поздно каждый веб-разработчик сталкивается с задачей переноса сайта. Процесс этот одинаковый, независимо от того, где должна оказаться копия вашей разработки.

Перенос базы данных

Для начала, нам необходимо перенести Базу данных. В ней хранится контент, пользователи и другая нужная информация. Для переноса БД можно использовать такие ресурсы:

  • phpMyAdmin;

  • Консоль (обращение к MySQL);

  • Drush;

  • Модуль “Backup & Migrate”.

Рассмотрим каждый из этих способов.

В первую очередь, необходимо очистить кэш в Друпале. Сделать это можно на странице “/admin/config/development/performance”. Как правило, после этого процесс переноса и, собственно, создания дампа базы данных (который мы должны получить в результате), происходит быстрее.

phpMyAdmin

Здесь все просто - заходим в phpMyAdmin, выбираем необходимую базу данных, после появления списка таблиц выбранной БД жмем на вкладку Экспорт. На странице Экспорта необходимо только кликнуть кнопку “Go”, и дамп (файл с содержимым базы данных) сохранится.

Консоль (обращение к MySQL)

Для операционной системы Windows, где у вас уже есть установленный MySQL сервер, необходимо проделать следующее:

  1. Открыть командную строку. Это можно сделать, нажав комбинацию клавиш Windows+R, в окне написать cmd.exe и нажать Enter.

  2. Перейти в папку, где находится MySQL сервер. К примеру, если папка находится по адресу C:\Program Files\MySQL\MySQL Server 5.5\bin, тогда пишем команду “cd C:\Program Files\MySQL\MySQL Server 5.5\bin”.

  3. Создать дамп, используя файл mysqldump.exe. Для этого пишется команда: mysqldump.exe –e –u[ИМЯ_ПОЛЬЗОВАТЕЛЯ] -p[ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ] [НАЗВАНИЕ_БД] > C:\[ИМЯ_ФАЙЛА].sql. Текст в квадратных скобках замените на нужные вам значения, а сами скобки не нужны.

После выполнения именно пункта 3 у вас появится дамп в корне диска “C:” с тем именем, которое вы задали.

Для ОС Linux все намного проще. Для этого заходим в терминал и пишем команду: mysqldump -u[ИМЯ_ПОЛЬЗОВАТЕЛЯ] -p[ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ] [НАЗВАНИЕ_БД] > [ИМЯ_ФАЙЛА].sql

Drush

Данный способ подходит для тех сайтов, которые находятся под управлением Linux с установленным Drush.

Для создания дампа необходимо всего лишь прописать команду:

drush sql-dump > /ПУТЬ/К/ФАЙЛУ/НАЗВАНИЕ_ФАЙЛА.sql

Модуль “Backup & Migrate”

Здесь достаточно установить необходимый модуль. А после этого, сделать дамп БД можно на странице /admin/config/system/backup_migrate, нажав кнопку “Backup now”. В этом случае вы сразу получите дамп БД в .gz архиве. Важно: пользоваться модулем рекомендовано только опытным разработчикам, которые знают каждую его настройку и нюансы использования. И ещё раз важно: не только в работе с этим модулем, а и вообще при работе с бэкапами - не делайте их в папку, где лежит сам сайт.

Воспользовавшись одним из способов, мы получаем БД Друпал-сайта в файле.

Архив сайта

Дальше нам нужно заархивировать файлы сайта. В идеале, они находятся в двух местах.

1. Все что написано и установлено на Друпал-сайте, должно находится в папке “sites/all”. В этой папке должны находится все модули, темы, дополнительные библиотеки и подобные вещи. Модули с drupal.org, модули, написанные вручную, также должны находится именно в этой папке, и нигде больше.

2. Файлы сайта. Как правило, файловая директория находится по адресу “sites/default/files”.

Таким образом, мы не затрагиваем только ядро Друпала, которое можно скачать в любое время с сайта drupal.org.

Если вам необходимо сохранить сайт и передать его другим, тогда архивировать можно сразу весь сайт, за исключением файла “sites/default/settings.php”. Дело в том, что в нем есть доступы к вашей базе данных. И поэтому, если вам все же нужно будет передать весь сайт с этим файлом, помните, что эту информацию нужно обязательно зачистить.

Заархивировать можно целую папку с сайтом, но если в новом месте загруженные файлы не будут нужны, то папку с ними можно пропустить.

Перенос сайта

Итак, у нас есть свежий бэкап базы данных и архив сайта, который мы можем перенести на любой веб-сервер. Желательно, чтобы все настройки на новом сервере остались такими же, на которых Друпал-сайт работал ранее. Это предотвратит возможные ошибки.

Следующий наш шаг: развернуть базу данных. Для этого воспользуемся сделанным дампом.

Развернуть БД можно с помощью нескольких способов:

  1. phpMyAdmin. Создайте БД, сверху выберите вкладку “Импорт” (Import), и укажите файл дампа.

  2. Консоль. Для этого необходимо создать БД, потом прописать команду по такому шаблону:
    mysql -u[ИМЯ_ПОЛЬЗОВАТЕЛЯ] -p[ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ] [НАЗВАНИЕ_БД] < [НАЗВАНИЕ_ФАЙЛА].sql

  3. Drush. Если вы будете разворачивать дамп через Drush, тогда он обязательно должен быть и создан с его помощью. Еще, в файле settings.php уже должны быть указаны доступы к БД и ее название, а сама база должна быть уже создана и пуста.

Дальше необходимо развернуть сайт, то есть разархивировать его, а в файле settings.php, который находиться в папке sites/default, нужно указать доступы к новому серверу БД.

Готово! Ваш сайт теперь и на новом сервере!

После этого возникает вопрос: а достаточно ли этого для нормального функционирования живого сайта? Конечно же, нет) Как минимум, нужно позаботиться о том, чтобы у вас всегда были свежие копии сайта, на всякий пожарный случай (а случаи бывают разные).

Регулярные бэкапы (резервное копирование) Друпал сайта

Регулярное резервное копирование сайта, как показывает практика, должно осуществляться на стороне сервера. Обязательно все копии всегда должны сохранятся в специальном месте, отдельном от сервера живого сайта. Негласно, есть такая система бэкапов, которые должны быть для каждого сайта:

  • 14 последних суточных бэкапов

  • бэкапы за 9 последних недель (ориентир на воскресенье)

  • бэкапы за каждое первое число последних 12 месяцев

Такой набор бэкапов послужит для вас страховкой и гарантией сохранности всей драгоценной информации.

Сами бэкапы желательно делать в ночное время, ориентируясь на временную зону основной части пользователей сайта.

Если вы планируете настраивать бэкапы для вашего сайта самостоятельно, то можно начать с таких модулей:

  • Backup and Migrate - резервное копирование БД (помним, что с этим модулем нужно работать аккуратно, дабы никто не “свиснул” ваш сайт из-за неправильных настроек);

  • Backup and Migrate Files - резервное копирование файлов (на момент написания статьи есть только дев-версия модуля, следовательно, возможны неувязки в его работе).

Разработчикам изначально стоит обратить внимание на одну из систем контроля версий. Например, тот же Git или SVN разрешают не только делать бэкапы, но и вести синхронную разработку сайта между целой командой разработчиков. В том же Git можно подключить отдаленный репозиторий (место где хранятся данные о версиях файлов) от GitHub и не боятся того, что на сайте внезапно что-то пропадет.

Запомните: всегда делайте резервное копирования сайта: как его файлов, так и самой базы данных.

Синхронизация изменений между сайтами

Этот вопрос становится очень актуальным, если над сайтом работают несколько разработчиков и при этом делают разные задачи. Вот одна из стандартных схем работы нескольких программистов над одним проектом: у каждого разработчика есть свой локальный сайт, общая дев-площадка и, если сайт уже запущен, живой сервер. Весь функционал пишется локально, а потом переносится на дев-сайт и, если все реализовано успешно, попадает на живой.

Иногда несколько разработчиков могут работать над разными задачами со своей версией сайта. И в этом случае, без системы контроля версий не обойтись, ведь начнется возня с файлами. А если иметь настроенную систему контроля версий, да еще и правильно ею пользоваться, вы забудете о проблемах синхронной разработки.

Скажем больше, если проект разрабатывается одним человеком, все равно нужно подключать эту систему. Ведь таким образом можно не только видеть написанный код, но также будет возможность откатится к предыдущим изменениям, сравнивать ревизии и многое другое. Все это значительно упрощает разработку.

Для синхронизации типов материалов, вьюшек и другого наполнения сайта одна система контроля версий нам не поможет. Дело в том, что в этом случае мы имеем изменения в базе данных, а работа с ней отличается от обычного модуля или темы.

В таких случаях нужно взять на вооружение модуль Features. Если вам необходимо перенести тип материала, и все его поля из одного сайта на другой, тогда отметьте его на странице создания “Фичи” (/admin/structure/features/create). После этого создастся отдельный модуль, в котором будут все необходимые данные, только в текстовом формате. После этого нужно перенести папки с созданным модулем на другой сайт (это можно сделать с помощью системы контроля версий) и включить его. Готово!

Возможно, данная статья покажется многословной, но мы только лишь кратко описали схему переноса Друпал сайтов, настройки бэкапов и синхронизации. Надеемся, что каждый из вас возьмет для себя что-то новое и полезное. 

Если же у вас появились вопросы - не отказывайте себе в удовольствии задавать их в комментариях :)

Рассказать друзьям: