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

Установка Craft CMS на CentOS 7 с Nginx и Let's Encrypt SSL

• 7 min read • DevOps • Обновлено 18 Nov 2025
Установка Craft CMS на CentOS 7 с Nginx и SSL
Установка Craft CMS на CentOS 7 с Nginx и 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:///index.php?p=admin/install

Если всё настроено правильно, появится мастер установки Craft.

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

После перехода по URL установки вы увидите мастер. Нажмите “Install Craft”.

Окно начала установки Craft

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

Окно принятия лицензии Craft

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

Подключение к базе данных Craft

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

Создание пользователя Craft

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

Ввод информации о сайте Craft

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

Панель управления Craft CMS

Практические рекомендации и дополнительные материалы

Факты и числа

  • Рекомендуемая память для 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.

Мини‑методология развертывания (шаги)

  1. Подготовка сервера: обновление системы, базовые пакеты.
  2. Установка PHP и зависимостей.
  3. Установка СУБД и создание БД/пользователя.
  4. Настройка веб‑сервера (Nginx) и PHP‑FPM.
  5. Установка сертификата и включение HTTPS.
  6. Установка Composer и деплой проекта.
  7. Завершение установки через веб‑мастер и проверка работоспособности.

Критерии приёмки

  • Страницы сайта возвращают 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.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро