Установка WonderCMS на Fedora 30 с Nginx и Let's Encrypt
TL;DR
WonderCMS — компактная flat-file CMS на PHP, не требует базы данных и быстрой настройки: распакуйте 5 файлов. В этой инструкции показано, как развернуть WonderCMS на Fedora 30 с Nginx и при желании добавить HTTPS через acme.sh и Let’s Encrypt.
Кому подходит эта инструкция
Коротко: системным администраторам и разработчикам, которые хотят лёгкую CMS без СУБД для небольших сайтов или лендингов. Понятие “flat-file CMS”: хранит данные в текстовом JSON-файле (database.js).
Основная идея установки
- Установить PHP и расширения (curl, mbstring, zip).
- Настроить PHP-FPM и Nginx.
- Скачать WonderCMS и поместить файлы в /var/www/wondercms.
- (Опционально) Получить сертификат от Let’s Encrypt через acme.sh и подключить SSL.
Important: инструкция рассчитана на Fedora 30 и предполагает пользователя с sudo.
Требования
- PHP 7.1 или новее с расширениями curl, mbstring и zip.
- Веб‑сервер: Apache (с mod_rewrite), Nginx или IIS.
Подготовка системы
- Fedora 30.
- Ненулевой пользователь с правами sudo.
Проверка версии Fedora:
cat /etc/fedora-release
# Fedora release 30 (Thirty)Установка часового пояса (пример):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновление системы:
sudo dnf update -yУстановка вспомогательных утилит:
sudo dnf install -y curl wget vim git unzip socat bash-completionШаг 1 — Установка PHP и расширений
Установите PHP и необходимые расширения:
sudo dnf install -y php-cli php-fpm php-common php-curl php-zip php-mbstring php-jsonПроверка загруженных модулей 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 systemctl start php-fpm.service
sudo systemctl enable php-fpm.serviceШаг 2 — Установка 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:
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Создание каталога для хранения сертификатов (в примере — /etc/letsencrypt):
`mkdir -p /etc/letsecnrypt/example.com`
`sudo mkdir -p /etc/letsencrypt/example.com_ecc`(!) В исходном примере есть опечатка в имени директории: letsecnrypt — убедитесь, что вы создаёте /etc/letsencrypt.
Установка сертификатов в /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 автоматически обновляет сертификаты. По умолчанию acme.sh renew запускается через cron или systemd timer; проверьте установленную конфигурацию.
Завершите работу от root и вернитесь к обычному пользователю:
exitШаг 3 — Установка и настройка NGINX
Установка NGINX:
sudo dnf install -y nginxПроверка версии:
nginx -v
# nginx version: nginx/1.16.0Запуск и включение службы:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceПример конфигурации NGINX для WonderCMS (создайте /etc/nginx/conf.d/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 default.d/php.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
}Проверка конфигурации и перезагрузка:
sudo nginx -t
sudo systemctl reload nginx.serviceЗаметки по безопасности и SELinux (Fedora): если SELinux включён, возможно, потребуется применить контексты безопасности к /var/www/wondercms и сессиям PHP. Например:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wondercms(/.*)?"
sudo restorecon -Rv /var/www/wondercmsЕсли semanage не установлен:
sudo dnf install -y policycoreutils-python-utilsТакже убедитесь, что файерволл открывает порты 80 и 443:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reloadШаг 4 — Установка WonderCMS
Создайте корневую директорию сайта:
sudo mkdir -p /var/www/wondercmsСделайте владельцем ваш пользователя для первоначальной загрузки:
sudo chown -R [your_username]:[your_username] /var/www/wondercmsЗамените [your_username] на фактическое имя пользователя.
Перейдите в каталог:
cd /var/www/wondercmsСкачайте и распакуйте 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 для работы веб-сервера:
sudo chown -R nginx:nginx /var/www/wondercmsОтредактируйте конфигурацию PHP-FPM, чтобы процессы запускались от пользователя nginx (файл /etc/php-fpm.d/www.conf):
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginxСоздайте каталог PHP-сессий и установите права:
sudo mkdir -p /var/lib/php/session/ && sudo chown -R nginx:nginx /var/lib/php/session/Перезапустите PHP-FPM:
sudo systemctl restart php-fpm.serviceОткройте сайт в браузере. По умолчанию логин: admin; смените пароль сразу после первого входа.

Проверки и критерии приёмки
- Сайт доступен по HTTP и (если настроено) по HTTPS.
- При обращении к несуществующей странице выполняется переадресация на index.php?page=…
- Файл database.js недоступен по HTTP (вернёт 403).
- PHP-FPM работает от пользователя nginx и имеет доступ к /var/www/wondercms.
- Сертификат успешно установлен и Nginx использует пути /etc/letsencrypt/… .
Резервное копирование и миграция
WonderCMS хранит все данные в одном JSON-файле database.js и статических файлах в каталоге сайта. Для бэкапа достаточно копировать весь каталог /var/www/wondercms и приватные сертификаты (если используются). При переносе на другой хост обычно не требуется дополнительная конфигурация: скопируйте файлы и обновите записи DNS.
Шаблон бэкапа (однострочно для cron):
tar -czf /root/backups/wondercms_$(date +%F).tar.gz /var/www/wondercmsУстранение неисправностей (траблшутинг)
- 500 Internal Server Error: проверьте журналы Nginx (/var/log/nginx/error.log) и PHP-FPM (/var/log/php-fpm/error.log).
- Ошибки прав доступа: убедитесь, что владелец/права на /var/www/wondercms соответствуют пользователю nginx.
- database.js доступен по HTTP: проверьте правило location ~ database.js в конфигурации Nginx.
- Сертификат не применяется: проверьте пути к файлам сертификата и перезагрузите nginx.
Примеры команд просмотра логов:
sudo tail -f /var/log/nginx/error.log
sudo journalctl -u php-fpm -fАльтернативные подходы и изменения
- Apache: если вы предпочитаете Apache, используйте .htaccess и mod_rewrite; WonderCMS совместим с Apache.
- Docker: можно упаковать WonderCMS в контейнер с PHP-FPM и Nginx — удобно для переносимости.
- Лёгкий хостинг: на некоторых shared‑host провайдерах enough to upload files via FTP — без команды sudo.
Безопасность и конфиденциальность
- Меняйте пароль администратора сразу после установки.
- Закрывайте доступ к database.js и другим конфиденциальным файлам через конфигурацию сервера.
- При работе с личными данными убедитесь, что хост соответствует требованиям локального законодательства по защите данных.
Роли и краткие чеклисты
Администратор сервера:
- Установить PHP, Nginx, PHP-FPM.
- Настроить SELinux и файерволл.
- Настроить автоматическое обновление сертификатов.
Владелец сайта / контент-менеджер:
- Войти под admin и сменить пароль.
- Сделать резервную копию database.js перед крупными правками.
Разработчик:
- Провести тестовую сборку в docker.
- Автоматизировать деплой при помощи CI/CD (копирование файлов на сервер).
Быстрый контрольный список для запуска
- Fedora 30, sudo-права.
- PHP >=7.1 и расширения.
- Nginx запущен и слушает 80/443.
- Файлы WonderCMS в /var/www/wondercms.
- Права и владельцы установлены (nginx:nginx).
- database.js не доступен по HTTP.
- (Опционально) сертификаты в /etc/letsencrypt и Nginx использует их.
Когда этот подход не подходит
- Если вам нужна масштабируемая CMS с реляционной базой для большого количества контента и пользователей — лучше смотреть в сторону WordPress, Drupal или других систем на базе СУБД.
- Если на сайте ожидается очень высокий трафик и частые записи, flat-file подход может стать узким местом.
Пример схемы принятия решения: нужен ли SSL?
graph TD
A[Нужен ли доступ по домену извне?] -->|Да| B[Есть публичный домен и порт 80 открыт]
A -->|Нет| E[Можно пропустить SSL]
B --> C[Получить сертификат через acme.sh]
C --> D[Настроить Nginx на использование certs]
D --> F[Готово: HTTPS включён]Полезные файлы и пути (факт-бокс)
- Документ‑рут: /var/www/wondercms
- Конфигурация Nginx: /etc/nginx/conf.d/wondercms.conf
- PHP-FPM сокет: /run/php-fpm/www.sock
- Файл данных WonderCMS: database.js в каталоге сайта
- Certs (пример): /etc/letsencrypt/example.com/
Ссылки
Короткое резюме
WonderCMS — лёгкая flat-file CMS, простая в установке и переносе. На Fedora 30 достаточно установить PHP, Nginx и поместить файлы в /var/www/wondercms. Для HTTPS рекомендуется использовать acme.sh + Let’s Encrypt и настроить автоматическое обновление сертификатов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента