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

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

• 5 min read • DevOps • Обновлено 17 Nov 2025
Установка PyroCMS на CentOS 8 с NGINX и MariaDB
Установка PyroCMS на CentOS 8 с NGINX и MariaDB

PyroCMS: экран приветствия и логотип

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.

Подготовка системы

  1. Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 8.1.1810 (Core)
  1. Настройте часовой пояс:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
  1. Обновите пакеты:
sudo dnf update -y
  1. Установите базовые утилиты:
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 — введите данные базы, администратора и т.д.

Экран принятия лицензии 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 — используйте совместимый хостинг или контейнеризацию.
  • Для крупных проектов с высокой нагрузкой рекомендуется сразу планировать масштабирование (балансировщики нагрузки, кластеры БД).

Короткая инструкция по откату

  1. Остановите nginx и php-fpm: sudo systemctl stop nginx php-fpm
  2. Восстановите файлы из резервной копии /var/www/pyro
  3. Восстановите дамп базы данных
  4. Запустите сервисы и проверьте логи

Ссылки

Итог

Установка PyroCMS на CentOS 8 включает подготовку системы, установку PHP-FPM, MariaDB, NGINX и Composer, развёртывание приложения и опциональную настройку SSL. Следуйте чек-листам и рекомендациям по безопасности для стабильной и безопасной работы сайта.

Поделиться: 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 быстро