SOFT
BLOG
&
Логин
Имя:
Пароль:

Система Drupal 7. База данных MySQL или MariaDB

Этот раздел про Drupal, про программирование и модули. Это вводный документ, который начну с описания среды в котором осуществляю программирование.

На данном этапе я работаю с CMS Drupal 7-ой версии. Это связано с более высокой функциональностью и уровнем автоматизации внутренних задач данной версии. Мне нужно отметить, что Drupal 7 не очень легкая КМС, средняя страница сайта может выполнять до 80-100, тяжелые модульные страницы 150-200 запросов в БД, а также осуществляет внешние запросы для проверки наличия обновлений. И в некоторых случаях если на сайте не более 5-10 страниц, то лучше не использовать Друпал. Это как палить из пушки по воробьям.

Я буду описывать модули, код в основном для 7-ой версии, но возможно будут статьи и про 6-ую или новую 8-ую версию системы.

Советы начинающим

Я не рекомендую использовать Друпал тем новичкам, кто хочет просто делать сайт без изучения API.

Сколько бы Вы не изучали работу системы и модулей, в любом случае чтобы делать достойные сайты придется изучить и внутренний код. Это называется API. API у друпала активно развивается, хорошо описан, есть толковые книги. Он сложный, иногда запутанный, даже отмечу что избыточный, но для хороших проектов его нужно изучить, чтобы программировать свои модули, создавать дополнения/исправления. Нужно иметь весьма хорошую подготовку в PHP, на котором и написан друпал. Желательно нужно хорошо знать этот язык (классы и объекты, массивы). Еще ко всему нужно знать CSS, JavaScript (хотя бы JQuery), понимать работу Ajax, JSON. Иметь навыки в ОС Линукс и подобных, для настройки WEB-сервера и БД.

Короче, чтобы делать хорошие сайты нужно знать все web-технологии.

Литература

Основной сайт: drupal.org, здесь всё, обсуждение англоязычное. Обязательно просмотрите сайт api.drupal.ru. Изучайте английский, друпал англоязычная разработка, вся информация не переведена на русский, всё перевести не возможно. Книги по API на русском "CMS DRUPAL 7. Тодд Томплинсон", практичная книга "Профессиональная разработка сайтов на Drupal 7. Мелансон Б., Нордин Д., Луиси Ж." с уклоном в сторону модулей.

Конфигурации

Drupal может работать под управлением вэб-серверов IIS, NGINX, APACHE. Я использую последний, "Апач" популярный сервер, до определенных пор ему не было конкурентов. Конфигурация PHP: без выходного буфера, параметр memory_limit = 128M (или в .htaccess  добавляется строка "php_value memory_limit 128M"). Высоконагруженные проекты требуют отдельного подхода, их настройка отличается от стандартных. Текущий сайт находится на обычном виртуальном хостинге SWEB в городе Санкт-Петербург. У виртуального хостинга свои преимущества и недостатки, большой отдельный вопрос и я его не касаюсь. Но для большинства сайтов пойдут и обычные виртуальные хостинги, Drupal вполне отлично работает на любом среднем хостинге. У меня есть проекты на разных хостингах. Я приведу только личный опыт, который уважаемый читатель не должен принять как догму, пробуйте и смотрите сами, что где лучше работает. ИМХО очень хорошо работает друпал на SWEBе, прекрасно на LOGOLe и "пойдет" на 1ГБ.РУ, Агаве.

Еще один важный элемент это база данных и конфигурация. Друпал может работать под управлением разных БД это PostgreSQL, MySQL и его клоны, SQLite. В большинстве случаев используется MySQL. Реже PostgreSQL. Для работы с БД в друпал есть слой абстракции, он нужен для того чтобы ядро и модули могли работать на разных типах БД. Несмотря на то, что SQL базы данных очень схожи, всё же есть различия между ними. Например, синтаксис запроса в MySQL не всегда может "пойти" для PostgreSQL. Слой абстракции нивелирует различия между базами данных и нормально осуществляет работу запросов. При создании модуля запросы создаются в этой форме и модуль может работать с разными типами БД. Тут возникает одна проблема, слой абстракции не очень гибкий, и не позволяет использовать преимущества той или иной БД. Поэтому при создании модуля "для себя", Вы сами решаете какой подход использовать: или слой абстракции или прямой синтаксис - можно и так и так. При создании модуля который пойдет в народ, придется использовать слой абстракции.

На виртуальных хостингах обычно не возможно изменить настройки БД, сервер настраивают на максимальные возможности, получаешь ограниченные ресурсы с которыми и работаешь. На своих серверах (дедик и VDS), по возможности использую MariaDB, выбрал эту БД за хорошую производительность и возможность сделать "горячий" бэкап. Настройки обычные "из пакета", в зависимости от доступной ОЗУ распределяю ресурсы. Устанавливаю параметр innodb_file_per_table = 1. VDS не всегда производительный, ресурсы всегда скромные и в этих условиях сервер настраивается "в процессе", методом проб - создается идеальная конфигурация.

Модули

Во всех проектах участвуют стандартные модули, такие как Views, CTools, Token. Из основных модулей это xmlsitemap, devel, captcha, wysiwyg, metatag, pathauto, redirect. Еще полезные модули transliteration и webform. Про каждый модуль можно книгу написать, про основные пишут во всех книгах. Описывать что делают эти модули не стану, задача этой страницы описать среду, в которой я обычно работаю.

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

SEO

Сайт на Друпал можно очень хорошо продвигать в Интернете. В СЕО много особенностей и факторов, продвижение зависит от тематики сайта и т.д. Для продвижения, в друпал можно установить несколько полезных модулей. В этом разделе я обязательно создам несколько статей про СЕО и про взаимодействие друпала с поисковыми системами (ПС). СЕО это не игра в одни ворота, тут нужно сделать гораздо больше чем правильный сайт. Мало сделать хороший сайт, нужно уметь использовать всяческие методы и инструменты. Тут возможны варианты. Я не считаю себя сеошником до кончика волос на спине, но думаю уважаемому читателю будет интересно прочитать мои мысли и в комментах отписать свои.

Я не люблю много писать (этот документ составлялся несколько дней). Постараюсь изложить своё ИМХО на страницах этого сайта. Спасибо за то что всё это прочитали!