Установка PyroCMS на CentOS 8 с NGINX и MariaDB

PyroCMS — модульная система управления содержимым и платформа разработки, построенная на Laravel 5. Она позволяет быстрее создавать качественные сайты и приложения на Laravel.
В этом руководстве вы поэтапно установите PyroCMS на сервер под управлением CentOS 8, используя NGINX как веб-сервер и MariaDB как базу данных. Опционально вы научитесь получать бесплатный SSL-сертификат от Let’s Encrypt через acme.sh и настраивать автоматическое обновление сертификатов.
Кому это подходит
- Системным администраторам и девопс-инженерам, настраивающим веб-сервера под Laravel-приложения.
- Разработчикам, которые хотят быстро развернуть PyroCMS для тестирования или продакшена.
Важно: предполагается, что у вас есть не-root пользователь с sudo-привилегиями и базовые навыки работы с терминалом.
Требования
- Минимум 1 ГБ ОЗУ или настроенный Swap.
- PHP 7.0 или выше с расширениями: PDO, cURL, SQLite, OpenSSL, Mbstring, Fileinfo, Tokenizer, GD.
- MariaDB (или совместимый MySQL сервер).
- NGINX.
Подготовка системы
- Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 8.1.1810 (Core)- Настройте часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'- Обновите пакеты:
sudo dnf update -y- Установите базовые утилиты:
sudo dnf install -y curl wget vim git unzip socat bash-completion epel-releaseВажно: всегда выполняйте обновление перед установкой пакетов, чтобы получить последние исправления безопасности.
Шаг 1 — Установка PHP и необходимых расширений
Установите PHP и расширения, требуемые PyroCMS:
sudo dnf install -y php php-cli php-fpm php-mysqlnd php-curl php-sqlite3 php-mbstring php-gd php-xmlПоказать установленные модули PHP можно командой:
php -m
ctype
curl
exif
fileinfo
. . .Проверка версии PHP:
php --version
# PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )Запустите и включите службу PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceШаг 2 — Установка MariaDB и создание базы данных для PyroCMS
Установите MariaDB:
sudo dnf install -y mariadb-server mariadb-clientПроверьте версию:
mysql --version
# mysql Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1Запустите и включите службу:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.serviceУкрепите безопасность MariaDB и задайте пароль для root:
sudo mysql_secure_installationОтвечайте на вопросы утилиты примерно так:
Enter current password for root (enter for none): Press Enter
Set root password? [Y/n] Y
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 как root и создайте базу и пользователя для PyroCMS (запомните креды):
sudo mysql -u root -p
# Введите пароль
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quitЗамените dbname, username и password на удобные и безопасные значения.
Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
SSL не обязателен, но сильно рекомендован для защиты траффика. Здесь используем acme.sh — лёгкий клиент на shell без внешних зависимостей.
Установите acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail your-email@example.com
source ~/.bashrc
cd ~Проверка версии:
acme.sh --version
# v2.8.6Получите RSA и ECDSA сертификаты для домена:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
Список выданных сертификатов:
acme.sh --listСоздайте директории для хранения сертификатов (используем /etc/letsencrypt):
mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите/скопируйте сертификаты:
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"Сертификаты и ключи будут в соответствующих каталогах. acme.sh по умолчанию настроен на автоматическое продление сертификатов.
После завершения вернитесь в обычного sudo-пользователя:
exitШаг 4 — Установка NGINX и настройка для PyroCMS
Установите NGINX:
sudo dnf install -y nginxПроверка версии:
nginx -v
# nginx version: nginx/1.14.1Запустите и включите сервис:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте конфигурацию для PyroCMS:
sudo vim /etc/nginx/conf.d/pyro.confПример содержимого файла (проверьте пути к сертификатам и domain):
server {
listen 80;
listen 443 ssl;
server_name example.com;
index index.php index.html;
root /var/www/pyro/public;
ssl_certificate /etc/letsencrypt/status.example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com/status.example.com.key;
ssl_certificate /etc/letsencrypt/status.example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/status.example.com_ecc/status.example.com.key;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
}Проверьте синтаксис NGINX и перезагрузите сервис:
sudo nginx -t
sudo systemctl reload nginx.serviceПримечание: в блоке server обратите внимание на пути к сертификатам и ключам. Если вы используете только RSA или только ECC — используйте соответствующие директивы.
Шаг 5 — Установка Composer
Composer — менеджер зависимостей PHP. Установите глобально:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { 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.10.5 2012-04-02 10:52:10Шаг 6 — Установка PyroCMS
Создайте корневую директорию для сайта:
sudo mkdir -p /var/www/pyroИзмените владельца на вашего пользователя (замените your_username):
sudo chown -R your_username:your_username /var/www/pyroПерейдите в директорию и установите PyroCMS через Composer:
cd /var/www/pyro
composer create-project pyrocms/pyrocms .После установки смените владельца на системного пользователя, под которым работает NGINX/ PHP-FPM (в CentOS это nginx):
sudo chown -R nginx:nginx /var/www/pyroОтредактируйте конфигурацию PHP-FPM, чтобы процесс работал от пользователя nginx:
sudo vim /etc/php-fpm.d/www.confУстановите:
user = nginx
group = nginxПерезапустите PHP-FPM:
sudo systemctl restart php-fpm.serviceШаг 7 — Завершение установки через веб-интерфейс
Откройте сайт в браузере по имени домена или IP-адресу и пройдите веб-мастер установки PyroCMS — введите данные базы, администратора и т.д.
После заполнения всех полей установка завершится и сайт будет доступен.
Мини-методология развёртывания (рекомендации)
- Подготовьте резервную копию конфигураций и базы перед изменениями.
- Развертывайте сначала в тестовой среде, затем в production по проверенному плану.
- Используйте отдельного DB-пользователя с минимально необходимыми правами.
- Настройте мониторинг и регулярное обновление пакетов.
Чек-листы по ролям
Разработчик:
- Убедиться, что локальная версия PHP совпадает с серверной.
- Запустить composer install и проверить миграции.
- Настроить .env и секреты через защищённый менеджер.
Системный администратор:
- Настроить брандмауэр (firewalld) и SELinux (при необходимости).
- Настроить автоматическую ротацию логов и резервирование.
- Настроить автоматическое продление сертификатов acme.sh.
DevOps:
- Интегрировать развёртывание в CI/CD.
- Добавить health-check и SLI мониторинг для PHP-FPM и MariaDB.
Устранение неполадок и частые ошибки
Проблема: 502 Bad Gateway при обращении к PHP-странице. Решение: проверьте, что PHP-FPM запущен и fastcgi_pass соответствует сокету (/run/php-fpm/www.sock).
Проблема: ошибка подключения к базе данных. Решение: проверьте credentials в .env, права пользователя DB, и что MariaDB слушает локальные соединения.
Проблема: сертификат не выдан acme.sh. Решение: проверьте, что порт 80 доступен и NGINX не блокирует standalone режим; для веб-валидации используйте webroot режим или временно остановите NGINX.
Безопасность и SSL
- Используйте только проверенные TLS-конфигурации и отключите устаревшие протоколы (SSLv3/TLS1.0/1.1).
- Ограничьте доступ к административной панели по IP или через двухфакторную аутентификацию.
- Регулярно обновляйте PHP, NGINX и пакеты Composer.
- Храните секреты (пароли, ключи) в безопасном хранилище вне репозитория.
Краткий глоссарий
- PHP-FPM — FastCGI Process Manager для PHP.
- acme.sh — лёгкий клиент для получения сертификатов от Let’s Encrypt.
- webroot — метод валидации домена при выдаче сертификата.
- Composer — менеджер зависимостей для PHP.
Когда этот подход не подходит
- Если у вас ограниченный хостинг без доступа к настройкам PHP-FPM или NGINX — используйте совместимый хостинг или контейнеризацию.
- Для крупных проектов с высокой нагрузкой рекомендуется сразу планировать масштабирование (балансировщики нагрузки, кластеры БД).
Короткая инструкция по откату
- Остановите nginx и php-fpm: sudo systemctl stop nginx php-fpm
- Восстановите файлы из резервной копии /var/www/pyro
- Восстановите дамп базы данных
- Запустите сервисы и проверьте логи
Ссылки
Итог
Установка PyroCMS на CentOS 8 включает подготовку системы, установку PHP-FPM, MariaDB, NGINX и Composer, развёртывание приложения и опциональную настройку SSL. Следуйте чек-листам и рекомендациям по безопасности для стабильной и безопасной работы сайта.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента