Начнем с того, что на официальном сайте 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/ (всю! Чтобы осталась пустая!).
Очистите у себя куки.
ЗЫ
Ну, вроде бы, все… Вопросы? Предложения?
В какую сторону должны быть бекслеши у путей для виндового сервера.
Сделал сайт на линуксе у заказчика на виндовс. Никак не могу объяснить их программисту как запустить сайт.
Вроде все переделал только с путями сомневаюсь.
Postcoder, прошу прощения за такую задержку… Вордпресс почему-то не прислал мне уведомлене о том, что появился комментарий… Не полез бы проверять — не заметил бы…
Пишу уже чтобы закрыть вопрос, ибо мало ли у кого-то возникнет похожая проблема.
Все пути, которые подразумевают обращение к файлам в пределах операционной системы, файловой системы — пишутся с теми слэшами, которые используетс ОС. Более того, если в конфиге требуется написать полный путь — надо писать полный путь (это в *NIX путь начинается со слэша, а в Windows путь начинается с диска).
Кстати.
Слэш — это / (*NIX, URI)
Бэкслэш — это \\ (Windows)
Здравствуйте.Вот такой нюанс интересует.Залил сайт на сервер.Хочу создать папку для шаблонов в /assets/ не пускает.Смотрю владелец индеец.Ладно на сервере я это решил.а как на хостинге решается?
Да также, как и на локалхосте. Если права есть. Если прав нет (скорее всего их нет) — надо писать в техподдержку, просить, чтобы сменили владельца. Но что-то мне говорит о том, что владелец тут не причем, скорее всего у вас выставлены права, которые не позволяют писать в папку. Поставьте права, например 777, чтобы проверить, будет ли записываться. Вообще, должно хватать 644, но всякое бывает, хостеры тоже разные встречаются.
Да,это что -то. Пока почти на всё права на 777 не сменил+владельца не поменял,папку с кешем не удалил ничего нормально не настраивалось. После настройки вернул 755 и 644.
Пойду поюзаю evo.
Да, Рево капризный товарищ ))
Да собственно всё дело с рево завязалось из за того,что на ево что то почта не хочет работать.Для проверки ставил рево.С ней всё нормально. А на ево 1.0.12 письма не приходят. Вот разбираюсь.Уже сутки.
Спасибо, помогли!
Спасибо огромное два часа сидел мучился.
еще одна причина, по которой на хостинге сайт открывает белый экран, это прописание не верных путей в самодельном сниппете, например у меня было на локальном сервере в сниппете строка include(‘/core/model/modx/xmlrss/rssfetch.class.php’); а при переносе на хостинг (в моем случае) ее надо менять на include(‘/www/bla-bla/users/bla-bla/www/htdocs/core/model/modx/xmlrss/rssfetch.class.php’); после этого белый экран по фронтэнду пропдает и все работает
Спасибо большое, очень полезная статья. Много нового узнал, Вы молодец!
От души
После переноса сайта в другую папку на хостинге появилась ошибка 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 на наличие принудительных редиректов и временно их удалить оттуда.
Пути верные, ошибка осталась, как исправить?
Скачайте скрипт проверки конфигурации отсюда https://github.com/craftsmancoding/modx_utils