Установка Lighttpd с PHP и Let's Encrypt на Debian 11

Описание: логотип или схематичное изображение Lighttpd
Что такое Lighttpd
Lighttpd — это лёгкий, быстрый и безопасный веб‑сервер. Он экономит память и CPU и подходит для нагрузок с большим числом параллельных соединений. Поддерживает URL‑переписывание, сжатие вывода, событийную модель, FastCGI/SCGI, базовую аутентификацию и другие функции.
Кратко: лёгкий сервер для высоконагруженных и бюджетных окружений.
Требования
- Сервер с Debian 11.
- Домен, направленный на IP сервера.
- Рабочий root‑доступ или sudo‑права.
Установка Lighttpd
Пакет доступен в официальном репозитории Debian. Установите и запустите сервис:
apt-get install lighttpd -y
systemctl start lighttpd
systemctl enable lighttpdПроверить состояние:
systemctl status lighttpdОткройте в браузере http://your-server-ip — должна отобразиться тестовая страница Lighttpd:

Описание: тестовая страница Lighttpd, отображаемая по умолчанию
Установка PHP и PHP‑FPM
Установите PHP, PHP‑FPM и расширения, которые вам нужны (например, для MySQL):
apt-get install php php-cgi php-fpm php-mysql -yОткройте файл php.ini и задайте cgi.fix_pathinfo:
nano /etc/php/7.4/fpm/php.iniИзмените или добавьте строку:
cgi.fix_pathinfo=1Сохраните и закройте файл.
Измените прослушивание PHP‑FPM, чтобы использовать TCP‑порт, а не unix‑сокет (Lighttpd будет подключаться по 127.0.0.1:9000):
nano /etc/php/7.4/fpm/pool.d/www.confНайдите:
listen = /run/php/php7.4-fpm.sockЗамените на:
listen = 127.0.0.1:9000Перезапустите PHP‑FPM:
systemctl restart php7.4-fpm
systemctl status php7.4-fpmОжидаемый результат — служба active (running).
Настройка Lighttpd для PHP‑FPM
Отредактируйте файл FastCGI для PHP:
nano /etc/lighttpd/conf-available/15-fastcgi-php.confНайдите и замените блок, который указывает путь к php‑cgi и сокету:
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",Замените на подключение по хосту и порту:
"host" => "127.0.0.1",
"port" => "9000",Включите модули и перезапустите Lighttpd:
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
systemctl restart lighttpdСоздание виртуального хоста Lighttpd
Lighttpd поддерживает множество сайтов на одном сервере. Создадим конфигурацию для test.example.com:
nano /etc/lighttpd/conf-available/test.confДобавьте:
$HTTP["host"] == "test.example.com" {
server.document-root = "/var/www/html/"
server.errorlog = "/var/log/lighttpd/example.com-error.log"
}Активируйте файл и создайте простой PHP‑файл для проверки:
ln -s /etc/lighttpd/conf-available/test.conf /etc/lighttpd/conf-enabled/
nano /var/www/html/index.phpДобавьте:
Установите владельца и права:
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html
systemctl restart lighttpdОткройте http://test.example.com — должна загрузиться страница phpinfo():

Описание: страница с выводом phpinfo(), подтверждающая работу PHP через Lighttpd
Получение SSL с Let’s Encrypt
Установите Certbot:
apt-get install certbot -yПолучите сертификат методом webroot:
certbot certonly --webroot -w /var/www/html/ -d test.example.comСледуйте интерактивным подсказкам для указания email и согласия с условиями. После успешного получения сертификатов пути будут:
- /etc/letsencrypt/live/test.example.com/fullchain.pem
- /etc/letsencrypt/live/test.example.com/privkey.pem
Объедините сертификат и ключ в один PEM‑файл, который использует Lighttpd:
cat /etc/letsencrypt/live/test.example.com/cert.pem /etc/letsencrypt/live/test.example.com/privkey.pem > /etc/letsencrypt/live/test.example.com/web.pemОтредактируйте виртуальный хост для HTTPS:
nano /etc/lighttpd/conf-enabled/test.confЗамените или дополните содержимое:
$HTTP["host"] == "test.example.com" {
server.document-root = "/var/www/html/"
}
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/test.example.com/web.pem"
ssl.ca-file = "/etc/letsencrypt/live/test.example.com/chain.pem"
server.name = "test.example.com"
server.document-root = "/var/www/html/"
server.errorlog = "/var/log/lighttpd/example.com_error.log"
accesslog.filename = "/var/log/lighttpd/example.com_access.log"
}
$HTTP["scheme"] == "http" {
$HTTP["host"] == "test.example.com" {
url.redirect = ("/.*" => "https://test.example.com$0")
}
}Перезапустите Lighttpd:
systemctl restart lighttpdТеперь сайт доступен по https://test.example.com.
Автоматическое продление сертификатов и перезагрузка Lighttpd
Let’s Encrypt сертификаты действуют 90 дней. Автоматизируйте продление и перезагрузку Lighttpd, чтобы применить новые сертификаты:
Пример команды (можно добавить в cron или systemd‑timer):
certbot renew --post-hook "systemctl reload lighttpd"Рекомендация: проверьте dry‑run перед автоматизацией:
certbot renew --dry-runБезопасность и практика эксплуатации
Important: всегда делайте резервные копии конфигураций перед изменениями.
Рекомендации по безопасности:
- Ограничьте права на директории сайта: владелец www‑data, минимально необходимые права.
- Отключите модули Lighttpd, которые вы не используете.
- Настройте HTTP Strict Transport Security (HSTS) при необходимости.
- Разрешите только нужные порты на брандмауэре (80, 443).
Пример правил ufw:
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableЛоги: проверяйте /var/log/lighttpd/ и /var/log/letsencrypt/ при ошибках.
Типичные проблемы и способы их устранения
- Ошибка получения сертификата (challenge failed): проверьте, что документ‑root указан правильно и файлы под /.well-known/acme‑challenge/ доступны извне.
- 502 Bad Gateway от Lighttpd: проверьте, запущен ли php‑fpm и слушает ли 127.0.0.1:9000; проверьте firewall на localhost и SELinux/AppArmor.
- Права доступа к файлам: убедитесь, что web‑сервер может читать файлы в document‑root.
Чеклист перед переходом в продакшен
- Установлены обновления безопасности для Debian и PHP.
- Сертификат получен и настроен HTTPS.
- Автоматическое продление сертификата настроено и проверено.
- Логи и мониторинг работают (доступ к access и error логам).
- Права на файлы и каталоги установлены корректно.
- Firewall настроен на порты 80/443.
- Тесты загрузки главной страницы и страниц с формами пройдены.
Краткая методология развертывания (мини‑план)
- Подготовка сервера: обновления, базовая конфигурация сети и DNS.
- Установка Lighttpd и PHP‑FPM, проверка локального phpinfo().
- Настройка виртуального хоста и проверка HTTP.
- Получение сертификата через Certbot (webroot).
- Настройка HTTPS, редиректа и автоматического продления.
- Проверка логов, безопасности и производительности.
Совместимость и примечания по версиям
- Инструкция основана на Debian 11 и PHP 7.4 (в репозитории Debian 11). Если вы используете другую версию PHP, пути конфигурации и имена сервисов могут отличаться (например, php8.1‑fpm).
- Если вы предпочитаете unix‑сокеты, можно настроить Lighttpd на работу с unix‑socket, но тогда конфигурация FastCGI в Lighttpd и PHP‑FPM должна ссылаться на один и тот же путь.
Критерии приёмки
- Сайт test.example.com открывается по HTTPS без предупреждений.
- PHP корректно выполняет скрипты (phpinfo() показывает используемый FPM).
- certbot renew проходит dry‑run без ошибок.
- Доступ к логам есть у администратора, права на файлы минимально необходимые.
Однострочный словарь
- PHP‑FPM — FastCGI Process Manager для обработки PHP через отдельные процессы.
- Certbot — официальный клиент для получения сертификатов Let’s Encrypt.
Быстрая отладка (команды)
- Проверить статус служб:
systemctl status lighttpd
systemctl status php7.4-fpm- Перезапустить после правок:
systemctl restart php7.4-fpm
systemctl restart lighttpd- Проверить доступность порта 9000 локально:
ss -ltnp | grep 9000Заключение
Вы успешно настроили Lighttpd на Debian 11 с поддержкой PHP через PHP‑FPM и получили SSL от Let’s Encrypt. Дальше можно деплоить приложения, подключать системы мониторинга и автоматизировать бэкапы. Если нужен пример конфигурации для нескольких сайтов или интеграция с CI/CD — напишите, и я помогу подготовить шаблоны.
Вывод: Lighttpd — хорошее решение, когда важна скорость и экономия ресурсов. Следуйте чеклисту и автоматизируйте продление сертификатов для надёжной работы в продакшене.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента