Установка Craft CMS на CentOS 7 с Nginx и Let's Encrypt SSL
Важно: в примерах замените example.com, dbname, username и password на ваши реальные значения. Выполняйте команды под пользователем с sudo‑правами.
Что такое Craft CMS
Craft — это гибкая open source CMS на PHP для создания управляемого контента и кастомных сайтов. Коротко: простая панель управления, мощный шаблонизатор и большое количество плагинов.
Ключевые требования (коротко): PHP 7.0+, СУБД (MariaDB/MySQL/Postgres), как минимум 256 МБ памяти для PHP и место на диске ~200 МБ.
Содержание
- Требования
- Предварительные условия
- Начальные шаги
- Шаг 1 — Установка PHP и расширений
- Шаг 2 — MariaDB и создание базы данных
- Шаг 3 — acme.sh и сертификат Let’s Encrypt (опционально)
- Шаг 4 — Установка и настройка Nginx
- Шаг 5 — Установка Composer
- Шаг 6 — Установка Craft CMS через Composer
- Шаг 7 — Завершение установки в браузере
- Практические рекомендации: безопасность, резервирование, миграция
- Чек‑листы для ролей, отладка и рекомендации
Требования
Craft требует следующее:
- PHP версии 7.0 или выше с расширениями: ctype, cURL, GD или ImageMagick, iconv, JSON, Multibyte String, OpenSSL, PCRE, PDO MySQL или PDO PostgreSQL, PDO, Reflection, SPL, Zip, Intl, DOM.
- MySQL 5.5+ с InnoDB, MariaDB 5.5+ или PostgreSQL 9.5+.
- Минимум 256 МБ выделенной памяти для PHP (memory_limit >= 256M).
- Минимум 200 МБ свободного места на диске.
Предварительные условия
- Сервер с установленной ОС CentOS 7.
- Непользователь root с sudo‑правами.
Начальные шаги
Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)Установите часовой пояс (пример):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите пакеты системы:
sudo yum update -yУстановите базовые утилиты:
sudo yum install -y curl wget vim git unzip socatШаг 1 — Установка PHP и необходимых расширений
Добавьте репозиторий Webtatic:
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановите PHP и расширения (пример для PHP 7.2 из webtatic):
sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-gd php72w-pecl-imagick php72w-json php72w-mbstring php72w-mysql php72w-pgsql php72w-zip php72w-intl php72w-xml php72w-pdoПроверьте версию PHP:
php --version
# PHP 7.2.13 (cli) (built: Dec 6 2018 23:18:37) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend TechnologiesЗапустите и включите службу PHP‑FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceОтредактируйте /etc/php.ini и установите memory_limit минимум 256 МБ:
memory_limit = 256MПосле этого можно переходить к базе данных.
Шаг 2 — Установка MariaDB и создание базы данных
В этом руководстве используется MariaDB.
Установите MariaDB:
sudo yum install -y mariadb-serverПроверьте версию:
mysql --version
# mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1Запустите и включите службу:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceЗапустите скрипт безопасности MariaDB:
sudo mysql_secure_installationОтвечайте на вопросы, где рекомендуется согласиться (Y) на удаление анонимных пользователей, запрет удалённого root‑входа, удаление тестовой БД и перезагрузку таблиц привилегий.
Подключитесь к MariaDB как root и создайте базу и пользователя для Craft:
sudo mysql -u root -p
# Enter password
mariadb> CREATE DATABASE dbname;
mariadb> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mariadb> FLUSH PRIVILEGES;
mariadb> exitЗамените dbname, username и password на свои значения.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
HTTPS не обязателен, но настоятельно рекомендован. Для автоматического получения сертификатов можно использовать acme.sh — лёгкий shell‑клиент без внешних зависимостей.
Создайте директорию для certs и установите acme.sh:
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 ~Проверьте версию:
/etc/letsencrypt/acme.sh --version
# v2.8.0Получите сертификаты RSA и ECDSA для вашего домена:
# 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
Примечание: если на сервере уже запущен Nginx, остановите его временно или используйте webroot/плагины DNS для прохождения проверки.
Шаг 4 — Установка и настройка Nginx
Craft хорошо работает с Nginx. Установим mainline‑ветку Nginx из официального репозитория.
Импорт ключа подписи Nginx:
wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.keyСоздайте файл /etc/yum.repos.d/nginx_mainline.repo со следующим содержимым:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1Установите Nginx и модули:
sudo yum 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Проверьте версию:
nginx -v
# nginx version: nginx/1.15.8Создайте файл конфигурации для Craft:
sudo vim /etc/nginx/conf.d/craft.confИ заполните примерно таким блоком (вставьте свой домен и пути к сертификатам):
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com www.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 127.0.0.1:9000;
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 "";
}
}Замените example.com на ваш домен.
Важно: приведённая конфигурация упрощена. Для продакшна рассмотрите более детальную настройку SSL (HSTS, современные шифры), редиректы HTTP→HTTPS и защиту от утечек через headers. Для примера продвинутой конфигурации можно посмотреть https://github.com/nystudio107/nginx-craft.
Проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t
sudo systemctl reload nginx.serviceШаг 5 — Установка Composer
Установите Composer глобально (пример старого инсталлятора — сверяйтесь с официальной страницей):
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { 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 --version
# Composer version 1.8.0 2018-12-03 10:31:16Примечание: команда установки может меняться — проверяйте https://getcomposer.org/download/.
Шаг 6 — Установка Craft CMS
Создайте корневую директорию сайта и установите права:
sudo mkdir -p /var/www/craft
cd /var/www/craftИзмените владельца на вашего пользователя (замените {your_username}):
sudo chown -R {your_username}:{your_username} /var/www/craftСоздайте новый проект Craft через Composer:
composer create-project craftcms/craft .Переключите владельца на nginx (или на пользователя, под которым работает php‑fpm):
sudo chown -R nginx:nginx /var/www/craftОтредактируйте /etc/php-fpm.d/www.conf и установите user и group в nginx (если изначально apache):
# user = nginx
# group = nginxСоздайте директорию для сессий PHP и назначьте владельца:
sudo mkdir -p /var/lib/php/session && sudo chown -R nginx:nginx /var/lib/php/sessionОткройте в браузере установщик Craft:
http://
Если всё настроено правильно, появится мастер установки Craft.
Шаг 7 — Завершение установки в веб‑мастере
После перехода по URL установки вы увидите мастер. Нажмите “Install Craft”.

Примите лицензию нажатием “Got it”.

Укажите параметры подключения к базе данных и нажмите “Next”.

Создайте учётную запись администратора и нажмите “Next”.

Добавьте данные сайта и нажмите “Finish up”.

После завершения вы будете перенаправлены в админ‑панель Craft.

Практические рекомендации и дополнительные материалы
Факты и числа
- Рекомендуемая память для PHP: минимум 256 МБ (memory_limit = 256M).
- Место на диске: базовая установка Craft ≈ 200 МБ, дополнительно места займут медиа и логи.
- Сертификаты Let’s Encrypt действуют 90 дней — автоматизируйте обновление.
Безопасность — базовый список (быстрая проверка)
- Закройте доступ к директории /vendor и /storage через Nginx.
- Используйте HTTPS, включите HSTS и современные шифры.
- Ограничьте доступ к /admin по IP или включите двухфакторную аутентификацию для админов.
- Регулярно обновляйте PHP/OS/плагины и проверяйте журналы.
Резервирование и откат
- Делайте резервную копию базы данных перед обновлением CMS или плагинов.
- Храните резервные копии оффлайн и тестируйте восстановление.
- Для быстрого отката поддерживайте снимки виртуальной машины или снимки томов диска.
Миграция и совместимость
- При переходе на другую СУБД (MySQL↔Postgres) проверьте совместимость плагинов.
- При обновлении major‑версии PHP заранее протестируйте на staging‑сервере.
- Проверьте совместимость плагинов и custom‑кода с новой версией Craft.
Когда этот подход не подходит (контрпример)
- Если вам нужна мгновенная вертикальная масштабируемость с файловой системой, завязанной на сетевой диск — потребуется отдельная архитектура (например, S3 + CDN + shared storage).
- Если вы используете очень старые расширения PHP, которые несовместимы с PHP 7 — сначала обновите код или используйте контейнеры с нужной версией PHP.
Чек‑листы по ролям
Администратор сервера:
- Проверить наличие обновлений ОС и установить критические патчи.
- Настроить брандмауэр (firewalld/iptables) и закрыть неиспользуемые порты.
- Настроить регулярные бэкапы БД и файлов.
Разработчик / DevOps:
- Настроить staging‑окружение, где тестируются обновления Craft и плагинов.
- Настроить CI/CD (деплой через rsync/Ansible/GitHub Actions).
- Настроить мониторинг процессов PHP‑FPM и Nginx.
Контент‑менеджер:
- Убедиться, что у вас есть админ‑аккаунт и доступ к панели.
- Ознакомиться с полем шаблонов и типами полей в Craft.
Мини‑методология развертывания (шаги)
- Подготовка сервера: обновление системы, базовые пакеты.
- Установка PHP и зависимостей.
- Установка СУБД и создание БД/пользователя.
- Настройка веб‑сервера (Nginx) и PHP‑FPM.
- Установка сертификата и включение HTTPS.
- Установка Composer и деплой проекта.
- Завершение установки через веб‑мастер и проверка работоспособности.
Критерии приёмки
- Страницы сайта возвращают 200 OK по HTTPS.
- Админ‑панель доступна и можно создать запись.
- Логи PHP и Nginx не содержат критических ошибок после тестовых операций.
- Бэкап базы и файлов успешно создаётся и восстанавливается на тестовом окружении.
Отладка — частые проблемы и решения
- Проблема: Blank page / 500 при заходе в админку.
Решение: проверьте логи /var/log/nginx/error.log и php‑fpm лог, включите display_errors на staging. - Проблема: Ошибка подключения к БД.
Решение: проверьте правильность имени хоста, пользователя и пароля; проверьте привилегии и что MariaDB слушает нужный интерфейс. - Проблема: Сертификат не выдан — порт 80 занят.
Решение: временно остановите Nginx или используйте webroot/DNSchallenge.
Советы по производительности
- Используйте кеширование шаблонов Twig и HTTP‑кеширование на уровне Nginx/Reverse proxy.
- Храните большие медиа-файлы вне сервера (S3) и подключайте CDN.
- Настройте оп‑кэши PHP (OPcache) и пул PHP‑FPM для соответствующей нагрузки.
Полезные ссылки
Короткое объявление (для команды, 100–200 слов)
Установлен Craft CMS на сервер CentOS 7 с Nginx и PHP‑FPM. Сайт защищён сертификатом Let’s Encrypt, база данных — MariaDB. Выполнены базовые меры безопасности и подготовлена инструкция по бэкапам и откату. Для релиза в продакшн необходимо дополнительно настроить расширенные политики SSL, мониторинг и регулярные резервные копии.
Социальный предпросмотр (рекомендация)
OG title: Установка Craft CMS на CentOS 7 с Nginx и SSL
OG description: Пошаговый гид по установке Craft CMS с PHP‑FPM, MariaDB и Let’s Encrypt на CentOS 7.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента