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

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

• 6 min read • DevOps • Обновлено 25 Nov 2025
Установка Craft CMS на Fedora 29 (Nginx, TLS)
Установка Craft CMS на Fedora 29 (Nginx, TLS)

Обложка: логотип Craft и сервер

Craft — это open source CMS на PHP. Она позволяет быстро создавать и управлять визуально привлекательным контентом и строить именно то, что нужно проекту. Craft масштабируется, имеет богатую экосистему плагинов, а исходники размещены на GitHub. В этом руководстве показана установка Craft CMS на чистую Fedora 29 с Nginx и защита сайта сертификатом Let’s Encrypt.

Основные требования

  • PHP 7.0 или новее с расширениями: ctype, cURL, GD или ImageMagick, iconv, JSON, Multibyte String, OpenSSL, PCRE, PDO (MySQL или PostgreSQL), Reflection, SPL, Zip, Intl, DOM.
  • MySQL 5.5+ (InnoDB), MariaDB 5.5+ или PostgreSQL 9.5+.
  • Минимум 256 МБ выделенной памяти для PHP.
  • Минимум 200 МБ свободного дискового пространства.

Важно: требования зависят от объёма контента и плагинов — для продакшна обычно нужно больше памяти и диска.

Короткие определения

  • PHP-FPM: FastCGI Process Manager для PHP — обслуживает PHP-запросы под Nginx.
  • acme.sh: лёгкий оболочечный клиент для получения сертификатов от Let’s Encrypt.

Предварительные условия

  • Fedora 29 как ОС.
  • Непривилегированный пользователь с sudo.

Начальные действия

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

cat /etc/fedora-release  
# Fedora release 29 (Twenty Nine)  

Настройте часовой пояс (замените ‘Region/City’):

timedatectl list-timezones  
sudo timedatectl set-timezone 'Region/City'  

Обновите систему и установите базовые утилиты:

sudo dnf upgrade -y

Установите набор утилит для администрирования:

sudo dnf install -y curl wget vim git sudo unzip socat bash-completion

Важно: на Fedora включён SELinux по умолчанию. После развёртывания веб-контента проверьте контекст файлов и при необходимости назначьте правильные права (см. раздел «Безопасность»).

Шаг 1 — Установка PHP и расширений

Установите PHP и требуемые расширения:

sudo dnf install -y php-cli php-fpm php-common php-curl php-gd php-pecl-imagick php-json php-mbstring php-mysqlnd php-pgsql php-zip php-intl php-xml php-pdo

Проверка загруженных модулей PHP:

php -m  
  
ctype  
curl  
exif  
fileinfo  
. . .  
. . .

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

php --version  
  
# PHP 7.2.16 (cli) (built: Mar  5 2019 11:05:59) ( NTS )  
# Copyright (c) 1997-2018 The PHP Group  
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies  

Отредактируйте глобальные настройки PHP и увеличьте memory_limit до минимум 256 МБ:

Run `sudo vim /etc/php.ini` and set `memory_limit` to at least `256MB`:

memory_limit = 256M


Запустите и включите PHP-FPM:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service


## Шаг 2 — Установка MariaDB и создание базы данных

В этом руководстве используется MariaDB, но альтернативой является PostgreSQL (поддерживается Craft).

Установите MariaDB:

sudo dnf install -y mariadb-server


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

mysql –version


Запустите и включите службу:

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service


Укрепите безопасность и задайте пароль root:

sudo mysql_secure_installation


Следуйте интерактивным подсказкам (удалить анонимных пользователей, запретить удалённый вход root, удалить тестовую БД и перезагрузить таблицы привилегий).

Подключитесь в MySQL/MariaDB и создайте базу данных и пользователя для Craft:

sudo mysql -u root -p

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 — лёгкий оболочечный клиент без внешних зависимостей.

Установка 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


Получение RSA и ECDSA сертификатов (порт 80 должен быть свободен для standalone):

sudo /etc/letsencrypt/acme.sh –issue –standalone –home /etc/letsencrypt -d example.com –keylength 2048

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

Совет: если порт 80 занят (например, Nginx уже запущен), используйте webroot-метод или временно остановите Nginx на момент получения сертификата. Также acme.sh поддерживает автоматическое обновление и установку в хранилище веб-сервера.

## Шаг 4 — Установка и конфигурация Nginx

Craft отлично работает с Nginx. Установите Nginx:

sudo dnf install -y nginx


Проверьте версию и запустите сервис:

nginx -v

sudo systemctl start nginx.service
sudo systemctl enable nginx.service


Создайте конфигурацию для Craft:

sudo vim /etc/nginx/conf.d/craft.conf


Заполните файл следующим конфигом (замените example.com на ваш домен):

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(/|$) {

include default.d/php.conf;  
try_files $uri $uri/ /index.php?$query_string;  
fastcgi_split_path_info ^(.+\.php)(/.+)$;  
fastcgi_pass unix:/run/php-fpm/www.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:

sudo nginx -t

sudo systemctl reload nginx.service


Примечание: для продакшна рекомендуется использовать расширенный и отлаженный конфиг, например из https://github.com/nystudio107/nginx-craft.

## Шаг 5 — Установка Composer

Установите Composer глобально (команды из официального источника):

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 может измениться — проверяйте https://getcomposer.org/download/.

## Шаг 6 — Установка Craft CMS

Создайте директорию для сайта и установите права:

sudo mkdir -p /var/www/craft

cd /var/www/craft


Смените владельца временно на вашего пользователя для установки:

sudo chown -R {your_username}:{your_username} /var/www/craft


Создайте проект с помощью Composer:

composer create-project craftcms/craft .


После установки поменяйте владельца на nginx (или на пользователя, под которым работает ваш веб-сервер):

sudo chown -R nginx:nginx /var/www/craft


Настройте PHP-FPM пул, чтобы процессы работали от пользователя nginx (откройте /etc/php-fpm.d/www.conf и замените user/group с apache на nginx):

sudo vim /etc/php-fpm.d/www.conf


Создайте директорию сессий PHP и назначьте права:

sudo mkdir -p /var/lib/php/session && sudo chown -R nginx:nginx /var/lib/php/session


Перезапустите PHP-FPM:

sudo systemctl restart php-fpm.service


В браузере откройте: http:///index.php?p=admin/install — должна открыться инсталляционная мастера Craft.

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

Открыв URL установки, вы увидите интерфейс мастера. Нажмите Install Craft, примите лицензию, соедините базу данных, создайте пользователя и информацию о сайте. Скриншоты мастера и подписи ниже:

![Начало установки Craft](/files/f53db84b-9761-4306-a337-ab5b1204c3da.png)

![Принятие лицензии Craft](/files/d57fe2e5-31d3-4be1-9688-2a1cc94ec201.png)

![Подключение к базе данных](/files/39a2456c-548c-483d-bf17-20e6ad1cd1fa.png)

![Создание пользователя Craft](/files/e4b3211b-d96a-47c4-b8c1-fc189f2712ea.png)

![Добавление информации о сайте](/files/5e4e59a7-e143-40d2-9b8c-e406a5ddeadf.png)

После установки вы будете перенаправлены в админку Craft:

![Панель управления Craft CMS](/files/30843e65-951e-4261-a4e9-cf5146fe2ee4.png)

## Безопасность и эксплуатация (рекомендации)

Важно: безопасность — непрерывный процесс. Основные практики:

- Установите TLS (HTTPS) и перенаправляйте HTTP на HTTPS.
- Настройте автоматическое обновление пакетов или регулярные проверки обновлений для PHP, Nginx, базы данных и Craft.
- Правильно задайте права файлов: веб-серверу нужны права на запись только к определённым папкам (например, storage, runtime, web/uploads) — избегайте chown -R nginx:nginx для всего кода если это возможно.
- SELinux: при проблемах с доступом назначьте контекст для веб-контента: chcon -R -t httpd_sys_rw_content_t /var/www/craft (проверьте и адаптируйте под политику вашего окружения).
- Отключите показ ошибок PHP в продакшне (display_errors = Off) и логируйте их в файл.
- Резервное копирование: автоматизируйте дампы базы и архивирование файлов сайта.

## Советы по производительности

- Настройте кэширование (Redis, Memcached) для сессий и кеша приложения если нагрузка растёт.
- Увеличьте memory_limit PHP и worker'ы PHP-FPM при высоких нагрузках.
- Используйте gzip, Brotli и статические заголовки кеширования в Nginx для статичных ассетов.

## Альтернативные подходы

- Docker: можно развернуть Craft в контейнере (PHP-FPM + Nginx + БД в отдельных контейнерах) — удобно для изоляции и CI/CD.
- Apache вместо Nginx: Craft работает и на Apache/PHP-FPM, конфигурация отличается правилами mod_rewrite.
- Managed hosting: ряд провайдеров предлагают готовые хосты для Craft с управляемым SSL и бэкапами.

## Роли и чек-листы перед выходом в продакшн

Администратор:
- [ ] Сертификат TLS установлен и в автопродлении настроен.
- [ ] Резервное копирование БД и файлов настроено.
- [ ] Мониторинг и алерты на ошибки сервиса.

Разработчик:
- [ ] Проверены права на файлы (runtime, storage, uploads).
- [ ] Настроены окружения (dev/staging/prod) и переменные окружения.
- [ ] Тесты работоспособности для шаблонов и плагинов выполнены.

Оператор (DevOps):
- [ ] Ограничены сетевые правила (фаерволл открывает только нужные порты).
- [ ] Обновления безопасности для системы автоматизированы или в расписании.
- [ ] Логи централизованы и доступны для анализа.

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

- Сайт доступен по HTTPS и сертификат валиден.
- Авторизация в админке работает и создаётся пользователь администратора.
- Контент создаётся и отображается корректно на фронтенде.
- Бэкап базы успешно восстанавливается на тестовом окружении.

## Тестовые сценарии (базовые)

- Открыть главную страницу — статус 200 и корректный HTML.
- Войти в админку с учётными данными — доступ разрешён.
- Создать запись, опубликовать, увидеть на фронтенде.
- Проверить загрузку файлов (uploads) и доступ к ним.

## Факто-бокс: ключевые параметры

- Минимум PHP: 7.0+
- Минимум MariaDB/MySQL: 5.5+
- Минимум PostgreSQL: 9.5+
- Минимально рекомендуется: 256 МБ RAM для PHP, 200 МБ диска для базового сайта

## Совместимость и миграция

- Craft поддерживает MySQL/MariaDB и PostgreSQL — при миграции убедитесь в совместимости SQL-диалектов и индексных ограничениях.
- При обновлении Craft внимательно читайте релиз-ноты плагинов — они могут требовать изменений PHP или зависимостей.

## Глоссарий (1 строка)

- CMS — система управления контентом; PHP-FPM — менеджер процессов PHP; acme.sh — shell-клиент для Let's Encrypt.

## Заключение

Это руководство даёт пошаговую дорожную карту для развёртывания Craft CMS на Fedora 29 с Nginx и сертификатом от Let's Encrypt через acme.sh. Для продакшна дополните настройки мониторингом, резервными копиями и политиками прав доступа. Для альтернативных сценариев рассмотрите Docker или управляемые хостинги.

## Ссылки

- https://craftcms.com/
- https://github.com/craftcms/cms
- https://github.com/nystudio107/nginx-craft
Поделиться: 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 быстро