Внимание! Портал Московской консерватории «Российский музыкант 2.0» закрыт 31 августа 2009 года в связи с расформированием Научного отдела по работе с интернет-сайтом. Это архивная копия (15 сентября 2008 года — 31 августа 2009 года).

Переезд+переход=прорвемся //

22 марта 2009 / Кухня сайтов

Сегодня закончился долгожданный перенос двух консерваторских сайтов на новое место жительства: «Российский музыкант 2.0» и fragilité переехали с одного сервера (Linux на ядре 2.4.31-ow1) на другой (Alt Linux на 2.6.18) в связи с переносом на отдельный тариф (до того они функционировали как дополнительные сайты в рамках общего тарифа для mosconsv.ru, хостер MTW).

Перенос смогли осуществить, почти не прерывая работы. Но счастье безоблачным не бывает: на перенос наложились серьезные проблемы с новым сервером, в результате которых он пролежал 12 часов (после чего Linux на нем превратился из 64-битного в привычный 32-битный, но данные, слава богу, не пострадали)… Ну и чтобы жизнь окончательно перестала казаться медом, был затеян переход на WordPress ветки 2.7.

В общем-то, все получилось.

Кэширование

Главные проблемы были с кэшированием на fragilité: дело в том, что там исторически сложилась неудобная структура каталогов (два WordPress’a, один в подкаталоге, другой физически в корневой директории, виртуально же — в подкаталоге), которую не всегда с первой попытки плагины кэширования понимают. В результате пару дней (из-за отсутствия времени и проблем с доступом в интернет с рабочего места), например, главная страница русской версии фражилите генерировалась заново при каждом запросе из отдельного браузера (при повторном оттуда же выдавался кэщ). А остальные кэшировались если не как положено (WP SuperCache), то хотя бы просто WP Cache’м. Что уже неплохо. Решение проблемы оказалось очень тривиальным: если что-то не получается, прочтите инструкцию. Если все равно не получилось, еще раз прочтите инструкцию. И так до тех пор, пока не станет ясно, что удалять на первый взгляд ненужные файлы не следует, даже если после них в случайных боевых условиях все чуточку лучше работает :)

В связи же с переходом на WordPress 2.7 пришлось отказаться от кэширования запросов к БД на «Российском музыканте» (использовался плагин DB Cache). В чем проблема — пока неизвестно, ибо в похожей конфигурации на fragilité все вроде бы работает… Но плагин включается и ничего не кэширует при открытом доступе ко всем необходимым папкам, и поэтому он временно выключен до выяснения обстоятельств.

Warning: unpack()

При переходе на 2.7 обострилась классическая проблема WordPress’а, выглядящая как:

Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /www/vhosts/rmusician.ru/html/wp-includes/gettext.php on line 91
Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /www/vhosts/rmusician.ru/html/wp-includes/gettext.php on line 91
Fatal error: Maximum execution time of 20 seconds exceeded in /www/vhosts/rmusician.ru/html/wp-includes/streams.php on line 77

Эта классическая проблема имеет классическое же решение, связанное с заменой функции substr() на более запутанную конструкцию, исправленные файлы streams.php есть у ЛеКактуса. Но с 2.7 эти заплатки работают только наполовину: они лечат свою проблему, но создают еще больше новых. Поэтому в общем случае ошибка до сих пор повторяется. Можно, конечно, решить ее хардкорно и вообще отказаться от русификации (ошибка, насколько понимаю, возникает при чтении с помощью этой функции файла ru_RU.mo), но: а) не всем удобна английская панель управления; б) на «Российском музыканте» используется один виджет (календарь), который обязательно требует русификации. Посмотрим, возможно, придется либо заменить, либо вручную допилить этот календарь, чтобы не сталкиваться через раз с уже порядком надоевшей ошибкой…

All-in-One SEO Pack

Проблема с использованием в русскоязычных условиях плагина All-in-One SEO Pack, в общем-то, давным-давно известна: в некоторых конфигурациях (с позиции моей личной практики — на всех) в тэге <title> первые буквы русских слов отображаются большим, жирным и непонятно откуда взявшимся крякозябром. Существует и известная заплатка для этой ошибки.

Однако имеющиеся русифицированные версии плагина некорректно работают на версии 2.7: в админ-панели при редактировании постов они появляются крупными буквами над всей панелью, до хедера. Ну и ладно, думаем мы и ставим последнюю версию, вручную исправляем ошибку (она в функции capitalize($s), если что — неюникодное преобразование маленькой буквы в большую при помощи большого массива, что идет в начале плагина) — и получаем шиш. То есть ошибка все равно остается на месте. На всякий случай попробовал просто заменить встроенные неюникодные функции (старинные strtoupper с костылями и иже с ней на полноценные mb_strtoupper и так далее), но в результате плагин просто вылетал. Посему функция capitalize($s) была просто отрублена за ненадобностью (и так названия начинаются с большой буквы, смысла городить огород с дополнительным ненужным преобразованием не вижу). Вроде бы стало нормально.

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

Мелочи

Полетело меню рубрик из-за того, что функция wp_list_categories (’orderby=name&exclude=83&title_li=’) стала исключать только саму эту категорию (83, это корневая директория Musica Theorica), не исключая ее дочерние категории. Пришлось вручную дописать нужные номера.

Случайно замечено, что на одной из страниц оказался забытым Pagebar: то есть его там не было. Смешно только то, что его отсутствие там не заметили (и правда, в основном, в этом разделе смотрится первая страница, ежедневно изменяющаяся).

Невыполненное

…а ведь базы данных так и не перенесены на новый сервер. Правда, принципиальной необходимости в этом нет. Поэтому в ближайшее время будет перенесено :)

Откликнуться