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

Установка Craft CMS на Debian 9 с Nginx и SSL

6 min read CMS Обновлено 23 Nov 2025
Установка Craft CMS на Debian 9 с Nginx и SSL
Установка 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:///index.php?p=admin/install — если всё настроено, появится мастер установки.

Ключевой момент: в продакшене правильно настройте права на директории storage и runtime, чтобы веб-сервер мог записывать, но чтобы доступ по SSH был ограничен.

Шаг 7 — Завершение установки через веб-мастер

После перехода по адресу установки вы увидите экран приветствия. Нажмите кнопку «Install Craft».

Start craft installation

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

Accept the license

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

Connect to database

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

Create a user

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

Add site information

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

Craft CMS Dashboard

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, наполнение контента.

Методология быстрой проверки работоспособности

  1. Проверить доступность 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 и автоматическое обновление сертификатов, создайте бэкапы.

Поделиться: 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 — руководство