Гид по технологиям

Как ускорить Drupal 7.7 с Boost и nginx (Debian Squeeze)

6 min read Оптимизация Обновлено 23 Nov 2025
Ускорение Drupal 7.7 с Boost и nginx
Ускорение Drupal 7.7 с Boost и nginx

Версия 1.0
Автор: Falko Timme
Подписывайтесь в Twitter

К чему это и когда применимо

Boost создаёт статические HTML-файлы для страниц сайта и отдаёт их анонимным пользователям, что значительно снижает нагрузку на PHP и базу данных. Это эффективно для сайтов с преимущественно анонимным трафиком. Модуль не кеширует страницы для авторизованных пользователей, поэтому они всегда видят актуальный контент.

Применяйте этот подход, если:

  • Большая часть посещений — анонимная.
  • Ваш сайт работает на LAMP (Apache2, PHP, MySQL) и вы готовы добавить nginx как обратный прокси.
  • Вы можете выделить часть оперативной памяти для tmpfs под кеш.

Важно: никаких гарантий работоспособности дать нельзя — тестируйте на копии продакшена.

1 Предварительная заметка

В примере используется стандартный LAMP на Debian Squeeze, как в руководстве “Installing Apache2 With PHP5 And MySQL Support On Debian Squeeze (LAMP)”. Мой документ-рут: /var/www/www.example.com/web, домены: www.example.com и example.com.

Предполагается, что Drupal 7.7 установлен и настроены «чистые» URL.

Убедитесь, что в Apache включены модули rewrite, headers и expires:

a2enmod rewrite
a2enmod headers
a2enmod expires

Перезапустите Apache:

/etc/init.d/apache2 restart

2 Создание кеша в памяти с tmpfs

По умолчанию Boost пишет кеш в каталог cache внутри документ-рута (в примере: /var/www/www.example.com/web/cache). Хранение кеша в оперативной памяти уменьшает обращения к диску и ускоряет отдачу страниц. tmpfs позволяет смонтировать файловую систему в памяти.

Сначала (пере)создайте каталог кеша:

rm -fr /var/www/www.example.com/web/cache
mkdir /var/www/www.example.com/web/cache

Добавьте следующую строку в /etc/fstab (откройте файл в редакторе):

vi /etc/fstab
[...]
tmpfs /var/www/www.example.com/web/cache tmpfs size=256M,mode=0777 0 0

Пояснение: size=256M — размер раздела в памяти 256 МБ. Для больших сайтов может потребоваться увеличить объём; для маленьких сайтов — уменьшить. Проверьте, что на сервере останется достаточно свободной RAM.

Перемонтируйте все файловые системы:

mount -a

Проверьте, что раздел смонтирован:

mount

Пример вывода:

root@server1:/var/www/www.example.com/web# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
tmpfs on /var/www/www.example.com/web/cache type tmpfs (rw,size=256M,mode=0777)
root@server1:/var/www/www.example.com/web#

И проверка свободного места:

df -h
root@server1:/var/www/www.example.com/web# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  1.1G   27G   4% /
tmpfs                 502M     0  502M   0% /lib/init/rw
udev                   497M  100K  497M   1% /dev
tmpfs                 502M     0  502M   0% /dev/shm
tmpfs                 256M     0  256M   0% /var/www/www.example.com/web/cache
root@server1:/var/www/www.example.com/web#

Если вы используете виртуальную машину на OpenVZ без /etc/fstab, можно добавить команду монтирования в /etc/rc.local, чтобы кеш автоматически монтировался при загрузке:

vi /etc/rc.local

Добавьте:

[...]
/bin/mount -t tmpfs -o size=256M,mode=0777 tmpfs /var/www/www.example.com/web/cache
[...]

Чтобы смонтировать немедленно без перезагрузки:

mount -t tmpfs -o size=256M,mode=0777 tmpfs /var/www/www.example.com/web/cache

Важно: при перезагрузке tmpfs очищается — кеш теряется. Планируйте это поведение (например, прогревайте кеш после деплоя).

3 Установка и настройка Boost

Зайдите в админ-панель Drupal как админ и откройте раздел Modules (http://www.example.com/admin/modules/install). В поле Install from a URL вставьте:

http://ftp.drupal.org/files/projects/boost-7.x-1.x-dev.tar.gz

и нажмите Install. Всегда проверяйте актуальную версию на http://drupal.org/project/boost.

Скриншот страницы установки модуля Boost в Drupal

После успешной установки нажмите Enable newly added modules, чтобы включить Boost:

Подтверждение включения модуля Boost в списке модулей

На странице Modules (http://www.example.com/admin/modules) найдите Boost, отметьте его и нажмите Save configuration:

Список модулей с отмеченным Boost

После этого у модуля появится ссылка Configure — откройте её:

Ссылка для конфигурации модуля Boost в списке модулей

Вы должны оказаться на вкладке BOOST SETTINGS (http://www.example.com/admin/config/system/boost). Оставьте значения по умолчанию и нажмите Save configuration:

Настройки Boost — вкладка BOOST SETTINGS с дефолтными значениями

Продолжение настроек Boost — сохранение конфигурации

Перейдите на вкладку CACHE EXPIRATION. По умолчанию настройки подходят большинству сайтов — сохраните конфигурацию:

Настройки истечения кеша в Boost — вкладка CACHE EXPIRATION

Далее вкладка FILE SYSTEM. Убедитесь, что в Root cache directory указано cache — это соответствует /var/www/www.example.com/web/cache. Остальные значения по умолчанию также подойдут — сохраните конфигурацию:

Настройки файловой системы Boost — указание каталога cache

4 Рекомендации по прогреву и тестированию кеша

  • Прогрейте кеш: пройдитесь по ключевым страницам вручную или запустите скрипт, который последовательно запросит важные URL.
  • Проверка: откройте страницу в браузере без авторизации — Boost должен отдать статический HTML. Для авторизованных пользователей — динамический.
  • Логи: следите за содержимым каталога cache — в нём появятся файлы HTML.

Критерии приёмки:

  • Для анонимного запроса сервер отдает статический HTML-файл из каталога cache.
  • Авторизованный пользователь видит свежую (динамическую) страницу.
  • Нагрузка на PHP и MySQL заметно снижается при пиковом анонимном трафике.

5 Использование nginx как обратного прокси (опция для ещё большей производительности)

nginx быстрее и экономнее при отдаче статических файлов, поэтому имеет смысл поставить его перед Apache. nginx будет первым принимать запросы и отдавать статические страницы из каталога cache, не нагружая Apache/PHP.

Принцип работы (упрощённо):

flowchart TD
  Browser -->|GET /page| nginx
  nginx -->|есть статический /cache/page.html| nginx[Отдаёт static HTML]
  nginx -->|если нет| nginx --> apache
  apache --> php-fpm
  php-fpm --> apache
  apache --> nginx
  nginx --> Browser

Настройте nginx так, чтобы он проверял каталог /var/www/www.example.com/web/cache и отдавал файл, если он существует. В противном случае проксируйте запрос на Apache.

Примерный nginx-конфиг (фрагмент):

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/www.example.com/web;

    location / {
        try_files /cache/$host$uri/index.html /cache/$host$uri.html $uri @backend;
    }

    location @backend {
        proxy_pass http://127.0.0.1:8080; # Apache на порту 8080
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* \.(css|js|jpg|jpeg|png|gif|ico)$ {
        expires max;
        add_header Cache-Control "public";
    }
}

Тонкости и советы:

  • Размещайте nginx и Apache на одном хосте или на отдельных серверах.
  • Apache можно запустить на нестандартном порту (например, 8080) и запретить ему напрямую слушать 80-й порт.
  • Настройте заголовки Expires/Cache-Control через nginx для статических ресурсов.

6 Проблемы, когда это может не сработать

  • Сайт в основном для авторизованных пользователей — ускорение будет минимальным.
  • Сильно персонализированные страницы (например, лента с индивидуальным контентом) сложно кешировать.
  • Неправильные права на файлы или неверный путь к каталогу cache помешают Boost.

Безопасность и соответствие приватности

  • Не кешируйте страницы с персональными данными. Boost по умолчанию не кеширует контент для авторизованных пользователей — это помогает избежать утечек.
  • Если на сайте есть формы с персональными данными, убедитесь, что их ответы не попадают в кеш.
  • В контексте GDPR: кеш — это копия контента; обеспечьте возможность удаления/очистки кеша при запросах на удаление данных, если это применимо.

Контроль качества и тесты

Тесты для приёмки:

  • GET анонимной страницы возвращает файл из /cache и имеет заголовки, указывающие на статический ответ.
  • GET той же страницы после логина возвращает динамический HTML, отражающий авторизацию.
  • При удалении/обновлении контента Boost инвалидирует соответствующие кеш-файлы.

Простейший чек-лист после настройки:

  • tmpfs смонтирован в /var/www/…/cache
  • Boost установлен и включён
  • Появляются .html файлы в каталоге cache
  • nginx (если используется) отдаёт кешированные файлы

Быстрый план действий (Playbook)

  1. Создать/проверить каталог cache.
  2. Смонтировать tmpfs (через /etc/fstab или /etc/rc.local).
  3. Установить и включить Boost через админку Drupal.
  4. Настроить Boost: путь к кешу, время жизни, исключения.
  5. Опционально: поставить nginx как обратный прокси и настроить try_files на каталог cache.
  6. Прогреть кеш и выполнить тесты приёмки.

Краткая сводка (Summary)

  • Boost даёт статический HTML для анонимных пользователей и существенно снижает нагрузку на сервер.
  • tmpfs ускоряет отдачу кеша за счёт хранения в памяти.
  • nginx как фронт перед Apache ещё больше повышает пропускную способность и экономит ресурсы.

Факт-бокс — ключевые идеи:

  • Boost: статический HTML для анонимных пользователей.
  • tmpfs: кеш в оперативной памяти (временный, очищается при перезагрузке).
  • nginx: быстрый отдающий статические файлы прокси.

Глоссарий (1 строка):

  • Boost — модуль Drupal для генерации статических HTML-файлов.
  • tmpfs — файловая система в памяти.
  • nginx — высокопроизводительный HTTP-сервер/реверс-прокси.

Важно: сохраняйте права и владельцев в каталоге cache, следите за доступом и регулярно проверяйте, что кеш не содержит чувствительных данных.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство