Перенос сайта (Drupal 7) на localhost

Аватар пользователя userok

Здравствуйте. Рассмотрим возможность переноса сайта на Drupal 7 с хостинга на локальный компьютер. Если вы занимаетесь разработкой или обслуживанием сайтов, то перед внесением изменений на хостинге желательно посмотреть как поведёт себя сайт после изменений, поэтому желательно иметь его копию на локальной машине. В принципе в переносе сайта нет ничего сложного, однако, если сайт создан на Drupal 7 имеется пара нюансов.

Итак, общая последовательность действий:
1) Отключить чистые ссылки на сайте или установить модуль rewrite для apache.
2) Перевести сайт в режим обслуживания (желательно)
3) Скопировать файлы сайта с хостинга (возможно в архиве)
4) Снять дамп БД на хостинге
5) Вывести сайт из режима обслуживания (если вводили) и задействовать чистые ссылки (если это необходимо)
6) Подготовить место для сайта на локальной машине
7) Разархивировать в подготовленное место файлы
8) Создать пустую БД на локальной машине
9) Развернуть сохранённый дамп в созданную базу
10) Отредактировать файл settings.php
11) Вывести локальный сайт из режима обслуживания и включить чистые ссылки.

Теперь рассмотрим процесс немного подробнее:

1) Устанавливаем модуль rewrite(необходим для корректной работы чистых ссылок):
$ sudo a2enmod rewrite;
Перезапускаем apache:

$ sudo /etc/init.d/httpd2 restart;

Или отключаем чистые ссылки. Заходим в «Администрирование->Конфигурация->Чистые ссылки»

Снимаем галку «Включить чистые ссылки» и нажимаем «Сохранить настройки»

2) Заходим в «Администрирование->Режим обслуживания», ставим галку «Перевести сайт в режим обслуживания» и нажимаем кнопку сохранить настройки.

3) Копируем файлы сайта с хостинга на локальный компьютер с помощью средств, предоставленных хостером.

4) Делаем копию(дамп) БД на локальный компьютер с помощью средств, предоставленных хостером.

5) Заходим в «Администрирование->Режим обслуживания», снимаем галку «Перевести сайт в режим обслуживания» и нажимаем кнопку «Сохранить настройки». Заходим в «Администрирование->Конфигурация->Чистые ссылки», устанавливаем галку «Включить чистые ссылки» и нажимаем «Сохранить настройки»

6) Здесь всё индивидуально. В нашем случае имеется локальная машина с установленной ОС Linux, на которой вэб-сервер Apache настроен на поддержку нескольких сайтов.
Поэтому создаем пустую папку thirdsite в каталоге /var/www/html, а также одноимённую папку в каталоге /var/log/httpd2/ и задаём права пользователей в соответствии в рекомендациями в соответствующей статье.

Также добавим следующую секцию в файл /etc/httpd2/conf/httpd2.conf

DocumentRoot /var/www/html/thirdsite

ServerName thirdsite.localhost

ErrorLog /var/log/httpd2/thirdsite/error_log

CustomLog /var/log/httpd2/thirdsite/access_log combined

7) Разархивируем скачанный с хостинга архив с файлами сайта в каталог /var/www/html/thirdsite.

8) Создаём пустую БД MySQL. В нашем случае сервер БД установлен на ОС Linux, однако команды MySQL идентичны для всех платформ. Подразумеваем что MySQL уже установлен и предварительно настроен.

Заходим в MySQL из консоли.
$ mysql -u root

Создаём новую пустую базу:
mysql> create database thirdsite;

Создаем пользователя для созданной базы:
mysql> grant usage on thirdsite.* to dbuser@localhost identified by 'dbuser';

Даём пользователю все необходимые привилегии для работы с БД:
mysql> grant all privileges on thirdsite.* to dbuser@localhost;

Теперь попробуем подключиться к созданной базе с именем пользователя которого мы только что создали:
$ mysql -u dbuser -p

9) Подключаем в консоли нашу БД командой
mysql>use database thirdsite;
И, использую команду source, разворачиваем сохранённый с хостинга дамп БД в нашу чистую базу на локальной машине:
mysql>source /home/user/download/_tmp_root_bd-third.sql;
После развертывания базы из дампа можно посмотреть появившиеся в ней таблицы с помощью команды:
mysql> show tables;

10) Почти всё готово. Файлы сайта лежат на своём месте, база данных импортирована. Осталось только настроить подключение Drupal к БД в файле settings.php, в противном случае вы скорее всего получите ошибку типа PDOException: SQLSTATE[28000] [1045] Access denied for user..., т. к. подключение осуществляется с учётными данными справедливыми для хостинга, но не для вашей локальной системы. В нашем случае этот файл находится по адресу: /var/www/html/thirdsite/sites/default/.
Находим в этом файле следующие строки и заполняем их в соответствии с нашими реалиями:

$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'thirdsite',
'username' => 'dbuser',
'password' => 'dbuser',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);

И ещё один небольшой момент. В некоторых случаях после переноса сайта не работает авторизация пользователей, т.е. вы вводите свой логин и пароль, нажимаете "Войти", но ничего не происходит. Для того чтобы избежать этого надо в том-же файле изменить переменную $cookie_domain, например, было: $cookie_domain = '.example.com; выставляем для localhost: $cookie_domain = '.localhost';, в нашем примере мы напишем: $cookie_domain = '.localhost/thirdsite';.

11) Всё готово! Теперь(в нашем случае) по адресу http://127.0.0.1/thirdsite/ видим главную страницу нашего сайта. Осталось вывести сайт из режима обслуживания(если вводили) и включить чистые ссылки(если необходимо).

Эта статья опубликована под Creative Commons Attribution ShareAlike лицензией.

Добавить комментарий