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

Как ускорить 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
Автор
Редакция

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

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android