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

Установка WonderCMS на Fedora 30 с Nginx и Let's Encrypt

• 5 min read • Инфраструктура • Обновлено 25 Nov 2025
Установка WonderCMS на Fedora 30 с Nginx
Установка WonderCMS на Fedora 30 с Nginx

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; смените пароль сразу после первого входа.

Скриншот интерфейса WonderCMS


Проверки и критерии приёмки

  • Сайт доступен по 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 и настроить автоматическое обновление сертификатов.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро