Як інсталювати останню версію веб-сервера 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` виконувати ваші ставки за допомогою старої функції вимкнути і знову ввімкнути.
```bash
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, замініть потрібну версію на php81):
dnf install -y php81-php-fpm
Якщо вам потрібні додаткові модулі PHP (наприклад, GD), додайте їх до наведеної вище команди.
Потім нам потрібно налаштувати PHP для прослуховування TCP-сокета:
vim /etc/opt/remi/php81/php-fpm.d/www.conf
Далі знайдіть рядок:
listen = /var/opt/remi/php81/run/php-fpm/www.sock
Замініть його цим:
listen = 127.0.0.1:9000
Потім збережіть і закрийте файл www.conf
і відкрийте Caddyfile:
vim /etc/caddy/Caddyfile
Перейдіть до блоку сервера, який ми створили раніше:
example.com {
root * /usr/share/caddy/example.com
file_server
}
Додайте наступний рядок після рядка "file_server":
php_fastcgi 127.0.0.1:9000
Ваш серверний блок із підтримкою PHP виглядатиме так:
example.com {
root * /usr/share/caddy/example.com
file_server
php_fastcgi 127.0.0.1:9000
}
Потім збережіть і вийдіть із Caddyfile і перезапустіть Caddy:
systemctl restart caddy
Щоб перевірити, чи працює PHP, давайте додамо простий файл PHP:
echo "<?php phpinfo(); ?>" >> /usr/share/caddy/rockyexample.duckdns.org/phpinfo.php
Відкрийте в браузері файл, який ви створили, і вам має бути представлена інформація PHP:
Висновок¶
Базове встановлення та налаштування Caddy дуже прості. Пройшли ті часи, коли ви витрачали години на налаштування Apache. Так, Nginx, безсумнівно, є вдосконаленням, але йому все ще бракує сучасних, але важливих функцій, таких як Let's Encrypt і підтримка входу Kubernetes, яку вбудовано в Caddy. Натомість у Nginx (і Apache) ви повинні додавати їх окремо.
Я використовую Caddy з 2019 року як свій веб-сервер, і він просто чудовий. Насправді, щоразу, коли я маю справу з Apache, Nginx або IIS, це майже як повертати машину часу в 2010 рік або раніше.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova