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

Установка Fork CMS на CentOS 8 с Nginx и MariaDB (и опционально SSL)

• 5 min read • DevOps • Обновлено 23 Nov 2025
Установка Fork CMS на CentOS 8 — Nginx, MariaDB, SSL
Установка Fork CMS на CentOS 8 — Nginx, MariaDB, SSL

Введение

Скриншот начального экрана Fork CMS

Fork — открытая CMS, построенная на компонентах Symfony. У неё удобный интерфейс, расширяемые приложения и коллекция тем. В этом руководстве показано, как установить и настроить Fork CMS на CentOS 8 с Nginx в качестве веб‑сервера, MariaDB как СУБД и опционально — обеспечить HTTPS с помощью acme.sh и Let’s Encrypt.

Важно: перед началом убедитесь, что у вас есть пользователь с sudo‑правами и доступ к серверу.

Требования

  • PHP 7.1 или выше.
  • PHP‑расширения: cURL, libxml, DOM, SimpleXML, SPL, PDO (с драйвером MySQL), mbstring, iconv, GD2, JSON, PCRE, intl.
  • MySQL 5.0+ или MariaDB 5.0+.
  • Nginx или Apache (если Apache — нужен mod_rewrite и, при желании, mod_expires и mod_deflate).

Факт-бокс — ключевые числа:

  • Минимальная версия PHP: 7.1+
  • Минимальная версия MySQL/MariaDB: 5.0+
  • Рекомендуемые права: отдельный UNIX‑пользователь для веб‑файлов, процесс PHP‑FPM под nginx

Предварительные шаги

  • Сервер с CentOS 8.
  • Непривилегированный пользователь с sudo.

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

cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)

Настройте часовой пояс:

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

Обновите пакеты:

sudo yum update -y

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

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

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

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

sudo yum install -y php php-cli php-fpm php-common php-mysqlnd php-curl php-json php-zip php-gd php-xml php-mbstring php-opcache php-intl

Проверка установленных модулей 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

Важно: убедитесь, что php-fpm слушает сокет или порт, который вы настроите в конфигурации Nginx (ниже в fastcgi_pass).

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

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

sudo yum install -y mariadb-server

Проверьте версию MariaDB / MySQL:

mysql --version
# mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1

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

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

Запустите сценарий для повышения безопасности и установки пароля root:

sudo mysql_secure_installation

Ответьте на вопросы (пример):

Would you like to setup VALIDATE PASSWORD plugin? N
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:

sudo mysql -u root -p
# Enter password

Создайте базу данных и пользователя для Fork CMS (замените dbname, username и mypassword на свои значения):

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'mypassword';
mysql> FLUSH PRIVILEGES;

Выйдите из клиентской оболочки:

mysql> exit

Важно: используйте сложный пароль и храните его в безопасном менеджере паролей.

Шаг 3 — Acme.sh и сертификаты Let’s Encrypt (опционально)

HTTPS не обязателен, но настоятельно рекомендуется. Acme.sh — лёгкий клиент для получения сертификатов Let’s Encrypt.

Установка acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Проверка версии:

acme.sh --version
# v2.8.2

Получение сертификатов RSA и ECDSA (пример для example.com):

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Для тестирования используйте флаг –staging.

Сертификаты будут храниться в домашней директории пользователя, например:

  • RSA: /home/username/example.com
  • ECDSA: /home/username/example.com_ecc

Список выданных сертификатов:

acme.sh --list

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

mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Установите сертификаты и настройте автоматическую перезагрузку nginx после обновления:

# 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 по расписанию (обычно до истечения срока действия сертификата).

После завершения работы с root‑пользователем вернитесь к обычному sudo‑пользователю:

exit

Примечание: если на сервере уже работает другой сервис на 80/443, используйте webroot‑метод или временно остановите сервис.

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

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

sudo yum install -y nginx

Проверка версии:

nginx -v
# nginx version: nginx/1.14.1

Создайте файл конфигурации, например /etc/nginx/conf.d/fork.conf, со следующим содержимым (подставьте свои домены и пути):

server {
    listen 80;
    listen 443 ssl;  

    root /var/www/fork;
    index index.php index.html;

    server_name example.com;  

    ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;  
    ssl_certificate_key /etc/letsencrypt/example.com/private.key;  
    ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;  
    ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

    location / {
    # Checks whether the requested url exists as a file $uri or directory $uri/ in the root, else redirect to /index.php.
        try_files $uri $uri/ @redirects;
    }

    location @redirects {
        rewrite ^ /index.php;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_read_timeout 60;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Don't pollute the logs with common requests
    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    # As Fork CMS has the app_root as doc_root, we need to restrict access to a few things for security purposes!
    location ~* ^/(composer\..*|vendor\/.*|Procfile$|\.git\/.*|src\/Console.*|.*\.gitignore|\.editorconfig|\.travis.yml|autoload\.php|bower\.json|phpunit\.xml\.dist|.*\.md|app\/logs\/.*|app\/config\/.*|src\/Frontend\/Cache\/CompiledTemplates.*|src\/Frontend\/Cache\/Locale\/.*\.php|src\/Frontend\/Cache\/Navigation\/.*\.php|src\/Frontend\/Cache\/Search\/.*|src\/Backend\/Cache\/CompiledTemplates\/.*|src\/Backend\/Cache\/Locale\/.*\.php)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

    # Deny access to dot-files.
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Проверьте конфигурацию и перезагрузите Nginx:

sudo nginx -t
sudo systemctl reload nginx.service

Важно: если вы используете unix‑сокет php-fpm (например /run/php-fpm/www.sock), замените fastcgi_pass на соответствующий путь.

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

Установите Composer глобально:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { 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 version 1.9.0 2019-08-02 17:46:47

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

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

sudo mkdir -p /var/www/fork

Смените владельца на своего пользователя (в примере johndoe):

sudo chown -R johndoe:johndoe /var/www/fork

Перейдите в директорию и скачайте Fork через Composer:

cd /var/www/fork
composer create-project forkcms/forkcms .

Затем назначьте владельцем nginx (в CentOS обычно nginx:nginx):

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

Отредактируйте файл конфигурации параметров установки (замените путь при необходимости):

sudo vim /var/www/fork/app/config/parameters_install.yml

Настройте php-fpm на запуск процессов от пользователя nginx. Откройте:

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

И установите user и group в nginx:

user = nginx
group = nginx

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

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

Перезапустите php-fpm:

sudo systemctl restart php-fpm.service

Откройте сайт в браузере и пройдите веб‑установщик Fork. Панель администратора доступна по адресу: https://example.com/private (или http при отсутствии SSL).

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

Fork CMS installer

Выберите язык и нажмите «Next».

Language settings

Настройте параметры сайта и нажмите далее.

Settings

Введите данные базы и нажмите далее (база должна быть создана заранее).

Database settings

Создайте учетную запись администратора и завершите установку.

Create user

После успешной установки вы увидите финальную страницу приложения:

Installation finished

Поздравляем — Fork CMS установлена!

Рекомендации по безопасности и эксплуатация

  • Отключите доступ к директориям и файлам, которые не должны быть доступны извне (см. конфигурацию Nginx выше).
  • Регулярно обновляйте систему, PHP и зависимости через Composer.
  • Делайте резервные копии базы данных и файлов перед обновлениями.
  • Минимизируйте доступ root; используйте sudo‑пользователя.
  • Ограничьте доступ к административной панели по IP (при возможности) или включите 2FA в самом Fork.

Безопасность — быстрый чек‑лист:

  • SSL включён и сертификат действителен.
  • Права на файловую систему корректны: файлы — 644, папки — 755, владельцем — nginx.
  • Конфигурации бэкапа заданы и работают.
  • Регулярные обновления настроены.

Роль‑ориентированные чек‑листы

Администратор сервера:

  • Установить и настроить Nginx, PHP‑FPM, MariaDB.
  • Настроить автоматическое обновление сертификатов acme.sh.
  • Настроить бэкапы и мониторинг.

Разработчик / интегратор:

  • Установить проект через Composer.
  • Проверить права на файлы и api‑конфигурации.
  • Настроить окружения (dev/stage/prod) и переменные окружения.

Контент‑менеджер:

  • Пройти веб‑инсталлятор Fork и создать первую страницу.
  • Проверить доступ к /private и сменить временные пароли.

Модель принятия решений (микро‑методологию)

  1. Preflight: проверить зависимости (PHP, расширения, БД).
  2. Install: установить пакеты, Composer, Fork.
  3. Configure: Nginx, php-fpm, параметры Fork.
  4. Verify: пройти веб‑инсталлятор и проверить логи.
  5. Harden: ограничить доступ, включить SSL, бэкапы.

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

  • Веб‑сайт возвращает HTTP 200 для главной страницы.
  • Админ‑панель доступна по /private после установки и создания пользователя.
  • Доступ к чувствительным файлам (vendor, .git) запрещён.
  • PHP‑FPM и Nginx работают под не‑root пользователем.

Советы по отладке

  • Просмотрите логи Nginx: /var/log/nginx/error.log
  • Логи PHP‑FPM: /var/log/php-fpm/www-error.log (путь зависит от конфигурации)
  • Логи MariaDB: /var/log/mysqld.log

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

  • Если вы переносите с другой ОС, проверьте пути к сокетам php‑fpm и права пользователя.
  • При обновлении Fork используйте Composer и держите резервные копии базы.

Ссылки

Итог: следуя этому руководству, вы установите Fork CMS на CentOS 8 с Nginx и MariaDB, обеспечите базовую безопасность и получите рекомендации по дальнейшей эксплуатации.

ВАЖНО: перед запуском в продакшен проверьте параметры безопасности и сделайте резервную копию.

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