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

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:

## Безопасность и эксплуатация (рекомендации)
Важно: безопасность — непрерывный процесс. Основные практики:
- Установите 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 Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента