Установка WonderCMS на Debian 9 с Nginx и Let's Encrypt

TL;DR
Краткое руководство по быстрой установке WonderCMS на Debian 9 с веб‑сервером Nginx и опциональным HTTPS через acme.sh и Let’s Encrypt. Покрыты требования, команды установки PHP/FPM, пример конфигурации Nginx, перенос файлов, базовые меры безопасности и проверочный чек‑лист.
WonderCMS — лёгкая открытая flat‑file CMS на PHP, удобная для простых сайтов и блогов. Она не требует реляционной СУБД: все данные хранятся в одном текстовом файле database.js (JSON). В этом руководстве показана установка на Debian 9 с Nginx и опцией защиты TLS через acme.sh и Let’s Encrypt.
Ключевые требования
- PHP 7.1+ с расширениями curl, mbstring и zip. Рекомендуется PHP 7.2 для Debian 9.
- Веб‑сервер: Nginx (в примере), также поддерживаются Apache (с mod_rewrite) и IIS.
Предварительные условия
- Сервер с Debian 9 (stretch).
- Непривилегированный пользователь с sudo.
Первые шаги (обновление и базовые утилиты)
Проверьте версию Debian:
lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)Настройте часовой пояс:
sudo dpkg-reconfigure tzdataОбновите пакеты и установите вспомогательные утилиты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git unzip socat bash-completion apt-transport-httpsВажно: регулярные обновления закрывают известные уязвимости и поддерживают совместимость пакетов.
Шаг 1 — Установка PHP и необходимых расширений
Добавьте репозиторий Ondřej Surý для современных версий PHP в Debian 9 и установите PHP 7.2 с FPM:
sudo apt install apt-transport-https lsb-release ca-certificates
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 и расширения:
sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-curl php7.2-zip php7.2-mbstringУбедитесь, что нужные модули загружены:
php -m
ctype
curl
exif
fileinfo
mbstring
zip
...Проверьте версию PHP:
php --version
# Пример вывода:
# PHP 7.2.x (cli) (built: ...)На Debian 9 systemd автоматически запускает php7.2-fpm; при необходимости проверьте статус:
systemctl status php7.2-fpmШаг 2 — Установка acme.sh и получение сертификата (опционально)
HTTPS не обязателен, но рекомендуется. acme.sh — лёгкий клиент на shell для получения сертификатов от 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.0Получение сертификатов (пример для example.com):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA (ECC)
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестовой выдачи используйте флаг –staging.
Файлы с сертификатами будут в домашней папке пользователя, например:
- /home/username/example.com
- /home/username/example.com_ecc
Скопируйте сертификаты в /etc/letsencrypt (или другой каталог для удобства управления):
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
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Шаг 3 — Установка и настройка Nginx
Установите Nginx:
sudo apt install -y nginxПроверьте версию:
sudo nginx -v
# nginx version: nginx/1.10.3 (пример)Создайте файл конфигурации сайта: /etc/nginx/sites-available/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 /var/www/wondercms;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php?page=$1 last;
}
}
location ~ database.js {
return 403;
}
location ~ \.php(/|$) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}Активируйте конфигурацию и проверьте синтаксис:
sudo ln -s /etc/nginx/sites-available/wondercms.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx.serviceСоветы:
- Если вы используете другой сокет php-fpm (напр., php7.2-fpm.sock), скорректируйте путь в fastcgi_pass.
- Проверяйте логи: /var/log/nginx/error.log и /var/log/nginx/access.log.
Шаг 4 — Установка WonderCMS
Создайте корневую директорию и назначьте владельца:
sudo mkdir -p /var/www/wondercms
sudo chown -R your_username:your_username /var/www/wondercms
cd /var/www/wondercmsСкачайте и распакуйте WonderCMS (пример для версии 2.7.0):
wget https://github.com/robiso/wondercms/releases/download/2.7.0/WonderCMS-2.7.0.zip
unzip WonderCMS-2.7.0.zip
rm WonderCMS-2.7.0.zipПеренесите файлы в корень и удалите временную папку. Безопасный вариант с rsync:
rsync -av wondercms/ ./
rm -rf wondercmsНазначьте владельца веб‑процесса:
sudo chown -R www-data:www-data /var/www/wondercmsОткройте сайт в браузере, выполните вход: по умолчанию логин admin и смените пароль.

Безопасность и эксплуатация (рекомендации)
- Доступ к файлу database.js должен быть запрещён в конфигурации веб‑сервера (как в примере Nginx).
- Ограничьте права: файлы 644, директории 755; каталогу с данными — владелец www-data.
- Резервные копии: копируйте /var/www/wondercms/database.js и конфигурацию Nginx. Частота: еженедельно или перед обновлениями.
- Firewall: откройте порты 80 и 443, закройте лишние.
- Обновления: регулярно обновляйте Debian, PHP и саму CMS (скачивайте релизы из официального репозитория).
- Логи и мониторинг: настраивайте ротацию логов и оповещения по ошибкам 5xx.
Критерии приёмки
- Сайт открывается по HTTPS (если включён) без ошибок сертификата.
- Страницы корректно отображаются, ссылки работают, административная панель доступна после входа.
- Файл database.js недоступен извне (HTTP 403).
- Nginx и php-fpm запускаются и не генерируют ошибок в логах.
Чек‑листы
Чек‑лист администратора:
- PHP и расширения установлены
- Nginx конфиг проверен (nginx -t)
- SSL сертификат установлен и автоматическое обновление настроено
- Права файлов проверены
- Настроены резервные копии
Чек‑лист разработчика/интегратора:
- Переписанные (rewrite) URL корректно работают
- Формы и сохранение контента работают (проверить админку)
- Скрипты и CSS загружаются без ошибок 4xx/5xx
Устранение неполадок (быстрые решения)
- 502 Bad Gateway: проверьте статус php7.2-fpm и путь сокета в fastcgi_pass.
- 403 при обращении к сайту: проверьте права на /var/www/wondercms и блоки location в Nginx.
- SSL ошибки: убедитесь, что в Nginx указаны корректные пути к fullchain.pem и private.key и файлы читаемы нужным пользователем.
- Неправильные перенаправления: проверьте правило rewrite и переменную $request_filename.
Откат (rollback) — кратко
- Восстановите резервную копию /var/www/wondercms/database.js.
- Восстановите конфигурацию Nginx из сохранённой копии и выполните nginx -t; systemctl reload nginx.
- При проблемах с PHP верните предыдущую версию пакета через apt (если хранится в кэше) или восстановите образ VM.
Быстрые подсказки и соответствие версий
- Целевая платформа: Debian 9 (stretch)
- Рекомендуемая версия PHP: 7.2
- Веб‑сервер: Nginx 1.10+ (возможны отличия в старых версиях)
Полезные ссылки
Итог
WonderCMS подходит для лёгких сайтов: установка занимает несколько шагов — подготовка системы, PHP/FPM, настройка Nginx, развёртывание файлов и (опционально) получение TLS‑сертификата через acme.sh. После установки выполните базовую безопасность: права, резервные копии и мониторинг.
Важно: перед применением на production протестируйте конфигурацию в staging‑окружении и создайте резервные копии.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента