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

Установка WonderCMS на FreeBSD 12 с Nginx и SSL

5 min read Установка Обновлено 23 Nov 2025
Установка WonderCMS на FreeBSD 12 с Nginx и SSL
Установка WonderCMS на FreeBSD 12 с Nginx и SSL

Логотип и общий вид WonderCMS

WonderCMS — бесплатная и открытая flat-file CMS, созданная быть крайне небольшой, лёгкой и простой. Она написана на PHP с использованием jQuery, HTML/CSS и разрабатывается с 2008 года. Первоначальная настройка не требуется: установка сводится к распаковке и загрузке нескольких файлов. Все данные сохраняются в текстовом файле database.js в формате JSON, поэтому WonderCMS не требует реляционной базы данных вроде MySQL.

В этой инструкции показано, как установить и настроить WonderCMS на FreeBSD 12 с использованием Nginx как веб‑сервера и, при желании, как добавить SSL с помощью клиента acme.sh и центра сертификации Let’s Encrypt.

Что вы получите

  • Полное окружение PHP-FPM + Nginx, готовое к запуску WonderCMS.
  • Настройку HTTPS на базе Let’s Encrypt (опционально).
  • Рекомендации по правам доступа, безопасности и восстановлению.

Основные требования

  • PHP 7.1 или новее с расширениями curl, mbstring и zip.
  • Веб‑сервер: Apache (с mod_rewrite), Nginx или IIS.

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

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

Начальные шаги на FreeBSD

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

uname -ro  
# FreeBSD 12.0-RELEASE

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

tzsetup

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

freebsd-update fetch install  
pkg update && pkg upgrade -y

Установите базовые утилиты для администрирования:

pkg install -y sudo vim unzip wget bash socat

Важно: обновления ОС и пакетов повышают безопасность и предотвращают несовместимости при установке PHP/Nginx.

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

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

sudo pkg install -y php72 php72-mbstring php72-curl php72-gd php72-pdo php72-mysqli php72-pdo_mysql php72-json php72-openssl php72-ctype php72-dom php72-hash php72-iconv php72-tokenizer php72-calendar php72-fileinfo php72-session php72-simplexml php72-xml php72-filter

Проверьте загруженные модули PHP:

php -m  
  
ctype  
curl  
exif  
fileinfo  
. . .  
. . .

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

php --version  
  
# PHP 7.3.6 (cli) (built: May 28 2019 09:32:59) ( NTS )  
# Copyright (c) 1997-2018 The PHP Group  
# Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies

Включите и запустите PHP-FPM:

sudo sysrc php_fpm_enable=yes  
sudo service php-fpm start

Примечание: в зависимости от версии PHP пакет может называться php74, php80 и т.д. Подбирайте версию по совместимости с WonderCMS и установленными расширениями.

Шаг 2 — Получение сертификатов через acme.sh (опционально)

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

Установите acme.sh:

sudo pkg install -y acme.sh

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

acme.sh --version  
# v2.8.2

Примеры выдачи сертификатов (замените 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
  • ECC/ECDSA: /home/username/example.com_ecc

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

acme.sh --list

Создайте целевой каталог для копирования сертификатов, например /etc/letsencrypt:

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

Установка/копирование сертификатов в /etc/letsencrypt:

# 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 по умолчанию умеет обновлять сертификаты автоматически. Проверьте крон/таймеры и права доступа к ключам.

После завершения работы выполните exit, если вы работали под root:

exit

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

Установим Nginx и включим сервис:

sudo pkg install -y nginx

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

nginx -v  
# nginx version: nginx/1.16.1

Включаем и запускаем Nginx:

sudo sysrc nginx_enable=yes  
sudo service nginx start

Добавьте конфигурацию сервера для WonderCMS в /usr/local/etc/nginx/wondercms.conf (отредактируйте пример под ваш домен и пути):

server {
  
  listen 80;  
  listen 443 ssl;  
  
  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;

  server_name example.com;
  root /usr/local/www/wondercms;

  index index.php;

  location / {
    if (!-e $request_filename) {
      rewrite ^/(.+)$ /index.php?page=$1 last;
    }
  }
  location ~ database.js {
    return 403;
  }

  location ~ \.php(/|$) {
    fastcgi_index index.php;  
    fastcgi_pass 127.0.0.1:9000;  
    include fastcgi_params;  
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

Подключите файл конфигурации в блок http главного nginx.conf, добавив внутри http {} строку:

include wondercms.conf;

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

sudo nginx -t
sudo service nginx reload

Советы по безопасности Nginx:

  • Ограничьте доступ к файлу database.js через директиву, как в примере (return 403).
  • Включите современные настройки TLS (отключите TLS 1.0/1.1, используйте сильные шифры) — для этого дополните конфигурацию ssl_protocols и ssl_ciphers.
  • Настройте HTTP→HTTPS редирект и HSTS при использовании HTTPS.

Шаг 4 — Установка WonderCMS

Создайте корневой каталог и перейдите в него:

sudo mkdir -p /usr/local/www/wondercms
cd /usr/local/www/wondercms

Скачайте и распакуйте релиз WonderCMS (версия в примере — 2.7.0):

sudo wget https://github.com/robiso/wondercms/releases/download/2.7.0/WonderCMS-2.7.0.zip  
sudo unzip WonderCMS-2.7.0.zip  
sudo rm WonderCMS-2.7.0.zip

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

sudo mv wondercms/* .  
sudo mv wondercms/.* .  
sudo rmdir wondercms

Установите владельца веб‑файлов на nginx (или соответствующий пользователю процесса Nginx):

sudo chown -R nginx:nginx /usr/local/www/wondercms

Перезапустите PHP-FPM:

sudo service php-fpm restart

Откройте сайт в браузере. По умолчанию логин: admin — смените пароль сразу после входа.

Скриншот WonderCMS на FreeBSD с панелью управления

Контрольные действия и тесты

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

  • Сайт загружается по HTTP и/или HTTPS.
  • Страницы CMS открываются, редактирование работает.
  • Файл database.js недоступен напрямую (HTTP 403).
  • SSL‑сертификат корректно установлен и не просрочен (при использовании HTTPS).

Минимальные тесты приемки

  • Открыть https://example.com и проверить, что в адресной строке виден валидный сертификат.
  • Попытаться получить /database.js и убедиться, что сервер отвечает 403.
  • Войти в админку, изменить страницу и проверить, что изменения сохранятся в базе файла.

Резервное копирование и перенос

Поскольку WonderCMS хранит контент в flat‑файле database.js, резервное копирование и перенос просты:

  • Скопируйте весь каталог /usr/local/www/wondercms на новый сервер или в архив.
  • На новом хосте восстановите права владельца и перезапустите php-fpm/nginx.

Важно: при переносе не требуется «переконфигурирование» CMS — файл данных остаётся в формате JSON.

Рекомендации по безопасности и хардениг

  • Ограничьте права на запись: давайте запись только тем процессам, которым это действительно нужно (обычно nginx/php-fpm).
  • Защитите административную панель дополнительной аутентификацией (IP‑фильтр, базовая auth) при необходимости.
  • Регулярно обновляйте PHP, Nginx и плагины WonderCMS.
  • Храните приватные ключи TLS в /etc/letsencrypt с правами 600.

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

Для системного администратора

  • Установить и обновить пакеты FreeBSD.
  • Настроить firewall (pf/iptables).
  • Настроить автоматическое обновление и мониторинг сервисов.

Для веб‑разработчика

  • Проверить совместимость версии PHP.
  • Настроить окружение разработки и способ деплоя (rsync, Git).
  • Проверить обработку форм и сохранение данных.

Для контент‑менеджера

  • Сменить пароль admin.
  • Проверить шаблоны и плагины.
  • Выполнять экспорт/резервное копирование перед крупными правками.

Частые ошибки и способы их решения

  • Ошибка 502/504 при запросах к PHP: проверьте, что PHP-FPM запущен и слушает 127.0.0.1:9000 (или UNIX‑сокет), и что fastcgi_pass соответствует этому адресу.
  • Ошибка 403 при доступе к index.php: проверьте права на файлы и директории и владельца (nginx:nginx).
  • Сертификат не обновляется: проверьте crontab/таймер acme.sh и права на каталог /etc/letsencrypt.

Короткая методология установки (чеклист)

  1. Обновить систему.
  2. Установить PHP и расширения; запустить PHP-FPM.
  3. Установить Nginx; загрузить конфигурацию для WonderCMS.
  4. Опционально: установить acme.sh и получить сертификаты.
  5. Скачать и распаковать WonderCMS, назначить права.
  6. Тестировать сайт, настроить бэкапы и мониторинг.

Факты и советы

  • WonderCMS использует единый файл database.js для хранения контента в JSON.
  • Переносим и резервируем сайт простым копированием каталога.
  • HTTPS увеличивает доверие и безопасность, но требует периодического обновления сертификатов.

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

  • PHP-FPM — процессный менеджер для PHP, обслуживает запросы FastCGI.
  • acme.sh — лёгкий shell‑клиент для получения сертификатов ACME (Let’s Encrypt).
  • Flat‑file CMS — система, которая хранит данные в файловой системе, а не в РСУБД.

Заключение

Установка WonderCMS на FreeBSD 12 с Nginx и опциональным SSL — прямая процедура: подготовка ОС, установка PHP и Nginx, настройка виртуального хоста и запуск CMS. Особое внимание уделяйте правам доступа к файлу database.js, настройкам PHP-FPM и автоматизации обновления сертификатов.

Ссылки

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство