Работа
Кеширование на Drupal-сайте. Сравнение встроенного в Drupal кеша, статического файлового кеша (модуль Boost) и Varnish
Ромка — Чт, 06/14/2012 - 23:15
Публикую текст своего доклада для Друпалконфа, который прошел 4 июня 2012 года в Москве. Хочу акцентировать внимание на том, что этот текст не адаптирован под блогпост и публикуется в том виде, в котором я рассказывал его на конференции.
Введение
В текущем Drupal 6 проекте, над которым я работаю последние 2 года, в пике мы отдаем до 2 млн просмотров страниц в день и забиваем полностью наш 200-мегабитный интернет-канал. Судя по отчетам нашей системы мониторинга с текущей архитектурой и железом (6 серверов: 2 фронтэнда с nginx, 2 бэкенда с Varnish + Apache + Drupal и 2 MySQL-сервера с master-slave репликацией) мы можем выдерживать втрое большую нагрузку, если решим вопрос с каналом.
За время работы этого проекта мы на нем успели применить и испытать если не все, то большинство технологий по оптимизации производительности, которые применимы к Друпалу, в том числе использовали собственные велосипеды, но в итоге пришли к использованию связки Прессфлоу + Варниш и эта связка показала себя самой производительной и простой в сопровождении (в сравнении с собственными патчами ядра и модулей).
Я хочу рассказать о том, какие для Друпала существуют средства оптимизации скорости отдачи контента и сравнить их плюсы и минусы. Я не буду вдаваться в детали и приводить примеры конфигов, это все можно найти в интернете (я у себя в блоге выложу в ближайшее время пример конфига, используемого в наших проектах). Я не буду рассказаывать об оптимизации конфигов MySQL, установке систем кеширования опкода, так как это большая тема достойная отдельного доклада, она хорошо раскрыта, в интернете можно найти много статей по оптимизации окружения, в котором работает сайт. Кроме того, эта тема имеет мало отношения к Друпалу и больше должна быть интересна системным администраторам, чем программистам (хотя программистам тоже неплохо бы в ней разбираться).
Основная идея доклада в том, что на контеных сайтах (речь идет о блогах, интернет-магазинах, новостных сайтах, а не веб-сервисах типа поисковых систем) большинство пользователей видят то же содержимое страниц, что и все другие посетители это сайта, поэтому умело закешированные данные могут значительно снизить нагрузку на веб-сервер и базу данных и, как следствие, увеличить скорость отдачи контента, и при этом не навредить сайту, так как, например, для новостного сайта кеш страниц на 1 час совершенно неприемлем.
Любопытное поведение модуля syslog в шестом Друпале (баг?)
Ромка — Втр, 03/13/2012 - 13:21
Описание проблемы
На сайте используется Drupal 6 и модуль theme key, который позволяет задавать разный дизайн для разных страниц. Столкнулся с неприятной и трудноуловимой проблемой: есть 2 полностью идентично настроенных (как казалось изначально) сервера, на одном из которых theme key отрабатывает корректно, а на втором нет — все время отображает контент в дефолтной теме оформления. Похожая проблема также встречалась в другом проекте, не использующем theme key, на странице управления блоками.
После некоторых экспериментов удалось выяснить, что сервера отличаются настройкой PHP error_reporting. На глючащем сервере она была задана так:
error_reporting = E_ALL & ~E_DEPRECATED
на работающем так:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
Обновление этой настройки на некорректно работающем сервере решало проблему. Может показаться что это магия какая-то, мне так изначально и показалось: ну какое отношение имеют сообщения, выводимые в лог, к работе модулей и выбору темы оформления Друпала? В итоге, оказалось, имеют самое непосредственное отношение. Ниже описание причины проблемы и её решение.
Доклад на DrupalConfMoscow 2011
Ромка — Пнд, 04/25/2011 - 01:18
23 апреля 2011 года принял участие в конференции DrupalConfMoscow 2011. Вместе с Тарасом Савчуком рассказал о том, как мы настраивали Друпал и системное окружение, чтобы сайт forbes.ru мог выдержать нагрузку 250 тысяч уников в сутки. Ниже видео и текстовая версия моей части доклада.
Статусы разных сущностей в Друпале 6
Ромка — Ср, 04/06/2011 - 13:03
Запомни! В шестом Друпале для нод поле status равное 1 означает опубликованную ноду, 0 — неопубликованную, для блоков и комментариев наоборот! 0 — опубликованный блок/комментарий, 1 — неопубликованный.
Про эту особенность для блоков только сейчас узнал, часа 2 убил на поиск проблемы в работе hook_block.
Футер, прибитый к низу страницы
Ромка — Вс, 03/27/2011 - 13:36
Давно не занимался версткой, сейчас понадобилось сверстать страницу с прибитым к низу страницы футером, помню что раньше не мог найти простого и универсального решения этой задачи, по этому обрадовался, когда нашел вот это решение: http://ryanfait.com/resources/footer-stick-to-bottom-of-page/.
Css:
- * {
- margin: 0;
- }
- html, body {
- height: 100%;
- }
- .wrapper {
- min-height: 100%;
- height: auto !important;
- height: 100%;
- margin: 0 auto -4em;
- }
- .footer, .push {
- height: 4em;
- }
Html:
Швабрашвабр2
Ромка — Пнд, 11/09/2009 - 12:09
Разработал и выложил в открытый доступ вторую версию своей "социальной" сборки CMS Drupal — Швабрашвабр. В новой версии пользователям доступны:
- персональные и общие фотогалереи,
- система статусов (в стиле Фейсбука и Твиттера),
- персональные гостевые книги (в стиле стены во вКонтакте),
- списки друзей и посетителей,
а также от старой версии сборки остались доступны:
- система блогов и коллективных блогов,
- система рейтингования материалов, комментариев и "карма" (репутация) пользователей,
- система распределения прав доступа к ресурсам сайта на основе кармы.
Дистрибутив сборки, подробная инструкция и скринкасты для самостоятельной настройки сайта с аналогичным функционалом доступны на Швабрешвабр.
Статья в PC Magazine/RE. Drupal: разработка модуля
Ромка — Втр, 09/15/2009 - 09:58
В сентябрьском номере журнала PC Magazine/RE опубликовали мою статью на тему "Drupal: разработка модуля". В статье рассмотрены базовые принципы разработки модулей для CMS Drupal и детально разобран пример разработки модуля "Курсы валют", при реализации которого решены самые часто возникающие перед разработчиком задачи: создание форм (Forms API), работа с базой данных, распределение прав доступа, темизация.
В ближайшем номере будет размещена статья о темизации Друпала.
Пример разработки плагина для модуля CCK
Ромка — Сб, 09/05/2009 - 17:29
На прошедшем в Киеве Друпал Кемпе я делал доклад, в котором приводил пример разработки плагина для Drupal-модуля CCK. В этой заметке я приведу краткий конспект своего доклада.
Любой создаваемый средствами CMS Drupal тип контента по умолчанию состоит из двух полей — "Тема" и "Тело сообщения", а также из нескольких полей служебной информации (автор, дата публикации и т.п.). Модуль Content Construction Kit (CCK) представляет из себя графический интерфейс, позволяющий добавить к любому типу контента (в том числе и созданному сторонними модулями) любое количество дополнительных полей, например, поля для размещения картинок, аудио- и видеофайлов и т.п. Каждое из таких полей является плагином для CCK.
Далее в этом тексте пойдет речь о разработке подобного плагина. Материал ориентирован на людей, умеющих программировать на PHP, имеющих представление о модульной системе Друпала и опыт разработки модулей для него. Если вы интересуетесь основами программирования под Друпал, то прочитайте мою статью на эту тему, которая будет опубликована в ближайшем номере журанала PC Magazine/RE.
upd. А вот и видео с доклада:
dckyiv09-Drupal Module Development from Mitas on Vimeo.
Александром Митасовым и видео-партнером DrupalCamp Kyiv 2009 «Николаевским курьером»
Swftools и модуль Pdf2SWfField для Друпала
Ромка — Чт, 08/20/2009 - 23:55
Заказчику захотелось просматривать на сайте PDF-документы через flash-проигрыватель. Adobe Reader есть не у всех, да и выглядит он скучно, а к флешовому проигрывателю можно, при желании, прикрутить множество красивых эффектов. Ну и, разумеется, руками конвертировать файлы из формата PDF в SWF заказчик не захотел. Поиски готового решения ничего не дали, по этому я написал свой модуль для Друпала, который, используя бесплатный набор утилит swftools, конвертирует закачанный PDF в SWF и выводит его в самописном вьюере.
Модуль представляет из себя плагин к CCK, зависит от FileField и использует для вывода просмотрщика возможности модуля SWFTools (он не имеет никакого отношения к проекту swftools.org). Иными словами, для работы моего модуля нужны все три перечисленных выше модуля. Кроме того, на сервере должна быть установлена последняя версия swftools, я тестировал модуль с swftools 0.9 и глюков с конвертированием данных не обнаружил, за другие версии не ручаюсь. Последнее ограничение означает, что модуль не будет работать на 99,99% виртуальных хостингов. Установка swftools не должна вызвать проблем, особенно если воспользоваться вот этой инструкцией.
Демонстрация работы модуля доступна здесь: http://romka.eu/article/testovyy-dokument-demonstriruyushchiy-vozmozhnos....
Модуль "Курсы валют" для Drupal 6
Ромка — Ср, 12/24/2008 - 17:31
В одном из последних проектов необходимо было вывести в блоке курсы валют. Кроме страшных информеров от РБК никакого полезного контента на эту тему я найти не сумел, по этому разработал модуль для шестого Друпала, который тянет курсы рубля по отношению к другим валютам из xml-файла с сайта ЦБРФ и выводит их в виде блока.
Полученные данные кешируются, настройки кеша, а также частота обновлений и список валют, которые необходимо выводить в блоке задаются через специальный интерфейс в админке. Внешний вид блока может быть переопределен через функцию темизации. Выводиться могут курсы следующих валют: Австралийский доллар, Фунт стерлингов Соединенного королевства, Белорусский рубль, Датская крона, Доллар США, Евро, Исландская крона, Казахское тенге, Канадский доллар, Китайский юань Жэньминьби, Норвежская крона, СДР (специальные права заимствования), Сингапурский доллар, Новая турецкая лира, Украинская гривна, Шведская крона, Швейцарский франк, Японская иена.
Демонстрацию работы модуля можно увидеть на этой странице в правом нижнем углу.
Внимание. С 11.01.2009 доступна новая версия модуля.
Последние комментарии