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

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

• 5 min read • DevOps • Обновлено 28 Nov 2025
Lighttpd + PHP + Let's Encrypt на Debian 11
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

Описание: тестовая страница 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():

Информация PHP

Описание: страница с выводом 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.
  • Тесты загрузки главной страницы и страниц с формами пройдены.

Краткая методология развертывания (мини‑план)

  1. Подготовка сервера: обновления, базовая конфигурация сети и DNS.
  2. Установка Lighttpd и PHP‑FPM, проверка локального phpinfo().
  3. Настройка виртуального хоста и проверка HTTP.
  4. Получение сертификата через Certbot (webroot).
  5. Настройка HTTPS, редиректа и автоматического продления.
  6. Проверка логов, безопасности и производительности.

Совместимость и примечания по версиям

  • Инструкция основана на 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 — хорошее решение, когда важна скорость и экономия ресурсов. Следуйте чеклисту и автоматизируйте продление сертификатов для надёжной работы в продакшене.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро