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

Установка Craft CMS с Nginx и Let's Encrypt на Debian 11

5 min read CMS Обновлено 23 Nov 2025
Craft CMS на Debian 11 — Nginx + Let's Encrypt
Craft CMS на Debian 11 — Nginx + Let's Encrypt

О чём эта инструкция

Craft CMS — лёгкая, безопасная и расширяемая CMS на PHP (на базе Composer). Руководство показывает установку на Debian 11 с Nginx и автоматическим получением сертификата Let’s Encrypt с помощью certbot.

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

Требования

  • Сервер под управлением Debian 11.
  • Доменное имя, указывающее на IP сервера.
  • Доступ root или пользователь с sudo.

Быстрый список шагов

  1. Установить Nginx, MariaDB и PHP 7.4 + расширения.
  2. Настроить php.ini (память и timezone).
  3. Создать базу данных и пользователя.
  4. Установить Composer.
  5. Установить Craft через composer в /var/www/html.
  6. Настроить Nginx виртуальный хост.
  7. Получить SSL через certbot и включить перенаправление на HTTPS.
  8. Применить рекомендации по правам, безопасности и автоматическому обновлению сертификатов.

Установка Nginx, MariaDB и PHP

Сначала установим Nginx, MariaDB, PHP 7.4 и необходимые расширения:

apt-get install nginx mariadb-server php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-pgsql php-zip php-intl php-xml sudo curl -y

Примечание: в примерах используется PHP-FPM (php7.4-fpm). Если у вас другая версия PHP, подставьте соответствующий путь и пакеты.

После установки отредактируйте файл php.ini (пример для PHP 7.4):

nano /etc/php/7.4/fpm/php.ini

Измените или добавьте следующие настройки (при необходимости подставьте вашу временную зону):

memory_limit = 512M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Asia/Kolkata

Совет: замените date.timezone на вашу локальную зону (например, Europe/Moscow) или оставьте примерный вариант.

Примените изменения перезапуском PHP-FPM:

systemctl restart php7.4-fpm

Создание базы данных для Craft CMS

Войдите в MariaDB (MySQL) и создайте базу данных и пользователя:

mysql

Внутри консоли MariaDB выполните:

MariaDB [(none)]> CREATE DATABASE craftdb;
MariaDB [(none)]> GRANT ALL ON craftdb.* TO 'craftuser' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Замените craftdb, craftuser и password на свои имена и безопасный пароль. Запомните эти данные — они понадобятся при установке Craft.

Установка Composer

Composer — менеджер зависимостей для PHP. Установите его так:

curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Проверьте версию:

composer --version

Ожидаемый результат: вывод версии Composer (например, 2.x).

Установка Craft CMS

Сделаем каталог веб-сайта собственностью www-data и установим Craft в /var/www/html:

chown -R www-data:www-data /var/www/html
cd /var/www/html
sudo -u www-data composer create-project craftcms/craft craftcms

Запустится скрипт установки Craft. Вам будут заданы вопросы о базе данных, учётной записи администратора и URL сайта. Пример интерактивного вывода (сокращённый):

> @php craft setup/welcome

Welcome to Craft CMS!

Are you ready to begin the setup? (yes|no) [no]: yes
Which database driver are you using? [mysql,pgsql,?]: mysql
Database server name or IP address: [127.0.0.1]
Database username: craftuser
Database password: <ваш_пароль>
Database name: craftdb
Install Craft now? (yes|no) [yes]: yes
Username: admin
Email: admin@example.com
Password: <ваш_пароль>
Site name: Craft Site
Site URL: https://craftcms.example.com
Site language: [en-US]

После установки установите правильные права для каталога Craft:

chown -R www-data:www-data /var/www/html/craftcms

Настройка Nginx для Craft CMS

Создайте конфигурацию виртуального хоста:

nano /etc/nginx/conf.d/craftcms.conf

Добавьте следующую конфигурацию (замените server_name на ваш домен):

server {
listen 80;
 server_name craftcms.example.com;
 root /var/www/html/craftcms/web;
 index index.php;
 location / {
  try_files $uri/index.html $uri $uri/ /index.php?$query_string;
  }
 location ~ [^/]\.php(/|$) {
  try_files $uri $uri/ /index.php?$query_string;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  fastcgi_index index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param HTTP_PROXY "";
 }
}

Проверьте синтаксис и перезапустите Nginx:

nginx -t
systemctl reload nginx
systemctl status nginx

Получение Let’s Encrypt SSL (Certbot)

Установите Certbot и плагин для Nginx:

apt-get install python3-certbot-nginx -y

Запустите certbot для вашего домена:

certbot --nginx -d craftcms.example.com

Во время интерактива укажите email, согласитесь с правилами и при появлении выбора перенаправления выберите опцию редиректа на HTTPS (рекомендуется для новых сайтов).

Certbot автоматически изменит конфигурацию Nginx и сохранит сертификаты в /etc/letsencrypt/live/your-domain/.

Чтобы регулярно обновлять сертификаты, используйте systemd timer, который обычно устанавливается вместе с certbot, или добавьте проверку в cron:

# Запуск проверки и обновления сертификатов каждый день в 3:15
15 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Совет: проверьте работу автоматического обновления командой:

certbot renew --dry-run

Типичные проблемы и их решения

  • Ошибка 502 Bad Gateway: убедитесь, что PHP-FPM работает (systemctl status php7.4-fpm) и fastcgi_pass указывает на существующий сокет или порт.
  • Permission denied при записи в storage: проверьте, что владельцем файлов и директорий является www-data и права на директории корректны (chown -R www-data:www-data /var/www/html/craftcms).
  • Невозможно подключиться к базе данных: проверьте правильность хоста, порта и разрешений пользователя MariaDB, а также сеть/файрвол.
  • Certbot не проходит валидацию: проверьте, что домен указывает на сервер и порты 80/443 открыты.

Рекомендации по безопасности и эксплуатации

  • Права и владельцы: держите веб-каталог под владельцем www-data, но не давайте 777.
  • Ограничьте доступ к /vendor и /storage, если это нужно, через Nginx deny/allow.
  • Регулярные обновления: обновляйте Debian, PHP, Composer-пакеты и плагины Craft.
  • Резервное копирование: бэкапьте базу данных и /var/www/html/craftcms регулярно.
  • Логи и мониторинг: подключите мониторинг (заполнение диска, нагрузка, ошибка 5xx).
  • Fail2ban: подумайте об установке fail2ban для защиты от брутфорса.

Чек-лист ролей (кратко)

  • Системный администратор: подготовить сервер, открыть порты 80/443, настроить бэкапы, SSL-автообновление.
  • Разработчик: установить зависимости через Composer, развернуть код, проверить environment (.env).
  • Владелец сайта: настроить контент, создать пользователей в панели управления Craft.

Небольшая методология при деплое в прод

  1. Подготовить staging-сервер, собрать данные конфигурации и тестовые данные.
  2. Проверить работу на staging: авторизация, CRUD, плагины.
  3. Перенести на production, выполнить бэкап, переключить DNS, удостовериться в наличии HTTPS и автоматического обновления.

Факты и ключевые значения

  • ОС: Debian 11.
  • Веб-сервер: Nginx.
  • СУБД: MariaDB/MySQL.
  • PHP: пример — 7.4 (php7.4-fpm).
  • SSL: Let’s Encrypt через certbot.

Скриншоты

Стартовая страница установки Craft CMS

Описание: Стартовый экран установки Craft CMS с приветственным текстом.

Страница входа в панель Craft CMS

Описание: Страница входа в административную панель Craft CMS.

Панель управления Craft CMS после входа

Описание: Дашборд Craft CMS с основными виджетами и навигацией.

Заключение

Поздравляем — Craft CMS установлен и доступен по HTTPS. Дальше: настройте контентные типы, поля и шаблоны, установите нужные плагины и организуйте регулярные бэкапы. Если возникнут ошибки — сначала проверьте логи Nginx, PHP-FPM и Certbot, затем применяйте пункты из раздела «Типичные проблемы».

Важно: поддерживайте обновления безопасности и автоматическое обновление сертификатов.

Краткое резюме и шаги далее:

  • Проверьте права доступа и журнал ошибок.
  • Настройте бэкапы и мониторинг.
  • Планируйте обновления для PHP, системы и Craft.

Если нужно, могу прислать готовый шаблон конфигурации systemd-таймера для certbot, пример безопасных прав на файлы и подробный playbook для Ansible.

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство