Як інсталювати останню версію веб-сервера Caddy на Rocky Linux¶
Вступ¶
Caddy — веб-сервер, розроблений для сучасних веб-додатків. Caddy простий у налаштуванні та має автоматичне Let's Encrypt, тому ваші веб-сайти завжди захищені за замовчуванням. Це веб-сервер автора.
Ось короткий перелік функцій Caddy:
- Базовий веб-сервер
- Зворотний проксі для спрямування трафіку на кілька сайтів
- Модулі для багатьох робочих навантажень, включаючи TCP, SSH тощо
- Вбудований балансир навантаження для керування трафіком на кількох веб-сайтах
- Вбудована автоматизована підтримка Let's Encrypt
- API для програмної переналаштування сервера
- Підтримка PHP FastCGI
- Та IPv6
Передумови та припущення¶
Вам потрібно:
- Підключена до Інтернету машина або сервер Rocky Linux.
- Базове знайомство з командним рядком.
- Можливість запускати команди від імені користувача root або за допомогою
sudo. - Текстовий редактор на ваш вибір, будь то графічний або заснований на командному рядку. Для цього підручника автор використовує
vim. - Ім’я домену чи інше ім’я хоста вказує на публічну IP-адресу вашого сервера.
Встановлення Caddy¶
По-перше, переконайтеся, що на вашій машині встановлено останні оновлення:
sudo dnf update
Потім встановіть репозиторій програмного забезпечення epel-release:
sudo dnf install -y epel-release
Далі встановіть веб-сервер caddy:
sudo dnf install -y caddy
Налаштування брандмауера¶
Якщо ви спробуєте переглянути веб-сторінку за IP-адресою чи доменним іменем вашого комп’ютера з іншого комп’ютера, ймовірно, ви нічого не отримаєте. Так буде, якщо брандмауер запущено.
Щоб відкрити необхідні порти, щоб фактично «бачити» ваші веб-сторінки, ви скористаєтеся вбудованим брандмауером Rocky Linux, firewalld. Команда firewalld для цього — firewall-cmd.
Щоб відкрити служби http і https, служби, які обробляють веб-сторінки, запустіть:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
Розбираючи це:
- Прапор
-–permanentвказує брандмауеру застосовувати цю конфігурацію щоразу, коли перезапускаються брандмауер та сервер. –-zone=publicвказує брандмауеру дозволити вхідні підключення до цього порту від усіх.- Нарешті,
--add-service=httpі--add-service=httpsвказуютьfirewalldпередавати весь трафік HTTP і HTTPS на сервер.
Ці конфігурації не почнуть діяти, доки ви не примусово усунете проблему. Для цього скажіть firewalld перезавантажити свої конфігурації:
sudo firewall-cmd --reload
Примітка
Тепер є мінімальний шанс, що це не спрацює. У тих рідкісних випадках змусьте firewalld виконувати ваші ставки за допомогою старої функції вимкнути і знову ввімкнути.
systemctl restart firewalld
Щоб забезпечити доступність портів, запустіть firewall-cmd --list-all. Правильно налаштований брандмауер виглядатиме приблизно так:
public (active)
target: default
icmp-block-inversion: no
interfaces: enp9s0
sources:
services: cockpit dhcpv6-client ssh http https
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Це має бути все, що вам потрібно, з точки зору брандмауера.
Налаштування Caddy¶
На відміну від традиційних веб-серверів, таких як Apache і Nginx, формат конфігурації Caddy значно простіший. Минули ті часи, коли вам доводилося налаштовувати дрібниці, як-от модель потоків веб-сервера або сертифікати SSL, якщо ви цього не хотіли.
Щоб відредагувати файл конфігурації Caddy:
vim /etc/caddy/Caddyfile
Мінімальна статична конфігурація веб-сервера може бути подібною до цієї:
example.com {
root * /usr/share/caddy/example.com
file_server
}
Замініть «example.com» на ім’я хоста, яке вказує на ваш сервер.
Ви також повинні додати веб-сайт до папки в «кореневому» каталозі Caddy. Для простоти додайте односторінковий статичний веб-сайт:
mkdir -p /usr/share/caddy/example.com
echo "<h1>Hi!</h1>" >> /usr/share/caddy/example.com/index.html
Після цього увімкніть службу Caddy's systemd:
systemctl enable --now caddy
Протягом хвилини Caddy отримає сертифікати SSL від Let's Encrypt. Потім ви можете переглянути веб-сайт, який ви щойно налаштували, у браузері:

Він повинен мати навісний замок SSL, який має працювати в кожному сучасному браузері, і не тільки це, але й рейтинг A+ на Qualys SSL Server Test.
Додатково: PHP FastCGI¶
Як згадувалося раніше, Caddy підтримує підтримку FastCGI для PHP. Хороша новина полягає в тому, що, на відміну від Apache і Nginx, Caddy автоматично обробляє розширення файлів PHP.
Щоб установити PHP, спочатку додайте репозиторій Remi (примітка: якщо ви використовуєте Rocky Linux 8.x, замініть 8 поруч із «release-» нижче):
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Далі нам потрібно встановити PHP (примітка: якщо ви використовуєте іншу версію PHP, замініть потрібну версію на php83):
dnf install -y php83-php-fpm
Якщо вам потрібні додаткові модулі PHP (наприклад, GD), додайте їх до наведеної вище команди.
Потім нам потрібно налаштувати PHP для прослуховування TCP-сокета:
vim /etc/opt/remi/php83/php-fpm.d/www.conf
Далі знайдіть рядок:
listen = /var/opt/remi/php83/run/php-fpm/www.sock
Замініть його цим:
listen = 127.0.0.1:9000
Then save and exit the www.conf file, and open the Caddyfile:
vim /etc/caddy/Caddyfile
Navigate to the server block we created earlier:
example.com {
root * /usr/share/caddy/example.com
file_server
}
Add the following line after the "file_server" line:
php_fastcgi 127.0.0.1:9000
Your PHP-enabled server block will look like this:
example.com {
root * /usr/share/caddy/example.com
file_server
php_fastcgi 127.0.0.1:9000
}
Then save and exit the Caddyfile, and restart Caddy:
systemctl restart caddy
To test if PHP works, let's add a simple PHP file:
echo "<?php phpinfo(); ?>" >> /usr/share/caddy/rockyexample.duckdns.org/phpinfo.php
Open your browser to the file you created, and you should be presented with PHP information:

Conclusion¶
The basic installation and configuration of Caddy is incredibly easy. Gone are the days when you spent hours configuring Apache. Yes, Nginx is certainly an improvement, but it still lacks modern but essential features such as Let's Encrypt and Kubernetes ingress support that Caddy builds in, whereas on Nginx (and Apache) you must add them separately.
Я використовую Caddy з 2019 року як свій веб-сервер, і він просто чудовий. Насправді, щоразу, коли я маю справу з Apache, Nginx або IIS, це майже як повертати машину часу в 2010 рік або раніше.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova