Переном сайта MODX Revo на другой хостинг

Сегодня мы рассмотрим как быстро перенести MODX Revo куда угодно и от куда угодно (с локального сервера на хостинг; с хостинга на локальный сервер; с хостинга на хостинг, с одного домена на другой и т.д.).

Бэкап с помощью дополнения BackupMODX

Дополнение BackupMODX упростит и ускорит создание бэкапов сайта на MODX, но сначала его нужно установить.

В админке перейдите в Приложения — Установщик, а затем найдите и установите там дополнение BackupMODX.

Далее нужно вынести виджет установленного дополнения на главную страницу админки, для этого:

  • перейдите в управление панелями и виджетами: Настройки (значок с шестеренкой) — Панели (или Панели виджетов).
  • правой кнопкой мыши нажмите на названии вашей текущей панели, как правило это Default и выберите Редактировать панель.

в открывшемся окне нажмите кнопку Добавить виджет и выберите BackupMODX, затем нажмите сохраните изменения.

Если всё сделали правильно, на главной странице админки появится виджет BackupMODX, позволяющий делать бэкапы.

Теперь, когда потребуется сделать бэкап, отметьте галочками, что нужно забэкапить — файлы, базу данных или все сразу, а затем нажмите кнопку Backup Site. После того как бэкап будет создан, скачайте архив с файлами сайта и SQL-дамп к себе на компьютер.

По умолчанию файлы с бэкапами хранятся в папке /core/components/backupmodx/backups/, но путь можно изменить в настройках BackupMODX.

На локалхосте

Перво-наперво

Нам нужно очистить кэш в самом MODX (кстати, теперь, оказывается, правильно писать — MODX, а не MODx — сам в шоке). Для этого идем в:

Сайт —> Обновить сайт (Site —> Clear Cache)

Тут важен один момент. Если вы находитесь в админке — эта приблуда может отработать неправильно и, при нажатии кнопки ОК, наделать там еще временных файлов. Очищаем пока как есть — кнопкой.

Теперь идем сюда:

Безопасность —> Завершить все сеансы (Security —> Flush All Sessions)

Этим мы сбросим сессии, разлогиним всех пользователей и разлогинимся сами. Перед этим я на всякий случай делаю Безопасность —> Перезагрузить права доступа, чтобы наверняка.

Теперь, когда сессии сброшены, можно очистить остатки кэша в папке /core/cache (безжалостно удаляем оттуда все папки).

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

Народ рекомендует устанавливать с нуля, а потом заливать базу данных, но иногда это не вариант, например, когда есть ресурсы, хранящиеся в виде файлов (шаблоны, установленные модули, например), поэтому я разберу именно этот вариант.

Бэкапим файлы:

cd /path/to/root/site/ 

tar -czf backupfiles.tar.gz .

Обратите внимание на точку после имени файла. Там пробел еще перед ней

Точка говорит, что архвируем текущую директорию.

Сначала говорим архиватору (tar), что будем упаковывать (Create Zip File), затем — в какой архив будем это все добро складывать (backupfiles.tar.gz), а потом — какую папку архивируем (точка).

То есть, если у нас сайт лежит в папке /srv/www/vhosts/mysite.loc/ — в первой строчке пишем этот путь. У меня папка с виртуальными хостами (читай — сайтами) смонтирована на отдельный винт, например, поэтому такой путь.

Если это все дело происходит в Windows — упаковываем сайт в ZIP.

Через phpMyAdmin

Открываем в phpMyAdmin нашу базу (пусть она будет называться mydatabase), жмем Export, дажее жмем выбиралку Способ экспорта в «Обычный — отображать все возможные настройки«.

Теперь нажимаем OK и сохраняем SQL файл.

Через командную строку

С помощью утилиты mysqldump

mysqldump -u username -p mydatabase > /path/to/backups/my_revo_db.sql

В этом случае нужно, чтобы пользователь username мог  выполнять запросы SELECT (чтобы права у него такие были), однако лучше указывать пользователя, указанного в файле /core/config/config.inc.php в переменной $database_user (это тот самый, которого указывали при установке MODX) — этот точно все умеет.

После нажатия Enter — mysqldump спросит пароль. При вводе символов — ничего отображаться не будет. Безопасность, знаете ли )) Пароль можно ввести руками или вставить из клипборда.

Ну, с этим вроде все…

Приступаем к разворачиванию MODX Revolution на хостинге

Закачиваем архив на хостинг в корень сайта (как правило, это папка public_html или www). Теперь надо его распаковать.

Если есть доступ к ssh:

переходим в папку www

cd ~/www/

или public_html

cd ~/public_html/

и распаковываем архив:

tar xzf backupfiles.tar.gz

Если он в zip — пишем

unzip backupfiles.zip

Файлы распакуются в текущую папку, куда мы перешли с помощью cd

Если доступа к ssh нет или боимся — идем в Файловый менеджер в Панели управления хостингом и распаковываем архив там.

Архив распаковали, теперь надо файлам и папкам раздать разрешения. Хорошее дело, когда файлам разрешения стоят 644, а папкам — 755.

Файловый менеджев cPanel вроде сам ставит разрешения при распаковке. Уже не помню, врать не буду.

В любом случае, в ssh это делается так (при условии, что сайт у нас лежит в папке ~/www/).

Для папок:

cd ~/www && find . -type d -exec chmod 755 {} \+

Для мамок файлов:

cd ~/www && find . -type f -exec chmod 644 {} \+

Разжевывать что к чему — не буду, все описано тут.

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

База данных

Можно сделать все руками, можно — через phpMyAdmin. Сначала о том, как делать руками (ssh):

mysql -u username -p database_in_hosting 

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

database_in_hosting — это база данных на хостинге.

Теперь тот же смысл, только в phpMyAdmin

Заходим в phpMyAdmin, выбираем базу, куда будем импортировать бэкап и нажимаем Import.

Выбираем файл с бэкапом (my_revo_db.sql) и жмем ОК.

Теперь нужно в открыть таблицу workspaces и там исправить путь (поле path) на этот (абсолютный путь от корня сервера к папке core в MODX): /home/mysite/public_html/core/

Можно сделать запросом:

UPDATE `database_in_hosting`.`workspaces` SET path='/home/mysite/public_html/core/' WHERE id='1';

А можно в phpMyAdmin.

Ну, вроде осилили…

Продолжим дела наши файловые.

Теперь нужно поправить конфиг.

Открываем файл /core/config/config.inc.php

Там меняем значения на следующие (расположены так, как они идут в конфиге):

$database_type = 'mysql';
$database_server = 'localhost';
$database_user = 'username';
$database_password = 'password';
$database_connection_charset = 'utf8';
$dbase = 'database_in_hosting';
$table_prefix = 'modx_';
$database_dsn = 'mysql:host=localhost;dbname=database_in_hosting;charset=utf-8';
 $modx_core_path= '/home/mysite/public_html/core/';
 $modx_processors_path= '/home/mysite/public_html/core/model/modx/processors/';
 $modx_connectors_path= '/home/mysite/public_html/connectors/';
 $modx_manager_path= '/home/mysite/public_html/manager/';
 $modx_base_path= '/home/mysite/public_html/';
 $http_host=mysite.ru;
 $modx_assets_path= '/home/mysite/public_html/assets/';

Обращаем внимание на:

  • префикс базы данных, не забываем про него
  • имя базы данных пишется в 2 местах — строки 10 и 12
  • пути, они указываются от корня сервера, а не домена
  • не забываем про слэши в конце путей

Если сайт будет/был в подкаталоге — учитываем это в переменных $modx_connectors_url, $modx_manager_url, и $modx_base_url.

Есть также 3 дополнительных конфигурационных файла:

  • /config.core.php
  • /connectors/config.core.php
  • /manager/config.core.php

Там лежат константы:

define('MODX_CORE_PATH', '/home/mysite/public_html/core/');
define('MODX_CONFIG_KEY', 'config');

По крайней мере, так они должны выглядеть (опять же, отталкиваемся от своих путей).

.htaccess

Не все хостинги понимают директивы типа php_flag или php_value.

После этого всего буйства цвета, сайт должен заработать — можно зайти в админку и настроить модули (например, галерею, точнее пути к ее папкам, если она есть). Для этого идем: Система —> Настройки системы (System -> System Settings) и над полем Ключ видим, написано core и стрелки вверх-вниз. Вот там выбираем расширение.

Перенос MODX Revolution на другой хостинг

По различным причинам и довольно часто возникает насущная необходимость перенести сайт созданный с помощью MODX Revolution на хостинг другого провайдера. Существует несколько способов осуществить данную операцию, они достаточно кропотливы поскольку связаны с правкой конфигурации, то есть путей к корневой папке MODX и реквизитов (имя пользователя и пароль) подключения к базе данных. При выполнении этих хитроумных операций легко запутаться или ошибиться, кроме того они достаточно трудоёмки.

В данной статье мы опишем два способа переноса, один традиционный и второй, менее распространённый, но как нам кажется более лёгкий и главное удобный.

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

Итак первый, традиционный способ переноса MODX:

Полная очистка кэша

Первым делом идём в админку и выполняем:

После чего, там же в админке:

Тем самым очищается кэш и завершаются сеансы всех пользователей, в том числе и ваш.
А вот теперь через FTP менеджер (рекомендуем удобный и бесплатный FileZilla) открываем копируемый сайт, заходим в папку: core/cash и удаляем там всё содержимое.
Этими операциями мы полностью очистили кэш.

Создание бэкапов

Копируем и скачиваем все файлы и папки переносимого сайта, сохраняем в новую папку на жёсткий диск.

Посредством phpMyAdmin делаем экспорт рабочей базы сайта, сохраняем.

Вносим изменения в конфигурационные файлы

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

Лучше всего это сделать в бесплатном и удобном текстовом редакторе Notepad++

Открываем например файл

находим в нём подобную запись:

На хостинге beget.ru он выглядит таким образом. На других хостингах путь будет другим.

Меняем путь на тот, который используется на новом хостинге. К примеру:

$modx_core_path= ‘/home/www/site.ru/core/’;

Чтобы не искать старые пути во всех файлах, воспользуемся поиском этой программы.

Находим и выделяем старый путь:

Далее:

В поле:

вставляем наш путь.

А в поле:

указываем ту самую папку, в которой сохранён наш бэкап.

Подобную операцию проделываем с логином и паролём к базе данных.

Закачиваем базу данных

С помощью phpMyAdmin импортируем ранее сделанный нами дамп базы данных со старого хостинга.

Вот собственно и всё, после наших многотрудных операций сайт должен заработать уже на новом хостинге.

У многих, особенно начинающих, вебмастеров, описанный способ вызывает затруднения и не всегда проходит успешно. Потому мы предлагаем, на наш взгляд более простой и удобный способ, обнаруженный на просторах интернета, а именно вот тут.

Способ переноса второй, альтернативный

Этот способ использовался нами много раз (50+) и каждый раз успешно, то есть сайты после переноса работали безо всяких сбоев и ошибок.

Итак, по порядку:

  • Первым делом экспортируем существующую базу данных, за исключением таблицы: modx_workspaces (префикс может отличаться). При экспорте в phpMyAdmin отмечаем все таблицы и снимаем галочку у таблицы modx_workspaces, она в самом низу. Сохраняем.
  • Сохраняем все файлы со старого хостинга, за исключением файла:
  • Устанавливаем на новый хостинг чистый MODX той же версии, что и на старом.
  • Заменяем содержимое созданной при установке MODX базы данных на сохранённый нами дамп (в пункте 1)
  • Заменяем все файлы на новом хостинге, сохранёнными файлами со старого (пункт 2)
  • Ставим MODX ещё раз (обновление существующей установки)

Вот и всё, сайт должен работать, наслаждаемся результатом.

Решение проблем

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

Очистите кэш, для этого удалите содержимое папки /core/cache вашего сайта. Саму папку cache удалять не нужно.

Проверьте права на папки и файлы, в большинстве случаев они должны быть установлены в 755 для папок и 644 для файлов. Изменить права можно через файловый менеджер в панели вашего хостинга или через FTP-клиент, но из-за большого количества файлов, процесс может растянуться по времени. Поэтому лучше всего это сделать через консоль SSH.

Для директорий:

find /path/to/dir -type d -exec chmod 755 {} \;

Для файлов:

find /path/to/dir -type f -exec chmod 644 {} \;

Для смены прав можно так же воспользоваться bash скриптом приведённым ниже. Не забудьте изменить в нём путь до вашего сайта и пользователя, использовать пользователя root небезопасно.

#!/bin/bash

dir=/var/www/site
user=root

echo "Set permissions for $dir...";
echo "CHOWN files...";
chown -R $user:$user "$dir";
echo "CHMOD directories...";
find "$dir" -type d -exec chmod 0755 '{}' \;
echo "CHMOD files...";
find "$dir" -type f -exec chmod 0644 '{}' \;

Если с правами все в порядке, перепроверьте, что в конфигурационном файле /core/config/config.inc.php указаны правильные данные — доступы к базе данных и пути к ядру и папкам сайта. Чаще всего проблема именно в этом.

Так же убедитесь, что в файлах указан правильный путь к ядру MODX.

  • /config.core.php
  • /connectors/config.core.php
  • /manager/config.core.php

Если выключали сайт на этапе подготовки к бэкапу, убедитесь, что включили его: Системные настройки – Сайт – Статус сайта: Да.

Попробуйте провести повторную установку, для этого:

в директорию сайта загрузите папку setup из установочного пакета той же версии MODX (это важно), которая используется на вашем сайте, её можно скачать на с официального сайта MODX;
перейдите по адресу yousite.ru/setup и следуя инструкциям установщика, переустановите MODX в режиме обновления.

Обновление базы данных

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

Обратите внимание, что может использовать разные драйвера баз данных. Следующая информация описывает работу с mysql, но вы можете сделать тоже самое с драйвером sqlsrv

Чтобы увидеть информацию о пути, который хранится в базе данных MODx, введите следующий запрос в PhpMyAdmin, утилите mysql, или любоv другого приложении, которое позволяет выполнять запросы к базе данных:

SELECT `path` FROM `your_revo_db`.`workspaces`;

Измените «your_revo_db» на имя вашей базы данных и при необходимости укажите префикс таблиц(на пример «modx_workspaces»). Если пути на новом сервере отличаются от старых, то вам необходимо обновить их. Вы можете обновить их при помощи phpmyadmin в ручную, либо выполнить следующую команду:

UPDATE `your_revo_db`.`workspaces` SET path='/path/to/modx_doc_root/core/' WHERE id='1';

Запакуйте ваши файлы

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

На UNIX системе вы можете заархивировать файлы следующей командой:

 tar -czf /path/to/backup/modx_revo_site.tar.gz /path/to/modx_doc_root/

Далее перенесите файлы на новый сервер. В новом месте предварительно лучше создать отдельную папку для архива. Идея в том, что если вы распакуете архив в отдельной папке, вы не сможете перепутать файлы modx с другими файлами вашего сервера. В UNIX системе вы можете распаковать файлы следующей командой:

gunzip modx_revo_site.tar.gz
tar -xvf modx_revo_site.tar

После того, как вы распакуете файлы, вы можете перенести их в нужное место командой mv, либо при помощи встроенного файлового менеджера mc.

Если MODX Revolution не заработал на хостинге.

MODX хочет 64 мегабайта оперативы. Если меньше — он откажется работать.

Не все хостинги понимают директивы типа php_flag или php_value в файле .htaccess. Попробуйте избавиться от них.

Посмотрите в логи сервера (в cPanel — это «Журнал ошибок»), возможно там есть какие-то ответы.

Посмотрите на логи в папке с сайтом (файл error_log) — там тоже часто пишут полености.

Зайдите сюда, там лежит скрипт проверки конфига MODX Revolution. Файл называется test_config.php. Заливаем его в корень сайта и вызываем: http://mysite.ru/test_config.php.

Очистите папку /core/cache/ (всю! Чтобы осталась пустая!).

Очистите у себя куки.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий