Курс по JavaScript от Хекслет

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

Александр Мальцев
Александр Мальцев
34K
19
Содержание:
  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

  1. Davesar
    Davesar
    2019-09-10 18:44:27
    Доброго времени суток!

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

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

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

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

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

    ЗЫ Пермишены в порядке, проверял.
  1. Александр Мальцев
    Александр Мальцев
    2019-09-11 07:17:24
    А конфигурационный файл сервера изменяли («.htaccess» если Apache)?
  • Davesar
    Davesar
    2019-09-11 09:50:49
    В .htaccess убрал папку в RewriteBase, оставил /
    Так, кажется, правильно…

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

    Мои действия на данном этапе какие?
    Убить файлы со старого домена?
    Завести отдельную БД, развернуть туда бэкап и подключить ее к новому домену?
  • Александр Мальцев
    Александр Мальцев
    2019-09-11 14:29:13
    Если всё работает отлично, то конечно файлы удаляйте. А базу по желанию, если к ней можно обратиться, то просто используйте её.
  • Davesar
    Davesar
    2019-09-11 16:19:59
    Ничего не получилось :(

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

    Видать, в базе где-то чёртов base href торчит…
  • Александр Мальцев
    Александр Мальцев
    2019-09-12 02:43:16
    Может в контекстах какие-то параметры созданы (Настройки -> Контексты -> Web).
  • Zidkov
    Zidkov
    2019-03-03 23:25:12
    Спасибо за статью! А как на счет перенести копию сайта на поддомен?
    Данная инструкция подойдет для моей цели?
    Цель — создать копию сайта (на движке MODX) на поддомене для тестирования плагинов, доработок и после переноса обратно на основной домен?
    1. Александр Мальцев
      Александр Мальцев
      2019-03-07 07:03:14
      Да, но кроме этого может ещё потребоваться изменения настроек CMS MODX в админке. Например, настройка контекстов. Также, скорее всего, нужно будет ещё настроить конфигурационный файл веб-сервера.
  • IbraimVeliiev
    IbraimVeliiev
    2019-02-18 08:41:57
    На modx revo во время создания нового документа, после операции смены шаблона документа переадресосывает на страницу с ошибкой 403.
    А если в уже созданном документе менять шаблон, то все окей. В чем проблема?
    .htacces настроен достоверно. На других сайта такой же стоит.
    Права папкам пробовал давать 777, но все равно.
    1. Александр Мальцев
      Александр Мальцев
      2019-02-18 13:23:04
      С такой проблемой не сталкивался. Может быть версия CMS MODX Revolution такая. Попробуйте переустановить текущую версию или обновить её на более новую (если она не последняя).
  • Никита
    Никита
    2018-01-12 19:29:22
    Подскажите, Алексей

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

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

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

    ibb.co/jwYhwm

    Где можно изменить настройку? Ставил по точно такой же директории с нуля сайт там все прописалось ровно
    1. Никита
      Никита
      2018-01-12 19:53:09
    2. Никита
      Никита
      2018-01-12 20:22:52
      Теперь старая проблема при Дружественном URL — true
      Такая проблема

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

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

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

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