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

Александр Мальцев
Александр Мальцев
27K
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 в корень вашего сайта. Запустить процесс установки и выбрать режим обновления.


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

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

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

  1. Davesar
    Davesar
    10.09.2019, 18:44
    Доброго времени суток!

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

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

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

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

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

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

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

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

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

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

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

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

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

          ibb.co/jwYhwm

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

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

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

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

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