Установка Craft CMS на Debian 9 с Nginx и SSL
Важно: перед началом создайте резервные копии и убедитесь, что у вас есть непривилегированный пользователь с sudo-доступ.
Коротко о Craft CMS
Craft — это open-source CMS на PHP, ориентированная на гибкую разработку интерфейсов и управление контентом. Подходит для сайтов разного масштаба, имеет экосистему плагинов и исходники на GitHub.
Основные требования
- PHP 7.0 или новее с расширениями: ctype, curl, gd или ImageMagick, iconv, json, mbstring, openssl, pcre, PDO (MySQL или PostgreSQL), reflection, SPL, zip, intl, dom.
- MySQL 5.5+ с InnoDB, MariaDB 5.5+ или PostgreSQL 9.5+.
- Минимум 256 МБ памяти, выделенной PHP.
- Около 200 МБ свободного дискового пространства для базовой установки.
Факт: Craft работает с несколькими СУБД — выберите ту, с которой вы привыкли и которую поддерживает ваша инфраструктура.
Предварительные условия
- Сервер под управлением Debian 9 (stretch).
- Непривилегированный пользователь с sudo.
Шаг 0 — Базовые действия на сервере
Проверьте версию Debian:
lsb_release -ds
# Debian GNU/Linux 9.8 (stretch)Установите часовой пояс:
sudo dpkg-reconfigure tzdataОбновите систему и установите базовые утилиты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git unzip socat apt-transport-httpsСовет: держите систему в актуальном состоянии, особенно пакеты безопасности.
Шаг 1 — Установка PHP и расширений
Установите PHP-FPM и необходимые расширения:
sudo apt install -y php7.0 php7.0-cli php7.0-fpm php7.0-common php7.0-curl php7.0-gd php-imagick php7.0-json php7.0-mbstring php7.0-mysql php7.0-pgsql php7.0-zip php7.0-intl php7.0-xmlПроверьте версию PHP:
php --version
# PHP 7.0.33-0+deb9u3 (cli) (built: Mar 8 2019 10:01:24) ( NTS ) Отредактируйте php.ini для PHP-FPM и увеличьте ресурсные лимиты:
sudo vim /etc/php/7.0/fpm/php.iniУстановите как минимум:
memory_limit = 256M
max_execution_time = 120 Перезапустите PHP-FPM, если применяли изменения:
sudo systemctl reload php7.0-fpm.serviceПримечание: PHP-FPM обычно запускается и включается автоматически на Debian 9.
Шаг 2 — Установка MariaDB (или MySQL) и создание базы данных
В этом руководстве используется MariaDB.
sudo apt install -y mariadb-serverПроверьте версию MySQL/MariaDB:
mysql --version
# mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapperЗапустите скрипт безопасной настройки и задайте пароль для root:
sudo mysql_secure_installationОтветьте на вопросы (пример):
Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_password
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YПодключитесь к MariaDB:
sudo mysql -u root -p
# Введите парольСоздайте базу данных и пользователя для Craft:
mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;Замените dbname, username и password на свои значения. Затем выйдите:
mysql> exitСовет по безопасности: не используйте root для приложений; создавайте отдельного пользователя с ограниченными правами.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
HTTPS не обязателен, но настоятельно рекомендуется.
Acme.sh — это лёгкий клиент на shell для получения сертификатов Let’s Encrypt без дополнительных зависимостей.
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~Проверка версии acme.sh:
/etc/letsencrypt/acme.sh --version
# v2.8.0Получение RSA и ECDSA сертификатов (замените example.com на ваш домен):
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256После этого сертификаты будут в:
- Для RSA: /etc/letsencrypt/example.com
- Для ECDSA: /etc/letsencrypt/example.com_ecc
Альтернатива: certbot — более распространённый клиент от EFF. Acme.sh предпочтителен, если нужны минимальные зависимости.
Шаг 4 — Установка и настройка Nginx
В этом руководстве используется Nginx (mainline) из официального репозитория.
Добавьте ключ репозитория и сам репозиторий:
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exitОбновите список пакетов и установите Nginx:
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xsltЗапустите и включите сервис:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceПроверьте версию:
sudo nginx -v
# nginx version: nginx/1.15.10Создайте конфигурацию для сайта:
sudo vim /etc/nginx/conf.d/craft.confВставьте предложенную конфигурацию (пример):
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
root /var/www/craft/web;
index index.php;
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
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.0-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 "";
}
}Примечание: конфигурация упрощена — для продакшена изучите https://github.com/nystudio107/nginx-craft.
Укажите пользователя в /etc/nginx/nginx.conf:
sudo vim /etc/nginx/nginx.confУбедитесь, что указано:
user www-data www-data;Проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t
sudo systemctl reload nginx.serviceСовет по HTTPS: убедитесь, что директивы SSL используют современные параметры (TLS1.2+, сильные шифры) и HSTS, если сайт готов к этому.
Шаг 5 — Установка Composer
Composer — менеджер зависимостей для PHP. Установим глобально:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composerПроверьте Composer:
composer --version
# Composer version 1.8.4 2019-02-11 10:52:10Примечание: команды установки Composer могут изменяться, смотрите: https://getcomposer.org/download/.
Шаг 6 — Установка Craft CMS через Composer
Создайте корневую папку для сайта и установите владельца:
sudo mkdir -p /var/www/craft
cd /var/www/craft
sudo chown -R [your_username]:[your_username] /var/www/craftСоздайте проект Craft в текущую директорию:
composer create-project craftcms/craft . Затем поменяйте владельца на www-data для работы веб-сервера:
sudo chown -R www-data:www-data /var/www/craftОткройте в браузере: http://
Ключевой момент: в продакшене правильно настройте права на директории storage и runtime, чтобы веб-сервер мог записывать, но чтобы доступ по SSH был ограничен.
Шаг 7 — Завершение установки через веб-мастер
После перехода по адресу установки вы увидите экран приветствия. Нажмите кнопку «Install Craft».

На следующем шаге примите лицензионное соглашение.

Введя данные базы, нажмите Next.

Создайте администратора и продолжите.

Добавьте информацию о сайте и завершите установку.

После успешной установки вы попадёте в админ-панель Craft.

ALT текста изображений были локализованы: первое изображение — обложка/логотип Craft; остальные — шаги мастера установки.
Дополнительные рекомендации по безопасности и эксплуатации
- Права доступа: web-файлы должны принадлежать www-data, но доступ по SSH и FTP давать ограниченно.
- Бэкапы: регулярное резервное копирование базы данных и папки /var/www/craft/storage/ и /var/www/craft/config/
- Обновления: обновляйте зависимости через Composer и следите за обновлениями PHP/Nginx.
- SSL: автоматизируйте продление сертификатов acme.sh через cron (acme.sh обычно добавляет cron автоматически).
- HTTP заголовки: добавьте Content-Security-Policy, X-Frame-Options, X-Content-Type-Options.
Отладка и частые проблемы
- Ошибка 502 Bad Gateway: проверьте, что php7.0-fpm запущен и путь unix:/var/run/php/php7.0-fpm.sock совпадает.
- Ошибки прав доступа: проверьте владельца и права каталогов storage и web.
- Невозможно подключиться к базе: проверьте хост, порт, имя пользователя и пароль, а также, что MariaDB слушает на нужном интерфейсе.
Альтернативные подходы
- Веб-сервер: можно использовать Apache + php-fpm вместо Nginx.
- TLS: certbot (Let’s Encrypt) как альтернатива acme.sh.
- Установка: вручную скачать zip-архив Craft вместо Composer, если Composer недоступен.
Чеклист перед запуском в продакшн
- SSL выдан и настроен.
- Права на файлы настроены корректно (www-data для веб-сервера).
- Бэкап-процедуры настроены.
- Мониторинг и логи (nginx + php-fpm) настроены.
- HTTP-заголовки безопасности добавлены.
Ролевые задачи (кто за что отвечает)
- Системный администратор: установка OS, PHP-FPM, Nginx, MariaDB, SSL, бэкапы.
- Разработчик: установка зависимостей Composer, миграции, деплой кода.
- Контент-менеджер: настройка каналов/разделов в админ-панели Craft, наполнение контента.
Методология быстрой проверки работоспособности
- Проверить доступность index.php в браузере. 2. Проверить статус php-fpm и nginx. 3. Проверить подключение к БД из CLI. 4. Пройти установочный мастер Craft.
Критерии приёмки
- Сайт загружается по HTTPS без предупреждений.
- Админ-панель Craft доступна и позволяет создать контент.
- Все сервисы (Nginx, PHP-FPM, MariaDB) работают и проходят базовые проверки.
Совместимость и переходы
- При миграции с другой версии PHP оцените совместимость плагинов Craft и кода сайта.
- Для перехода с MySQL на PostgreSQL потребуется экспорт/импорт данных и проверка совместимости SQL-диалекта.
Полезные ссылки
Краткое резюме
- Установите и настройте PHP-FPM, MariaDB и Nginx.
- Получите сертификат Let’s Encrypt (acme.sh или certbot).
- Установите Craft через Composer и завершите установку через веб-мастер.
Ключевые шаги: убедитесь в корректных правах доступа, настройте SSL и автоматическое обновление сертификатов, создайте бэкапы.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone