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

Установка Fork CMS на Debian 9 с Nginx, MariaDB и SSL

6 min read Веб-разработка Обновлено 26 Nov 2025
Установка Fork CMS на Debian 9 и Nginx
Установка Fork CMS на Debian 9 и Nginx

Интерфейс Fork CMS — стартовая страница или логотип

Fork — это простая в использовании open‑source CMS с набором компонентов Symfony. У неё интуитивный интерфейс, расширяемые приложения (apps) и коллекция тем. В этом руководстве мы пройдём установку Fork CMS на Debian 9 с Nginx, MariaDB и опциональной настройкой SSL через Acme.sh и Let’s Encrypt.

Коротко о плане

  • Подготовка системы и установка зависимостей
  • Установка PHP 7.1+ и нужных расширений
  • Установка и настройка MariaDB, создание базы
  • (Опционально) Получение сертификата через acme.sh/Let’s Encrypt
  • Настройка Nginx для Fork CMS
  • Установка Composer и развертывание Fork
  • Завершение установки через веб‑интерфейс и проверка

Требования

Требования для установки Fork CMS:

  • PHP 7.1 или выше.
  • PHP‑расширения: cURL, libxml, DOM, SimpleXML, SPL, PDO (MySQL driver), mbstring, iconv, GD2, JSON, PCRE, intl.
  • MySQL/MariaDB 5.0+ (рекомендуется MariaDB 10+).
  • Веб‑сервер: Nginx или Apache (для Apache нужны .htaccess, mod_rewrite; mod_expires и mod_deflate желательны).

Важно: Fork использует Symfony‑подобную структуру приложения, поэтому права на файлы и корректная настройка fastcgi/php‑fpm критичны для работы.

Предварительные условия

  • Сервер с Debian 9.
  • Непользователь root с sudo‑правами.

Первые шаги

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

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

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

dpkg-reconfigure tzdata

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

apt update && apt upgrade -y

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

apt install -y curl wget vim git sudo unzip socat bash-completion dirmngr apt-transport-https

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

Debian 9 может не содержать актуальные версии PHP в стандартном репозитории, добавим репозиторий от sury.org:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update

Установите PHP и необходимые расширения (пример для PHP 7.2):

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.2-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-opcache php7.2-intl

Проверьте установленные модули:

php -m

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

php --version
# Пример вывода: PHP 7.2.x (cli) ...

PHP‑FPM обычно запускается и включается в автозагрузку автоматически.

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

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

sudo apt install -y mariadb-server

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

mysql --version

Запустите скрипт безопасной настройки:

sudo mysql_secure_installation

Ответьте на вопросы скрипта, задав надёжный пароль для root и отключив анонимных пользователей.

Подключитесь к серверу баз данных и создайте базу и пользователя для Fork:

sudo mysql -u root -p
mysql> CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'mypassword';
mysql> FLUSH PRIVILEGES;
mysql> exit

Замените dbname, username и mypassword на свои значения.

Шаг 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

Получение 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.

Каталог с сертификатами по умолчанию будет в /home/username/example.com или example.com_ecc.

Создайте целевую директорию для сертификатов и установите их туда (исправлена опечатка в имени каталога):

sudo 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:

exit

Важно: для выдачи сертификата с опцией –standalone порт 80 должен быть свободен. Альтернатива — использование DNS‑валидации или временное отключение nginx.

Шаг 4 — Установка и настройка NGINX

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

sudo apt install -y nginx

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

sudo nginx -v

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

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 / {
        try_files $uri $uri/ @redirects;
    }

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

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_read_timeout 60;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    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;
    }

    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Активируйте сайт и проверьте конфигурацию:

sudo ln -s /etc/nginx/sites-available/fork.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx.service

Примечание: при использовании PHP‑FPM убедитесь, что путь к сокету соответствует установленной версии PHP.

Шаг 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 --version

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

Создайте корень сайта и установите права:

sudo mkdir -p /var/www/fork
sudo chown -R $USER:$USER /var/www/fork

Загрузите Fork через Composer:

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

После установки измените владельца на веб‑пользователя:

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

Скопируйте и отредактируйте файл конфигурации параметров установки (пример):

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

Внесите параметры подключения к базе (имя БД, пользователь, пароль) и сохраните.

Откройте в браузере ваш сайт и пройдите веб‑инсталлятор Fork. Админ‑панель доступна по адресу /private.

Шаг 7 — Завершение установки через интерфейс

Убедитесь, что сервер отвечает требованиям и продолжайте установку через веб‑интерфейс.

Инсталлятор Fork — проверка требований

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

Выбор языка инсталлятора

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

Настройки инсталлятора Fork

Введите параметры базы данных (убедитесь, что база создана заранее).

Детали базы данных

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

Завершение установки Fork CMS

Войдите в админ‑панель:

Страница входа Fork CMS

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

Практические советы и безопасность

Важно: никогда не храните пароли в открытом виде в репозитории. Для продакшен‑среды используйте надёжные секретные хранилища и права доступа.

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

  • Отключите вывод ошибок в PHP в продакшн (display_errors = Off).
  • Обновляйте PHP и пакеты безопасности регулярно.
  • Ограничьте доступ к административной панели по IP или через VPN, если возможно.
  • Настройте регулярное резервное копирование базы и файлов сайта.
  • Используйте HTTP Strict Transport Security (HSTS) и современные наборы шифров в конфигурации SSL.
  • Проверяйте логи nginx и приложения на предмет подозрительной активности.

Когда этот способ не подходит

  • Если вы предпочитаете Apache и .htaccess — можно установить Fork с Apache; потребуется корректная конфигурация VirtualHost и модулей.
  • Если сервер без публичного IP — получение сертификатов через HTTP‑challenge затруднено; используйте DNS‑challenge.
  • Для контейнерной инфраструктуры (Docker, Kubernetes) лучше подготовить контейнерные образы и orchestration‑шаблоны.

Альтернативные подходы

  • Запуск на Apache вместо Nginx с mod_rewrite и корректным AllowOverride.
  • Использование готовых Docker‑образов Fork CMS.
  • Хостинг на PaaS (Platform as a Service) с готовой поддержкой PHP и автоматическими SSL.

Контрольный список (по ролям)

Разработчик:

  • Проверил версии PHP и расширения.
  • Проверил права на файлы и кеши.

Системный администратор:

  • Настроил автоматические бэкапы БД.
  • Настроил мониторинг PHP‑FPM и Nginx.

DevOps/Инфраструктура:

  • Настроил CI для деплоя (если требуется).
  • Обеспечил автоматическое обновление сертификатов.

Ментальные модели и рекомендации

  • Минимально рабочая система: PHP + MariaDB + Nginx + Composer + права www‑data.
  • Разделяйте окружения: dev/staging/production и используйте отдельные базы.
  • Автоматизируйте повторяющиеся действия через скрипты/Ansible.

Короткий глоссарий

  • PHP‑FPM: процессный менеджер PHP, принимает FastCGI‑запросы от веб‑сервера.
  • acme.sh: клиент для автоматического получения сертификатов от Let’s Encrypt.
  • Composer: менеджер зависимостей для PHP.

Пример дерева принятия решения (Mermaid)

flowchart TD
  A[Нужен SSL?] -->|Да| B{Есть публичный IP?}
  A -->|Нет| C[Продолжить без SSL]
  B -->|Да| D[Использовать acme.sh 'HTTP challenge']
  B -->|Нет| E[Использовать DNS challenge или купить сертификат]
  D --> F[Установить certs и настроить nginx]
  E --> F

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

  • Страница сайта доступна по HTTP и/или HTTPS.
  • Админ‑панель /private доступна и позволяет войти под созданным админом.
  • База данных подключается и записи могут быть созданы.
  • Логи не содержат критических ошибок (500, 502, 504).

Быстрые тесты приёмки

  • curl -I https://example.com — ответ 200/301.
  • tail -n 200 /var/log/nginx/error.log — отсутствие фатальных ошибок.
  • Проверка прав: ls -la /var/www/fork — файлы принадлежат www-data.

Ссылки


Краткое резюме:

Fork CMS можно быстро развернуть на Debian 9 с Nginx и MariaDB; дополнительные шаги — установка SSL, настройка прав и мониторинга — повысят надёжность и безопасность. Следуйте контрольным спискам и автоматизируйте то, что повторяется.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как отформатировать внешний диск в macOS
Mac

Как отформатировать внешний диск в macOS

Открыть WordPerfect (.wpd) в Windows 10
Tech

Открыть WordPerfect (.wpd) в Windows 10

Перенос закладок и истории: Chrome → Safari
Браузеры

Перенос закладок и истории: Chrome → Safari

Google Meet в Документах, Таблицах и Презентациях
Коммуникации

Google Meet в Документах, Таблицах и Презентациях

Сброс клавиатуры Samsung — быстрое восстановление
Инструкции

Сброс клавиатуры Samsung — быстрое восстановление

Автоматическое включение режима «Театр» на Apple Watch
Гайд

Автоматическое включение режима «Театр» на Apple Watch