Как ускорить Drupal 7.7 с Boost и nginx (Debian Squeeze)
Версия 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 restart2 Создание кеша в памяти с 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 -hroot@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.

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

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

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

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


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

Далее вкладка FILE SYSTEM. Убедитесь, что в Root cache directory указано cache — это соответствует /var/www/www.example.com/web/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)
- Создать/проверить каталог cache.
- Смонтировать tmpfs (через /etc/fstab или /etc/rc.local).
- Установить и включить Boost через админку Drupal.
- Настроить Boost: путь к кешу, время жизни, исключения.
- Опционально: поставить nginx как обратный прокси и настроить try_files на каталог cache.
- Прогреть кеш и выполнить тесты приёмки.
Краткая сводка (Summary)
- Boost даёт статический HTML для анонимных пользователей и существенно снижает нагрузку на сервер.
- tmpfs ускоряет отдачу кеша за счёт хранения в памяти.
- nginx как фронт перед Apache ещё больше повышает пропускную способность и экономит ресурсы.
Факт-бокс — ключевые идеи:
- Boost: статический HTML для анонимных пользователей.
- tmpfs: кеш в оперативной памяти (временный, очищается при перезагрузке).
- nginx: быстрый отдающий статические файлы прокси.
Глоссарий (1 строка):
- Boost — модуль Drupal для генерации статических HTML-файлов.
- tmpfs — файловая система в памяти.
- nginx — высокопроизводительный HTTP-сервер/реверс-прокси.
Важно: сохраняйте права и владельцев в каталоге cache, следите за доступом и регулярно проверяйте, что кеш не содержит чувствительных данных.
Последние шаги: прогрейте кеш, протестируйте в условиях приближённых к продакшену и мониторьте метрики нагрузки после внедрения.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты