Обзор архитектуры: как работает связка Caddy, PHP и MySQL

Связка Caddy + PHP + MySQL состоит из трех компонентов: веб-сервера, интерпретатора серверного языка, и базы данных, каждый из которых выполняет свою роль.

  • Caddy отвечает за прием запросов HTTP/HTTPS и выдачу ответов, управление SSL-сертификатами и динамическими запросами на PHP. Главной особенностью Caddy является встроенная поддержка HTTPS и автоматическая интеграция с Let’s Encrypt.
  • PHP-FPM — это менеджер процессов PHP, который выполняют скрипты и возвращает результат Caddy.
  • MySQL — это база данных, которая хранит пользовательские данные и обеспечивает взаимодействие с приложением.

По сравнению с Nginx, Caddy использует HTTP/2 (и в некоторых случаях HTTP/3) и самостоятельно общается с серверами Let’s Encrypt без использования Certbot.

Установка и первичная настройка веб-сервера Caddy

Для того чтобы установить Caddy на Debian или Ubuntu, выполните команду через пакетный менеджер:

apt install caddy

После установки сервер уже готов к работе.

Конфигурация выполняется через файл:

/etc/caddy/Caddyfile

Пример конфигурации выглядит так:

site.example { 

root * /var/www/site.example 

file_server 

}

Caddy, в свою очередь, автоматически настроит HTTPS, получит SSL-сертификат и перенаправит HTTP в HTTPS.

Интеграция PHP

Для установки менеджера PHP-FPM выполните:

apt install php-fpm

После установки, менеджер необходимо настроить. Это касается таких параметров как php.ini, пример конфигурации которого выглядит следующим образом:

cgi.fix_pathinfo=0 post_max_size = 32M upload_max_filesize = 30M

Затем через Caddyfile подключите PHP к Caddy

php_fastcgi unix//run/php/php-fpm.sock

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

systemctl reload caddy

Опционально: проверьте работу PHP, создав файл info.php с функцией phpinfo().

 

Читайте также: NVMe-накопители для серверов: Что это такое и как выбрать лучший вариант?

Развёртывание и защита базы данных MySQL

Установите MySQL (или MariaDB):

apt install mysql-server

После установки запускается скрипт базовой защиты, который отключает анонимных пользователей, закрывает удаленный доступ, и выполняет базовые настройки безопасности.

Дальше создаются пользователи, и им выдаются права:

CREATE USER ‘user’@’localhost’ IDENTIFIED BY ‘password’; 

GRANT ALL PRIVILEGES ON user_%. TO ‘user’@’localhost’;

FLUSH PRIVILEGES;

Это позволит управлять доступом к базе данных.

 

Автоматическая выдача и продление SSL-сертификатов через Let’s Encrypt

Главная “фишка” Caddy — автоматическая работа с SSL.
Для автоматической выдачи или продления SSL-сертификатов, необходимо указать только домен:

site.example { … }

С этой информацией, сервер сам проверит доступность домена, получит сертификат от Let’s Encrypt или автоматически продлит его, и настроит HTTPS.

Конфигурация Caddyfile: практические примеры и лучшие практики

Вот так выглядит пример полной конфигурации Caddyfile:

site.example { root * /var/www/site.example file_server encode zstd gzip

php_fastcgi unix//run/php/php-fpm.sock

 

log {

    output file /var/log/caddy/site.log

    format console

}

 

}

Для лучшей безопасности и производительности можете включить HSTS:

header { Strict-Transport-Security max-age=31536000; }

 

Часто спрашивают: Передача файлов с локального ПК на VPS под Linux

Настройка домена и DNS для корректной работы HTTPS

Первый шаг — это настройка домена и DNS.

Имея IP адрес своего сервера, нужно открыть DNS и создать А-запись, которая выглядит примерно так:

  • Host: @
  • Type: A
  • Value: IP сервера

После создания А записи нужно немного подождать для обновления DNS. Когда ты укажешь домен в Caddyfile и перезапустишь Caddy, он попытается получить сертификат от Let’s Encrypt; при правильной настройке (доступный сервер, нужный IP, открытые порты 80 и 443) сертификат выдается автоматически. Важно понимать, что Caddy использует проверку домена (HTTP-01 challenge), поэтому сервер должен быть доступен из интернета.

Для корректной работы HTTPS также необходимо:

  1. Зарегистрировать домен.
  2. Указать А-запись.
  3. Открыть порты 80 и 443.

 

Проверка работоспособности и устранение типичных ошибок

После настройки нужно проверить:

  • Открывается ли сайт по HTTPS.
  • Выдан ли сертификат.
  • Работает ли PHP.
  • Подключается ли база данных.

Частые ошибки:

  • Закрытые порты 80 и 443.
  • Некорректная настройка DNS.
  • Ошибка форматирования Caddyfile (например, отступы).
  • Неправильный путь к сокету PHP-FPM.

 

Читайте также: Выделенный IP-адрес: нужен ли он вашему сайту и какие преимущества дает

Кеширование, сжатие и HTTP/2

Caddy сразу поддерживает HTTP/2 и HTTP/3, TLS 1.3 и автоматическое сжатие. Чтобы включить сжатие, выполните команду:

encode zstd gzip

Сервер тогда автоматические выберет лучший алгоритм сжатия в зависимости от клиента.