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

Установка WonderCMS на CentOS 7 с Nginx и SSL

6 min read DevOps Обновлено 26 Nov 2025
Установка WonderCMS на CentOS 7 с Nginx и SSL
Установка 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

Введение

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 и поменяйте пароль на безопасный.

Веб-интерфейс WonderCMS на Nginx в CentOS

Проверки и отладка

  • Проверить права: 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)

Тестовые случаи и приёмка

  1. Открыть https://example.com — страница загружается, нет PHP‑ошибок.
  2. Попробовать перейти к https://example.com/database.js — должен быть 403.
  3. Зайти в админку, сменить пароль, создать и сохранить страницу — изменения сохраняются.
  4. Проверить автоматическое обновление сертификатов (симуляция): 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 повышает безопасность. Следуйте чек‑листам, проверяйте логи и настройте регулярные бэкапы.

Поделиться: 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 быстро