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

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

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

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

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

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

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

Поздравляем — 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 и сменить временные пароли.
Модель принятия решений (микро‑методологию)
- Preflight: проверить зависимости (PHP, расширения, БД).
- Install: установить пакеты, Composer, Fork.
- Configure: Nginx, php-fpm, параметры Fork.
- Verify: пройти веб‑инсталлятор и проверить логи.
- 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, обеспечите базовую безопасность и получите рекомендации по дальнейшей эксплуатации.
ВАЖНО: перед запуском в продакшен проверьте параметры безопасности и сделайте резервную копию.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента