Установка WonderCMS на CentOS 7 с Nginx и SSL
TL;DR
WonderCMS — лёгкая flat-file CMS на PHP, которая не требует базы данных. В этой пошаговой инструкции показано, как развернуть WonderCMS на CentOS 7 с Nginx и PHP-FPM, а также опционально получить бесплатный SSL через acme.sh и Let’s Encrypt. Включены проверки, роли, критерии приёмки и распространённые ошибки.

Введение
WonderCMS — бесплатная и открытая flat-file CMS, спроектированная быть максимально компактной, лёгкой и простой. Написана с использованием PHP, jQuery, HTML/CSS и развивается с 2008 года. Установка минимальна — распаковать и загрузить файлы. Все данные хранятся в текстовом JSON-файле database.js, поэтому никакой MySQL не требуется.
В этой инструкции рассмотрим установку на CentOS 7, настройку Nginx и PHP-FPM, а также опциональное получение TLS-сертификата с помощью acme.sh и Let’s Encrypt.
Ключевые варианты использования (поисковый интент)
- Быстрая установка WonderCMS на CentOS 7
- Настройка Nginx и PHP-FPM для flat-file CMS
- Добавление SSL через acme.sh и Let’s Encrypt
Требования
- PHP 7.1 или новее с расширениями curl, mbstring и zip
- Веб‑сервер: Apache с включённым mod_rewrite, или Nginx, или IIS
- Доступный non-root пользователь с sudo
Необходимые условия перед началом
- Сервер с CentOS 7
- Пользователь с sudo-привилегиями
- (Опционально) доменное имя, указывающее на сервер — требуется для получения валидного Let’s Encrypt сертификата
Первичные шаги (обновление и базовая подготовка)
Проверьте версию CentOS:
cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)Установите временную зону (замените ‘Region/City’ на ваш регион):
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Важно: обновление системы и установка epel-release позволяют подключать дополнительные репозитории и устанавливать современные пакеты.
Шаг 1 — Установка PHP и расширений
Подключите репозиторий Webtatic:
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmУстановите PHP и требуемые расширения (пример для php72w):
sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-zip php72w-mbstring php72w-jsonПроверьте установленные модули PHP:
php -m
ctype
curl
exif
fileinfo
. . .
. . .Проверьте версию PHP:
php --versionЗапустите и включите службу PHP-FPM:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceЕсли у вас другой пакетный набор или версия PHP, подстройте имена пакетов под ваш репозиторий.
Шаг 2 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
Защитить сайт через HTTPS рекомендуется. Для получения TLS-сертификата мы используем acme.sh — лёгкий shell-клиент без зависимостей.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail your-email@example.com
source ~/.bashrc
cd ~Проверьте версию acme.sh:
acme.sh --version
# v2.8.0Получите сертификаты 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Создайте директории для хранения сертификатов (мы используем /etc/letsencrypt):
mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите и скопируйте сертификаты в /etc/letsencrypt и задайте команду перезагрузки 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 режима acme.sh должен иметь доступ к 80 порту на момент проверки. Если Nginx уже занят портом 80, останавливайте Nginx временно или используйте DNS/HTTP-01 методы.
Шаг 3 — Установка и настройка Nginx
Установите Nginx:
sudo yum install -y nginxПроверьте версию nginx:
nginx -v
# nginx version: nginx/1.12.2Запустите и включите службу Nginx:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте файл конфигурации /etc/nginx/conf.d/wondercms.conf и добавьте следующий блок (замените example.com и пути к сертификатам при необходимости):
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/wondercms;
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;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php?page=$1 last;
}
}
location ~ database.js {
return 403;
}
location ~ \.php(/|$) {
try_files $uri =404;
fastcgi_pass http://127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Проверьте конфигурацию Nginx и примените её:
sudo nginx -t
sudo systemctl reload nginx.serviceСовет по безопасности: ограничьте доступ к каталогу с файлами и запретите прямой доступ к database.js (в конфиге выше уже стоит правило return 403).
Шаг 4 — Установка WonderCMS
Создайте корневую папку для сайта и задайте владельца:
sudo mkdir -p /var/www/wondercmsЗамените [your_username] на имя пользователя, под которым вы работаете, чтобы было удобнее управлять файлами до передачи nginx:
sudo chown -R [your_username]:[your_username] /var/www/wondercmsПерейдите в директорию и загрузите релиз WonderCMS:
cd /var/www/wondercms
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Переместите файлы в корень документа:
mv wondercms/* . && mv wondercms/.* .
rmdir wondercmsПропишите корректного владельца рабочего процесса веб-сервера (nginx). В CentOS обычно используется nginx:nginx:
sudo chown -R nginx:nginx /var/www/wondercmsНастройте PHP-FPM pool (/etc/php-fpm.d/www.conf) — укажите пользователя и группу nginx:
sudo vim /etc/php-fpm.d/www.confУбедитесь, что строки выглядят так:
user = nginx
group = nginxЕсли строки закомментированы, уберите #. Затем перезапустите PHP-FPM:
sudo systemctl restart php-fpm.serviceОткройте сайт в браузере, выполните первичный вход с паролем admin и поменяйте пароль на безопасный.

Проверки и отладка
- Проверить права: ls -la /var/www/wondercms — файлы должны принадлежать nginx:nginx
- Логи Nginx: sudo tail -f /var/log/nginx/error.log
- Логи PHP-FPM: sudo journalctl -u php-fpm -n 200
- Проверить доступность database.js через браузер — должно возвращаться 403
- Проверить SSL: openssl s_client -connect example.com:443 -servername example.com
Частые ошибки и как их исправить
- Проблема: 502 Bad Gateway — чаще всего PHP-FPM слушает другой сокет/порт. Проверьте fastcgi_pass и настройки php-fpm (listen = 127.0.0.1:9000 или unix:/run/php-fpm/www.sock).
- Проблема: Ошибка прав записи при сохранении — проверьте владельца и права на папку /var/www/wondercms.
- Проблема: Невозможно получить сертификат — убедитесь, что порт 80 открыт и не занят другим процессом во время выполнения acme.sh в standalone режиме.
Рольовые чек‑листы
Администратор сервера:
- Обновить систему и установить базовые утилиты
- Настроить репозиторий для PHP
- Установить и запустить Nginx и PHP-FPM
Веб‑администратор сайта:
- Скачать и распаковать WonderCMS
- Настроить права доступа и владельца nginx:nginx
- Проверить работу сайта и сменить пароль по умолчанию
DevOps/инфраструктура:
- Настроить автоматическое обновление сертификатов acme.sh
- Настроить бэкапы каталога /var/www/wondercms и конфигов nginx
Критерии приёмки
- Сайт доступен по http(s) и возвращает корректную страницу WonderCMS
- Файл database.js недоступен по прямой ссылке (403)
- Нginx и PHP-FPM запущены и работают без ошибок в логах
- SSL-сертификат действителен и корректно настроен (при наличии TLS)
Тестовые случаи и приёмка
- Открыть https://example.com — страница загружается, нет PHP‑ошибок.
- Попробовать перейти к https://example.com/database.js — должен быть 403.
- Зайти в админку, сменить пароль, создать и сохранить страницу — изменения сохраняются.
- Проверить автоматическое обновление сертификатов (симуляция): acme.sh –renew –force -d example.com
Безопасность и заметки по приватности
- Хранение данных в flat-file (database.js) упрощает бэкап, но требует строгих прав доступа. Никогда не давайте доступ на чтение к этому файлу извне.
- Для соответствия требованиям GDPR/локальному законодательству рассмотрите: ограничение хранения личных данных, политику retention и механизмы удаления данных.
- Регулярно проверяйте обновления WonderCMS и применяйте патчи.
Альтернативные подходы
- Использовать Apache вместо Nginx, если вы предпочитаете mod_rewrite и .htaccess
- Развернуть Docker-окружение с готовым образом для упрощения миграций
- Хранить бэкапы database.js в зашифрованном хранилище
Модель зрелости развёртывания (рекомендации)
- Уровень 1 (тестовый): локальный сервер, no SSL, single admin
- Уровень 2 (прод): публичный сервер с Nginx, SSL, резервными копиями
- Уровень 3 (критически важный): мониторинг, автоматическое восстановление, имитация нагрузочного тестирования
Короткая заметка для анонса (100–200 слов)
WonderCMS — компактная CMS без базы данных, идеально подходит для небольших сайтов и документов. В этом руководстве показано, как быстро развернуть WonderCMS на CentOS 7 с Nginx и PHP-FPM, а также как добавить бесплатный SSL через acme.sh и Let’s Encrypt. Вы получите готовую конфигурацию Nginx, инструкции по правам доступа, проверки работоспособности и рекомендации по безопасности. Также включены чек-листы для ролей, критерии приёмки и советы по отладке.
Ссылки
Вывод
WonderCMS даёт простой путь к созданию лёгкого сайта без СУБД. На CentOS 7 установка занимает минимум шагов: PHP-FPM, Nginx, копирование файлов и настройка прав. Опциональное подключение Let’s Encrypt повышает безопасность. Следуйте чек‑листам, проверяйте логи и настройте регулярные бэкапы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента