Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Проблемы с переездом на настоящий WEB-сервер


Все работы по адаптации MODx и первоначальному наполнению контентом мы выполняли на локальном WEB-сервере. Но рано или поздно наступает пора выходить во "взрослую" жизнь.

И тут начинается....

Подготовка к переезду

Сам по себе переезд не так уж сложен. Если, конечно, хорошо подготовиться.

Разумеется, надо как следует почистить каталоги сайта - зачем тащить ненужное барахло? Удаляем, например, заведомо ненужные языковые файлы (несколько сотен). Ищем файлы  Thumbs.db - для сервера это грязь. Нечего делать на сервере BMP-файлам и любым файлам с русскоязычными именами.

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

Обязательно надо удалить файлы, кэшируемые нашим любимим плагином DirectResize - они у нас живут в каталоге assets/cache/phpthumb.

Самое главное - сохраняем в SQL-файл базу данных сайта. Экспорт базы в SQL мы уже описывали в заметке о миграции с Etomite. Не забываем опустошить таблицы логов - они занимают большую часть SQL.

Копирование сайта

Здесь нет ничего сложного. Главное - не промазать, ускопировать в правильный каталог. Копировать придется с помощью какого-то FTP-клиента.

 После копирования следует изменить настройки подключения к базе данных в файле

manager/includes/config.inc.php

Это  параметры, задаваемые владельцем хостинга:

$database_server = "XXX";
$database_user = "YYYY";
$database_password = "ZZZZ";

Очень важным является установка прав доступа (атрибутов папок и файлов). На локальном сервере, работавшем под Windows, все папки были доступны. На настоящем сервере всё будет не так.

В документации указано, что права доступа 0777 должны иметь:

 

  • /assets/cache (и все содержащиеся в ней файлы)
  • /assets/export 
  • /assets/images 
  • /assets/modules (для установки модулей)
  • /manager/includes/config.inc.php (позже должен иметь доступ "Только чтение") 

 Вообще-то это излишне и хороший Админ (т.е. злобный Админ) таких прав не даст. Для каталогов достаточно установить набор атрибутов 775, а для файлов - 644:

Установка атрибутов

Вообще, откуда появилось требование в MODx на атрибут 777? Анализ кода показал, что он используется в браузере файлов MCPUK. Мы от него отказались (см. отдельную статью). Еще есть проверка такого атрибута в отдельных кривоватых плагинах. Атрибут 777 - это прямая дыра для взлома сайта. При работе через Менеджер MODx доступ к каталогам и файлам осуществляется от имени ВЕБ-сервера, а он относится к Членам группы. При загрузке файлов через FTP доступ осуществляется от имени Владельца. А вот всяким  Прочим совершенно незачем  записывать файлы.

 

Итак, мы скопировали сайт, но он пока не рабочий - у него нет базы данных.

Копирование базы данных

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

SQL-файл надо просмотреть, и, как минимум, убедиться что он имеет правильную кодировку - UTF-8, причем без BOM.Кроме того, при экспорте БД надо было правильно указать кодировку, а это связано не только с кодировкой самого файла, но и с директивами SQL, которые включала программа-экспортер. Убеждаемся, что в SQL везде имеется директива

DEFAULT CHARSET=utf8  и нет DEFAULT CHARSET=cp1251

Не мешает поискать строчку вида http://site_name/ - где-то могут случайно оказаться абсолютные ссылки на старый, локальный сайт. Их необходимо исправить на относительные. У нас, кстати, нашлось несколько таких ссылок на картинки.

Для импорта SQL в базу данных нужна специальная программа. Скорее всего, импорт придется делать через PhpMyAdmin из браузера, хотя могут быть и другие варианты. 

По идее всё просто - заходим в нашу пока пустую базу данных (или создаем её) и делаем импорт нашего SQL-файла. По идее должны создаться все требуемые таблицы и заполниться данными. По идее в БД должны оказаться данные в требуемой кодировке (в нашем случае - utf8).Такая кодировка должна быть указана для базы данных в момент создания, а кодировка таблиц задана в SQL.

Такую операцию мы проделывали десятки раз. Но вот с MODx "идея" не сработала! База данных на сервере оказалась в кодировке cp1251.  Про проблемы с кодировками мы уже писали в специальной заметке. На сервере имеется аналогичная ситуация. В MySQL крутятся несколько десятков баз данных и все они имеют кодировку cp1251. Она и задана в конфигурационном файле сервера. Там кодировку менять нельзя - перестанут отображаться другие сайты.

Во время импорта сервер сам перекодирует данныеиз utf8 в cp1251.

Для решения проблемы необходимо в начало SQL-файла вручную вписать директиву:

SET CHARACTER SET utf8; 

или

 SET NAMES utf8;

Вот теперь база данных попадет на сервер в нужной кодировке.

Для пробы загружаем сайт (он должен отобразиться нормально), заходим в менеджер - там также всё должно быть правильно отображаться - и дерево документов, и оформление самого менеджера.

Настройка менеджера

Сразу заходим в Инструменты-Конфигурация и настраиваем основные параметры.

1. На вкладке Интерфейс и представление заменяем строку Путь к файлам: на нечто наподобие

/usr/local/www/sites/site_name/www/assets/  - по указанию администратора хостинга.

2. Аналогичную замену делаем на вкладке Файл-менеджер в строке Путь для файлового менеджера.

Вот теперь, по идее, сайт должен работать. И на первый взгляд он работает.

Но приключения только начинаются.... 

 

21-04-2009 15:23:32



    Содержание раздела «Переезд на хостинг»:
Комментарии любых посетителей

Написать комментарий