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

Начнем с того, что на официальном сайте MODX уже есть готовое руководство к действию, но оно на английском. По своему опыту знаю, что если человек не силен в заморских наречиях — ему даже онлайн-переводчик слабо поможет. Только запутает. Но нам ли быть в печали? Это руководство пишется как шпаргалка-ОЧЕНЬ-вольный-перевод этого документа с разбором возможных граблей.

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

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

Нам нужно очистить кэш в самом 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 < my_revo_db.sql

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

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=utf8';
 $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 хочет 64 мегабайта оперативы. Если меньше — он откажется работать.

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

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

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

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

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

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

 

ЗЫ

Ну, вроде бы, все… Вопросы? Предложения?

0

Перенос MODX Revolution на хостинг: 14 комментариев

  1. Postcoder

    В какую сторону должны быть бекслеши у путей для виндового сервера.
    Сделал сайт на линуксе у заказчика на виндовс. Никак не могу объяснить их программисту как запустить сайт.
    Вроде все переделал только с путями сомневаюсь.

  2. merinovkv Автор записи

    Postcoder, прошу прощения за такую задержку… Вордпресс почему-то не прислал мне уведомлене о том, что появился комментарий… Не полез бы проверять — не заметил бы…
    Пишу уже чтобы закрыть вопрос, ибо мало ли у кого-то возникнет похожая проблема.

    Все пути, которые подразумевают обращение к файлам в пределах операционной системы, файловой системы — пишутся с теми слэшами, которые используетс ОС. Более того, если в конфиге требуется написать полный путь — надо писать полный путь (это в *NIX путь начинается со слэша, а в Windows путь начинается с диска).

    Кстати.
    Слэш — это / (*NIX, URI)
    Бэкслэш — это \\ (Windows)

  3. Евгений

    Здравствуйте.Вот такой нюанс интересует.Залил сайт на сервер.Хочу создать папку для шаблонов в /assets/ не пускает.Смотрю владелец индеец.Ладно на сервере я это решил.а как на хостинге решается?

    1. merinovkv Автор записи

      Да также, как и на локалхосте. Если права есть. Если прав нет (скорее всего их нет) — надо писать в техподдержку, просить, чтобы сменили владельца. Но что-то мне говорит о том, что владелец тут не причем, скорее всего у вас выставлены права, которые не позволяют писать в папку. Поставьте права, например 777, чтобы проверить, будет ли записываться. Вообще, должно хватать 644, но всякое бывает, хостеры тоже разные встречаются.

  4. Евгений

    Да,это что -то. Пока почти на всё права на 777 не сменил+владельца не поменял,папку с кешем не удалил ничего нормально не настраивалось. После настройки вернул 755 и 644.
    Пойду поюзаю evo.

  5. Евгений

    Да собственно всё дело с рево завязалось из за того,что на ево что то почта не хочет работать.Для проверки ставил рево.С ней всё нормально. А на ево 1.0.12 письма не приходят. Вот разбираюсь.Уже сутки.

  6. Илья

    еще одна причина, по которой на хостинге сайт открывает белый экран, это прописание не верных путей в самодельном сниппете, например у меня было на локальном сервере в сниппете строка include(‘/core/model/modx/xmlrss/rssfetch.class.php’); а при переносе на хостинг (в моем случае) ее надо менять на include(‘/www/bla-bla/users/bla-bla/www/htdocs/core/model/modx/xmlrss/rssfetch.class.php’); после этого белый экран по фронтэнду пропдает и все работает

  7. Евгений

    После переноса сайта в другую папку на хостинге появилась ошибка 503 Site temporarily unavailable, пути правил по следующей инструкции:
    1. Проверить все пути в
    core/config/config.inc.php

    2. Проверить пути в
    /config.core.php
    /connectors/config.core.php
    /manager/config.core.php

    3. Удалить все содержимое
    core/cache

    4. Проверить htaccess на наличие принудительных редиректов и временно их удалить оттуда.

    Пути верные, ошибка осталась, как исправить?

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