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

Содержание:
  1. Перемещение сайта MODX на новое место
  2. Комментарии

Статья, в которой рассмотрим, как осуществляется перенос сайта, работающего под управлением CMS MODX, в новое место (на новый сервер или из одной директории в другую).

Перемещение сайта MODX на новое место

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

Совет: Данные действия не являются обязательными. Но они могут вам помочь разобраться с проблемой неработоспособности сайта, которая может возникнуть после его переноса на новое место. Всё что вам необходимо выполнить - это выключить в менеджере MODX системный параметр "Использовать дружественные URL (friendly_urls)" и переименовать файл .htaccess в ht.access. А после переноса сайта на новое место и проверки его работоспособности, произвести обратные действия. Т.е. включить дружественные URL и переименовать файл ht.access в .htaccess.

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

Очистка кэша MODX

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

  1. Отключить сайт (Системные настройки -> Статус сайта -> положение "Нет").
  2. Очистить кэш сайта (Управление -> Очистить кэш).
  3. Очистить сессии (Управление -> Завершить все сеансы).

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

Копирование файлов

Следующее действие - это скопировать все файлы с рабочего проекта. Данное действие более быстро выполнить, если их предварительно упаковать в архив.

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

Например, на хостинге SpaceWeb можно воспользоваться файловым менеджером, в котором выбрать ссылку "Создать архив всех файлов" или в разделе "Backup" с помощью элемента "Сохранить архив всех файлов в домашней директории".

Создание резервной копии всех файлов на хостинге SpaceWeb

Например, на хостинге Beget создать архив необходимых файлов можно с помощью файлового менеджера (правая кнопка мыши -> пункт "Скачать архивом ZIP") или в разделе "BackUp" с помощью кнопки "Сохранить резервную копию".

Создание резервной копии всех файлов на хостинге Beget

Создание дампа базы данных

Выполнить дамп базы данных, т.е. экспорт её структуры и данных. В зависимости от того какую вы используете базу данных - это осуществляется одним или другим инструментом.

В MySQL, например, это осуществляется с помощью клиенткой утилиты mysqldump:

# экспорт всей базы данных dbname в файл dump.sql
# dbusername - имя пользователя
# pdbpassword - пароль пользователя
mysqldump -u dbusername -pdbpassword dbname > /путь/до/dump.sql

Данное действие также можно выполнить с помощью инструмента phpmyadmin. Для этого необходимо выбрать базу данных, перейти на вкладку "Экспорт", установить необходимые параметры и нажать кнопку "OK".

Создание дампа базы данных MODX с помощью инструмента phpmyadmin

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

  • на хостинге SpaceWeb - в панели управления выбрать значок "Базы MySQL" и в открывшейся странице напротив необходимой базы данных нажать на иконку дискеты (Создать копию "дамп" базы).
  • на хостинге Beget - в панели управления перейти в раздел "BackUp", нажать на вкладку "Базы данных", выбрать базу данных и нажать на кнопку "Выгрузить резервную копию".

Перенос файлов и данных на новое место

Выполняем обратные действия, т.е.:

  • Переносим архив с файлами в необходимую директорию на новом сервере. На хостинге эту операцию можно выполнить с помощью файлового менеджера. После копирования необходимо проверить права на директории и файлы. Для директорий должно быть выставлено 755, для файлов - 644. Если права для папок и файлов выставлены не правильно, то их можно изменить с помощью следующих команд в SSH-клиенте (PuTTY):
    # для директорий
    find /путь/до/сайта -type d -exec chmod 755 {} \;
    # для файлов
    find /путь/до/сайта -type f -exec chmod 644 {} \;
    
  • Создать базу данных и импортировать в неё ранее созданный дамп (файл с разрешением sql). Если файл имеет большой размер, то данную операцию необходимо выполнить в командной строке с помощью инструмента mysql:
    # импорт данных в базу данных с именем dbname из файла dump.sql
    # dbusername - имя пользователя базы данных
    # pdbpassword - пароль пользователя базы данных
    mysql -u dbusername -pdbpassword dbname < dump.sql
    На хостинге выполнение данной команды осуществляется через протокол SSH. В Windows для подключения к серверу по данному протоколу можно использовать SSH-клиент PuTTY.

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

Настройка конфигурационного файла MODX

После переноса файлов и данных на новый сервер (например, другой хостинг), необходимо изменить главный конфигурационный файл MODX config.inc.php, который расположен в следующем месте:

/core/config/config.inc.php  

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

# перейти в домашнюю директорию пользователя username
cd ~username
# показать текущую директорию
pwd

Открываем файл config.inc.php и вносим в него следующие изменения:

/* Настройки для подключения к базе данных */
/* 1 - имя сервера */
$database_server = 'localhost';
/* 2 - имя пользователя */
$database_user = 'root';
/* 3 - пароль */
$database_password = '';
/* 4 - кодировка */
$database_connection_charset = 'utf8';
/* 5 - имя базы данных */
$dbase = 'mytest';
/* 6 - dsn-строка для соединения с баой данных */
$database_dsn = 'mysql:host=localhost;dbname=mytest;charset=utf8';
  
/* Пути (/путь/до заменить на ваш путь до данной папки) */
$modx_core_path= '/путь/до/core/';
$modx_processors_path= '/путь/до/core/model/modx/processors/';
$modx_connectors_path= '/путь/до/connectors/';
$modx_manager_path= '/путь/до/manager/';
$modx_base_path= '/путь/до/';
$modx_assets_path= '/путь/до/assets/';
 
/* Имя домена */
$http_host='yoursite.com';

Внимание: В процессе редактирования файла config.inc.php возможно потребуется изменить его разрешения. После правки этого файла установите ему права только на чтение.

Изменения также необходимо ещё произвести в 3 дополнительных файлах php:

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

В этих файлах необходимо указать правильный полный путь до директории сайта MODX Revolution core :

define('MODX_CORE_PATH', '/путь/до/core/');  

Обновление файла .htaccess

При переносе сайта на новый (другой) хостинг, возможно, потребуется внести изменения в конфигурационный файл .htaccess. Это может быть связано с тем, что некоторые его текущие настройки могут не поддерживаться на новом хостинге.

Внимание: Если вы при переходе на новый хостинг меняете ещё и доменное имя сайта, то убедитесь в том, что вы провели соответствующие изменения в файле .htaccess.

Повторный запуск программы установки

После перемещения сайта и внесения изменений в конфигурационные файлы необходимо повторно запустить установочный скрипт (site.ru/setup).

Совет: Повторный процесс установки MODX Revolution позволит закрепить процедуру перемещения сайта посредством выполнения команд, находящихся в setup.

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


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

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

Комментарии: 19

Davesar
Davesar
Доброго времени суток!

Столкнулся с такой закавыкой:

Сайт на ModX 2.7.1-pl Revo нужно перенести с домена на домен на том же хостинге.
Старый домен был в подпапке, типа test.ru/foldername, новый — в домене.рф.

Поскольку хостинг тот же, БД не ковыряю, оставляю как есть. Сношу кэш, копирую фалы с папками, меняю вручную адреса в конфигах.
А дальше начинается шапито…
Откуда-то в
<base href="" />
всё ещё присутствует тот самый грешный /foldername, на котором раньше жил сайт (хотя конфиги прилежно вычищены), соответственно, не работают ни стили ни скрипты. Напрямую в чанке я его поправить на адрес в явном виде тоже не могу — в одминку оно меня, понятное дело тоже не пускает.

При попытке сказать адресу мойсайт.рф/setup дабы обновить цмс-ку, получаю 500-ую Internal Server Error.

Соответственно, вопрос: чего я делаю не так?..

ЗЫ Пермишены в порядке, проверял.
Александр Мальцев
Александр Мальцев
А конфигурационный файл сервера изменяли («.htaccess» если Apache)?
Davesar
Davesar
В .htaccess убрал папку в RewriteBase, оставил /
Так, кажется, правильно…

УПД Тут еще один момент, о котором я сразу не подумал: оба сайта (и старый и новый домен) одновременно живут на одной базе.
Пардон за тупой вопрос (я в данной области, мягко выражаясь, не спец): может ли это быть причиной случившейся чехарды?
Александр Мальцев
Александр Мальцев
Настройки MODX находятся в базе. Следовательно, если есть настройки, в которых как-то участвует доменное имя, то это конечно может повлиять. Кроме этого, обращение к доменному имени имеется также в «config.inc.php».
Davesar
Davesar
Конфиги все нужные поправил, пути прописаны адекватные.

Мои действия на данном этапе какие?
Убить файлы со старого домена?
Завести отдельную БД, развернуть туда бэкап и подключить ее к новому домену?
Александр Мальцев
Александр Мальцев
Если всё работает отлично, то конечно файлы удаляйте. А базу по желанию, если к ней можно обратиться, то просто используйте её.
Davesar
Davesar
Ничего не получилось :(

Старый сайт отключил, кэш сбросил. Файлы удалил.
По запросу в браузере новыйсайт.рф показывает папку старого сайта с архивом бэкапа. Хотя devtools рассказывает, что файлик лежит по новому адресу.

Видать, в базе где-то чёртов base href торчит…
Александр Мальцев
Александр Мальцев
Может в контекстах какие-то параметры созданы (Настройки -> Контексты -> Web).
Zidkov
Zidkov
Спасибо за статью! А как на счет перенести копию сайта на поддомен?
Данная инструкция подойдет для моей цели?
Цель — создать копию сайта (на движке MODX) на поддомене для тестирования плагинов, доработок и после переноса обратно на основной домен?
Александр Мальцев
Александр Мальцев
Да, но кроме этого может ещё потребоваться изменения настроек CMS MODX в админке. Например, настройка контекстов. Также, скорее всего, нужно будет ещё настроить конфигурационный файл веб-сервера.
IbraimVeliiev
IbraimVeliiev
На modx revo во время создания нового документа, после операции смены шаблона документа переадресосывает на страницу с ошибкой 403.
А если в уже созданном документе менять шаблон, то все окей. В чем проблема?
.htacces настроен достоверно. На других сайта такой же стоит.
Права папкам пробовал давать 777, но все равно.
Александр Мальцев
Александр Мальцев
С такой проблемой не сталкивался. Может быть версия CMS MODX Revolution такая. Попробуйте переустановить текущую версию или обновить её на более новую (если она не последняя).
Никита
Никита
Подскажите, Алексей

На OpenServer создаю такую структуру корневая_папка/папка/сайт_на_modx (для расшаривания по интернету 2х сайтов на 1 IP)

Пример — ibb.co/b12d2R

Все файлы-конфиги поправил но файлы именно самого бек енда не прогружаються

ibb.co/jwYhwm

Где можно изменить настройку? Ставил по точно такой же директории с нуля сайт там все прописалось ровно
Никита
Никита
Теперь старая проблема при Дружественном URL — true
Такая проблема

itchief.ru/assets/uploadify/7/c/6/7c6e393dfcdec25978c2671e09585ca6.png

При отключении все нормально

itchief.ru/assets/uploadify/c/1/2/c12e5b9745d18d4980b8708da518cb5a.png
Александр Мальцев
Александр Мальцев
В MODX Revolution мультидоменность решается через контексты.
Evgenij
Evgenij
Александр, добрый день!
Ради совета пишу Вам. Подскажите пожалуйста какой лучше выбрать хостинг? Выбор конечно огромен, глаза разбегаются. А желательно бы качественно и без проблем ) Сайт небольшой, на данный момент разработан на локалке, по количеству страниц чуть меньше 50. Будут добавляться лишь только фото в галерее, ну может статьи. Что можете посоветовать?
Александр Мальцев
Александр Мальцев
Добрый день.
В основном использую виртуальный хостинг от Sweb или Beget. Система CMS MODX работает на них очень хорошо. Все они предоставляют версию PHP 7.1. Проблем с недоступностью сайта из-за проблем хостинга практически нет. Т.е. сайт доступен 24 часа в сутки 365 дней в году. Например, если сайт хорошо оптимизирован, то на самом дешёвом тарифе виртуального хостинга Sweb он может выдержать нагрузку до 5000 посетителей в сутки. Считаю, что это не плохой показатель. На Beget вообще есть бесплатный тариф виртуального хостинга. Если посетителей в сутки немного, то можно выбрать даже его. А когда нагрузка возрастёт, то перейти на платный тариф.

Если вы хотите более специализированный хостинг, то можете попробовать modhost.pro. Он заточен под MODX и позволяет выполнять некоторые операции более просто, например, как обновление системы. Хотя на практике его не использовал, да и тарифы у него по сравнению с хостингами Sweb и Beget немного дороже.
Evgenij
Evgenij
Уххх, какой развернутый ответ… не, ответище!!))
Как раз вот в сторону Beget и думал, чаще на глаза попадался, да и нахваливают вроде. К слову сказать, конечно же не ради рекламы обращался. Просто реально их много и не знаешь куда и «кости кинуть».
Что ж, в принципе с выбором определился. А Вам огромное СПАСИБО за ответ-совет.