Найти тему
ИТ разнообразно

FreeBSD, Caddy и PHP — идеальное сочетание

Unsplash
Unsplash

Caddy — отличный веб-сервер. Его проще настроить, чем nginx, и он обрабатывает запросы и обновления SSL-сертификатов, поэтому вам не нужно возиться с certbot/cron. Иногда вы можете предпочесть использовать Caddy вместо Nginx, Apache, Lighttpd или других веб-серверов.

FreeBSD и Caddy очень хорошо работают вместе для статических веб-сайтов/обратных прокси-серверов, но нам часто приходится обслуживать динамические веб-сайты. Чтобы добавить PHP, выполните следующие действия.

Сначала установите и активируйте Caddy, выполнив следующие команды:

# pkg install caddy
# service caddy enable

Теперь давайте установим PHP — скажем, PHP 8.1 — и активируем php-fpm:

# pkg install php81
# service php-fpm enable

Чтобы использовать php-fpm, измените файл конфигурации в /usr/local/etc/php-fpm.d/www.conf, изменив адрес прослушивания.

Изменяем строку:

listen = 127.0.0.1:9000

на новое значение:

listen = /var/run/php81.sock

Затем измените владельца сокета. Просто раскомментируйте следующие строки:

listen.owner = www
listen.group = www
listen.mode = 0660

Запускаем php-fpm:

service php-fpm start

Теперь измените /usr/local/etc/caddy/Caddyfile. Добавьте что-то вроде этого:

my.website.com {
root * /usr/local/www/website
php_fastcgi unix//var/run/php81.sock
file_server
}

Это настроит виртуальный хост с именем my.website.comCaddy попытается получить для него сертификат) с его корнем в /usr/local/www/website и будет обрабатывать любой запрос к файлам .php через сокет php. Директива file_server гарантирует, что статические файлы могут обслуживаться из корневого пути.

Запускаем Caddy:

service caddy start

Вот и всё. Хотя это простая конфигурация, её можно настроить для более продвинутого использования. Например, вы можете добавить следующие строки, чтобы ограничить доступ к определённым файлам:

@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}

rewrite @disallowed '/index.php'

и вы можете иметь рабочую (и вполне безопасную) установку Wordpress.

Перевод. Автор оригинала: Stefano Marinelli.