В этой главе подробно, шаг за шагом, рассматривается процесс установки Seditio CMS на хостинг или локальный сервер, правильная настройка прав на файлы и каталоги, разбор ключевых параметров конфигурационного файла, настройка веб-серверов Apache и Nginx для работы ЧПУ, а также алгоритм переноса сайта на другой сервер.
2.1. Пошаговое руководство по установке CMS с нуля
Веб-установщик Seditio CMS гибок и функционален: он не просто проверяет требования и импортирует базу данных, но и позволяет на этапе установки выбрать необходимые модули и плагины, проверяя их зависимости. Весь процесс состоит из 7 последовательных шагов.
Шаг 1. Подготовка файлов движка
- Загрузите архив с дистрибутивом Seditio на ваш компьютер и распакуйте его.
- Подключитесь к вашему серверу/хостингу по FTP, SFTP или через файловый менеджер панели управления (например, cPanel или ISPmanager).
- Закачайте все папки и файлы из распакованного архива в корневую директорию вашего сайта (обычно это папка
public_html,wwwилиhttpdocs).Примечание: Если вы хотите установить CMS в подпапку (например,
mysite.com/blog/), создайте эту подпапку и закачайте файлы туда.
Шаг 2. Подготовка пустой базы данных MySQL
Для работы Seditio нужна база данных MySQL (или MariaDB):
- Зайдите в панель управления вашим хостингом.
- Перейдите в раздел «Базы данных MySQL» (MySQL Databases).
- Создайте новую базу данных (например,
seditio_db). - Создайте нового пользователя базы данных (например,
seditio_user) и сгенерируйте для него надежный пароль. - Обязательно свяжите созданного пользователя с базой данных, предоставив ему все привилегии (ALL PRIVILEGES). Запишите или скопируйте имя хоста (обычно это
localhost), имя базы данных, имя пользователя и пароль — они понадобятся нам дальше.
Шаг 3. Прохождение веб-установщика (7 этапов)
Этап 1: Выбор языка инсталляции
Откройте браузер и перейдите по адресу: http://ваш_домен/install (или http://ваш_домен/index.php?module=install). На первом приветственном экране выберите язык установки (например, русский (ru) или английский (en)). Выбранный язык будет сохранен в сессии инсталлятора, и все последующие шаги будут переведены на него.
Этап 2: Проверка требований сервера и прав на запись
Инсталлятор автоматически проанализирует ваше серверное окружение:
- Совместимость версии PHP (от PHP 5.6 до 8.x).
- Наличие критически важных расширений (таких как
mysqli,GDи др.). - Доступность папки
/datas/и её подпапок для записи (CHMOD 777или775). Если какие-то папки будут помечены красным цветом, вам потребуется настроить на них права (см. раздел 2.2), после чего обновить страницу инсталлятора.
Этап 3: Ввод конфигурационных данных (БД и Администратор)
На этом шаге заполняется единая форма, разделенная на два блока:
- Параметры подключения к БД:
- Сервер БД (Database host): обычно
localhost. - Пользователь и Пароль БД: данные созданного пользователя MySQL.
- Имя БД: название базы данных.
- Префикс таблиц (Table prefix): по умолчанию
sed_. Позволяет установить несколько сайтов в одну базу данных. - Очистить БД перед импортом (Clear database before import): галочка, позволяющая автоматически сбросить (
DROP TABLE) все старые таблицы в БД, если они там были.Как определяются MySQL Engine и кодировка? В веб-интерфейсе инсталлятора нет ручного выбора движка или кодировки таблиц — система делает это полностью автоматически. Инсталлятор считывает версию MySQL на сервере: если версия MySQL 5.6 и выше, автоматически назначается современный движок
InnoDB, а для старых систем —MyISAM. В качестве кодировки по умолчанию применяетсяutf8mb4(сопоставлениеutf8mb4_unicode_ci). Сгенерированные значения автоматически записываются в создаваемый файл/datas/config.php.
- Сервер БД (Database host): обычно
- Данные учетной записи администратора:
- Имя администратора (например,
admin). - Пароль (сгенерируйте надежный пароль).
- E-mail администратора (для восстановления пароля и системных писем).
- Страна (выбор из списка).
- Скин по умолчанию и Язык сайта по умолчанию.
- Имя администратора (например,
Этап 4: Генерация таблиц и файла config.php
После отправки формы инсталлятор выполнит следующие действия:
- Проверит соединение с БД (в случае ошибки вернет к Этапу 3 с выводом ошибки подключения).
- Сгенерирует файл
/datas/config.php, запишет в него параметры и попытается установить права только на чтение (CHMOD 0444). - Импортирует базовую схему данных в MySQL, создаст системные таблицы и запишет настройки по умолчанию.
- Создаст первого пользователя-администратора (с максимальными правами, определяемыми группой ID = 5).
- Выведет кнопку «Продолжить установку модулей».
Этап 5: Выбор и установка модулей
Инсталлятор сканирует папку /modules/ на наличие файлов .setup.php и выводит список всех доступных в дистрибутиве модулей (форумы, страницы, галерея и т.д.):
- Модули, помеченные как системные (
Lock_module = 1в метаданных setup-файла), устанавливаются в обязательном порядке и не могут быть отключены пользователем. - Для остальных модулей можно снять галочки установки.
- При нажатии кнопки «Установить модули» инсталлятор автоматически анализирует зависимости (
Requires) модулей. Например, если модульgalleryтребует наличия модуляpfs, то инсталлятор отсортирует их так, чтобыpfsустановился первым. - Выводится детальный лог установки модулей.
Этап 6: Выбор и установка плагинов
Инсталлятор сканирует папку /plugins/ и выводит список плагинов с их описаниями:
- По умолчанию выбраны все плагины, за исключением тех, у которых в setup-файле стоит признак пропуска (
Installer_skip). - Для каждого выбранного плагина инсталлятор проверяет зависимость от модулей (
Requires_modulesв метаданных setup-файла). Если плагину для работы необходим модуль, который вы решили не устанавливать на Этапе 5, инсталлятор автоматически пропустит этот плагин и выведет предупреждение, что плагин не может быть установлен из-за отсутствия нужного модуля. - После успешной установки выбранных плагинов генерируется итоговый кэш ЧПУ (
sed_urls_generate()) и инициализируется базовая статистика сайта.
Этап 7: Завершение и переход на сайт
Инсталлятор выводит отчет об успешном завершении установки всех компонентов и кнопку «Перейти на главную страницу».
КРИТИЧЕСКИ ВАЖНО: После окончания установки обязательно удалите папку
/system/install/с сервера. Оставленная папка инсталлятора представляет угрозу безопасности, так как злоумышленник может запустить установку повторно и скомпрометировать сайт.
2.2. Настройка прав доступа на файлы и директории (Права chmod)
Для того чтобы Seditio могла сохранять настройки конфигурации, кэшировать данные для ускорения работы, а также позволять вам и вашим пользователям загружать аватары, фотографии и файлы, сервер должен иметь права на запись в определенные папки.
В операционных системах семейства Linux/Unix права настраиваются с помощью команды CHMOD.
Какие права и куда нужно установить?
При установке или подготовке к ней вам необходимо выставить права на запись для следующих директорий и файлов:
Директория
/datas/и всё её содержимое: Это основное хранилище динамических файлов вашего сайта. Права на запись должны быть рекурсивными (то есть применяться ко всем подпапкам):/datas/avatars/— загружаемые аватары пользователей./datas/defaultav/— дефолтные аватары./datas/photos/— фотографии галереи./datas/thumbs/— миниатюры изображений./datas/resized/— автоматически масштабированные картинки./datas/signatures/— подписи пользователей для форума./datas/users/— персональные файлы пользователей (PFS)./datas/cache/— кэш системы (если папки нет, создайте её).
Рекомендуемые права:
777(или775в зависимости от настроек безопасности вашего хостинга, когда PHP работает от имени владельца веб-сервера).Файл конфигурации
/datas/config.php: Во время установки инсталлятор должен записать настройки в этот файл. Если файла еще нет, инсталлятор создаст его самостоятельно (при наличии права на запись в папку/datas/).Во время установки: Выставьте права
666(или664) на файлconfig.php, если он уже создан пустой.После установки: В целях безопасности рекомендуется ограничить права на файл
config.php, сделав его доступным только для чтения —444(или644), чтобы никто, кроме владельца, не мог его перезаписать.
Как изменить права доступа?
- Через FTP-клиент (например, FileZilla): кликните правой кнопкой мыши по нужной папке/файлу на сервере, выберите пункт «Права доступа к файлу...» (File Permissions), введите числовое значение (например,
777) и отметьте галочку «Перенаправить в подкаталоги» (Recurse into subdirectories) -> «Применить только к каталогам». - Через панель хостинга: воспользуйтесь встроенным файловым менеджером, выделите нужную папку и нажмите кнопку «Права» (Permissions/Chmod).
- Через консоль SSH (для продвинутых):
chmod -R 777 datas
2.3. Конфигурационный файл config.php: параметры подключения к БД и глобальные переменные
Все ключевые настройки вашего сайта хранятся в единственном файле — /datas/config.php. Этот файл создается автоматически при установке, но иногда его требуется отредактировать вручную (например, при смене пароля от базы данных или переносе сайта).
Давайте подробно разберем, какие параметры за что отвечают.
1. Параметры подключения к базе данных MySQL
$cfg['mysqlhost'] = 'localhost'; // Адрес сервера базы данных. Почти всегда 'localhost'. $cfg['mysqluser'] = 'seditio_user'; // Имя пользователя базы данных. $cfg['mysqlpassword'] = 'my_super_pass'; // Пароль пользователя БД. $cfg['mysqldb'] = 'seditio_db'; // Имя вашей базы данных.
2. Дополнительные настройки базы данных
$cfg['sqldbprefix'] = 'sed_'; // Префикс таблиц в БД. $cfg['sqldb'] = 'mysqli'; // Коннектор БД. В Seditio используется только 'mysqli'. $cfg['mysqlengine'] = 'InnoDB'; // Движок таблиц. Рекомендуется InnoDB для поддержки транзакций. $cfg['mysqlcharset'] = 'utf8mb4'; // Кодировка для правильного отображения любых символов (UTF-8). $cfg['mysqlcollate'] = 'utf8mb4_unicode_ci'; // Правила сопоставления символов при поиске и сортировке.
3. Оформление и языковые настройки по умолчанию
$cfg['defaultskin'] = 'sympfy'; // Имя папки темы оформления по умолчанию (из папки /skins/). $cfg['defaultlang'] = 'ru'; // Код основного языка сайта (из папки /system/lang/). $cfg['adminskin'] = 'sympfy'; // Тема оформления для панели администратора.
4. Настройки безопасности и сессий
$cfg['site_secret'] = 'случайный_набор_символов'; // Секретный ключ (соль). Используется для создания CSRF-токенов защиты и хеширования паролей. Не сообщайте его никому!
$cfg['authmode'] = 3; // Режим авторизации пользователей:
// 1 - только через Cookies,
// 2 - только через PHP-сессии,
// 3 - совмещенный режим (Cookies + Sessions) — самый надежный и удобный.
$cfg['redirmode'] = FALSE; // Режим редиректов. Если у вас возникают проблемы со входом (бесконечный сброс авторизации), установите значение TRUE.
$cfg['ipcheck'] = TRUE; // Проверка IP-адреса. Если включено (TRUE), сессия пользователя будет сброшена при смене его IP (защита от кражи сессий).
$cfg['multihost'] = TRUE; // Разрешить сайту открываться по нескольким доменным именам (полезно при наличии зеркал).
$cfg['patchmode'] = FALSE; // Автоматическое обновление структуры БД (рекомендуется держать в FALSE, если не производится обновление версии CMS).
2.4. Настройка веб-сервера (Apache .htaccess / Nginx) и конфигурация ЧПУ (дружественных URL)
Seditio CMS имеет мощную, гибкую и оптимизированную систему ЧПУ (человекопонятных URL / SEF URL). Она полностью избавляет адреса от параметров вида index.php?module=page&id=15, превращая их в понятные иерархические пути.
Как выглядят реальные адреса Seditio с ЧПУ?
- Главная страница:
/ - Категория (список страниц):
/news/или/articles/sport/(обязательно заканчиваются слэшем/). - Страница по её уникальному алиасу (alias):
/news/my-first-pageили/articles/sport/new-record(без слэша на конце). - Страница по её ID (если алиас не задан):
/news/15или/articles/sport/124(без слэша на конце).Важное отличие: В ЧПУ Seditio тип ресурса (страница или категория) определяется именно по слэшу в конце пути. Например,
/news/— это категория (список страниц), а/news— это страница с алиасомnews. - Скачивание прикрепленного к странице файла:
/news/my-first-page/download. - Страница комментариев к материалу:
/news/my-first-page/comments. - Страница плагина (например, контакты):
/plug/contact. - Раздел панели администратора:
/admin/usersили/admin/config. - Профиль пользователя (детали):
/users/details/1(где1— ID пользователя в БД). - Страницы авторизации и регистрации:
/loginи/register.
Настройка перенаправления на стороне веб-сервера
Для работы ЧПУ необходимо, чтобы веб-сервер перенаправлял все запросы к несуществующим файлам и папкам на единую точку входа — /index.php в корне сайта.
Вариант 1. Настройка для сервера Apache (через .htaccess)
В корне дистрибутива Seditio уже лежит готовый преднастроенный файл /.htaccess. Вот его ключевое содержимое:
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
# Если запрошенный ресурс не является существующим файлом (-f),
# символической ссылкой (-l) или реальной папкой (-d)...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
# ...то перенаправляем весь запрос на index.php
RewriteRule ^(.*)$ index.php [L]
</IfModule>
Совет по подпапкам: Если вы установили CMS не в корень домена, а в подпапку (например,
mysite.com/seditio/), откройте файл/.htaccess, найдите строку#RewriteBase /, раскомментируйте её (уберите знак#) и укажите путь к вашей папке:RewriteBase /seditio/.
Вариант 2. Настройка для сервера Nginx
Так как Nginx не поддерживает файлы .htaccess, правила перенаправления прописываются в конфигурационном файле виртуального хоста (блок server):
location / {
# Пытаемся отдать файл или папку напрямую.
# Если они не найдены — перенаправляем на index.php с сохранением параметров.
try_files $uri $uri/ /index.php?$args;
}
Как устроена и работает система ЧПУ изнутри?
Система ЧПУ в Seditio разделена на два независимых процесса: распознавание входящего пути (Rewrite) и генерация исходящих ссылок (Translation).
1. Распознавание (Rewrite) — из ЧПУ в системный URL
Когда пользователь запрашивает адрес /news/my-first-page, сервер перенаправляеть этот запрос на /index.php. Ядро Seditio считывает адрес и сопоставляет его с регулярными выражениями в массиве правил $sed_urlrewrite:
- Для страниц совпадает регулярный шаблон:
#^/([a-zA-Z0-9_\-\+/%]+)/([a-zA-Z0-9_\-\+%]+)$#. - Соответствующее ему правило ЧПУ:
modules/page/page.php?al=$2. - Загрузчик
index.phpизвлекает переданные параметры (алиас страницы), помещает их в глобальные массивы (наполняя$_GET['al'] = 'my-first-page'), после чего напрямую подключает файл модуля:include_once(SED_ROOT . '/modules/page/page.php')для исполнения в текущем контексте.
2. Генерация ссылок (Translation) — из системного URL в ЧПУ
За генерацию всех ссылок в Seditio отвечает единственная глобальная функция sed_url() (файл /system/functions.php). Использование этой функции во всех модулях, плагинах и PHP-скриптах позволяет сайту на лету менять формат ссылок: при включении или выключении ЧПУ в админ-панели ссылки автоматически перестроятся по всему сайту без изменения кода.
Сигнатура функции:
function sed_url($section, $params = '', $anchor = '', $header = false, $enableamp = true)
Разбор параметров:
$section(string) — Название целевого раздела или скрипта (например,'page','forums','users','plug').$params(string|array) — Параметры URL. Передаются строкой (например,'c=news&id=15') или ассоциативным массивом (например,array('c' => 'news', 'id' => 15)).$anchor(string) — Дополнительный якорь страницы (например,'#comments').$header(bool) — Если выставлен вTRUE, ссылка формируется для использования в HTTP-заголовках (например, при перенаправленияхheader("Location: ...")). При этом амперсанды не экранируются, а к пути автоматически прикрепляется полный домен сайта.$enableamp(bool) — По умолчаниюTRUE. Автоматически заменяет все амперсанды&в ссылках на безопасный HTML-код&(требуется для прохождения валидации верстки).
Внутренняя логика работы функции:
- Если ЧПУ отключено (
$cfg['sefurls'] = FALSE): функция собирает стандартную ссылку видаindex.php?r=page&c=news&id=15. - Если ЧПУ включено (
$cfg['sefurls'] = TRUE):- Функция обращается к массиву правил трансляции
$mod_urltrans[$section]. - Перебирает правила сверху вниз, проверяя наличие переданных параметров в
$params. Правило сходится, если все его фиксированные параметры совпали с переданными (символ*означает, что параметр может иметь любое значение). - Из найденного правила берется шаблон преобразования (ключ
rewrite). - Происходит замена плейсхолдеров:
- Простые переменные
{var}: Заменяются на значения из параметров (например, плейсхолдер{al}заменится на алиас страницы). - Колбэки функций
{callback()}или{param|callback}: Вызывают PHP-функции ядра или модулей для построения сложных путей. Например, правило для страниц использует колбэк{sed_get_pagepath()}:'params' => 'al=*', 'rewrite' => '{sed_get_pagepath()}{al}'Функцияsed_get_pagepath()определяет категорию страницы и строит её иерархический путь (например,articles/sport/). В итоге получается красивый ЧПУ-путь:articles/sport/new-record. - Неиспользованные параметры: Если в функцию
sed_url()передали больше параметров, чем описано в шаблонеrewrite, они автоматически дописываются в конец ЧПУ-ссылки в виде обычной GET-строки (например,/news/my-first-page?highlight=word). - В зависимости от флага
$headerили настройки$cfg['absurls']к ссылке при необходимости прикрепляется полный адрес сайта (домен), удаляются лишние слэши и прикрепляется якорь$anchor.
- Простые переменные
- Функция обращается к массиву правил трансляции
3. Модульная структура, приоритеты и кэширование правил
Чтобы не перегружать ядро гигантскими массивами правил, Seditio собирает ЧПУ-правила по модульному принципу:
- Глобальные правила (базовые роуты ядра вроде
/adminили/plug) находятся в/system/config.urlrewrite.php. - Правила модулей находятся в файлах
<имя_модуля>.urls.phpв папках самих модулей (например,/modules/page/page.urls.phpдля страниц). - Правила плагинов находятся в файлах
<имя_плагина>.urls.phpв папках плагинов.
Приоритеты и сортировка правил (order): Поскольку ЧПУ работает перебором регулярных выражений до первого совпадения, критически важен порядок, в котором проверяются правила (от частных к общим). Для этого каждое правило имеет числовую позицию — приоритет (order):
- Системные роуты (системные контроллеры, ресайзеры, капча):
100–199. - Модули (галерея, форумы, личные сообщения):
200–499. - Разделы плагинов и панели администратора:
500–549. - Профили пользователей и системные сообщения:
550–599. - Списки страниц (категории):
600–649. - Сами страницы:
650–699. - Главная страница (самый общий роут
/):700.
При сборке кэша все правила объединяются в один массив и сортируются по возрастанию приоритета (usort по ключу order). Таким образом, более частные роуты (например, /plug/contact с приоритетом 515) всегда проверяются раньше общих правил категорий и страниц.
Как работает кэш правил: При установке, обновлении или изменении структуры сайта Seditio сканирует папки активных модулей и плагинов, собирает их правила ЧПУ, сортирует их по приоритетам и компилирует в один общий файл кэша — /datas/cache/sed_urls.php. При каждом обращении к сайту ядро подключает именно этот готовый отсортированный кэш-файл, что избавляет систему от необходимости повторного сканирования директорий на каждом просмотре страницы, обеспечивая колоссальную скорость работы роутинга.
2.5. Перенос готового сайта между серверами и резервное копирование
Рано или поздно возникает необходимость перенести сайт с локального компьютера (OpenServer/Denwer) на рабочий хостинг или сменить хостинг-провайдера. Процесс миграции Seditio состоит из простых шагов:
Шаг 1. Создание резервной копии (бэкапа)
- Файлы: С помощью FTP-клиента или файлового менеджера хостинга скачайте все файлы вашего сайта к себе на компьютер (или упакуйте их в ZIP-архив прямо на сервере и скачайте архив).
- База данных: Зайдите в инструмент управления базами данных (обычно это phpMyAdmin). Выберите вашу базу данных, перейдите во вкладку «Экспорт» (Export), выберите быстрый метод экспорта в формате SQL и скачайте полученный файл дампа базы данных (например,
backup.sql).
Шаг 2. Развертывание файлов на новом сервере
- Закачайте все файлы вашего сайта (или архив) на новый сервер/хостинг в корневую директорию нового сайта. Если закачивали архив — распакуйте его средствами файлового менеджера хостинга.
- Проверьте и настройте права доступа
CHMODна папки в директории/datas/(выставьте777или775), как описано в разделе 2.2.
Шаг 3. Импорт базы данных
- На новом хостинге создайте чистую база данных MySQL и пользователя для нее (аналогично Шагу 2 из раздела 2.1).
- Откройте phpMyAdmin для новой базы данных.
- Перейдите во вкладку «Импорт» (Import), выберите файл вашей резервной копии БД (
backup.sql) с компьютера и нажмите «Вперед» (Go). База данных будет успешно импортирована.
Шаг 4. Редактирование файла настроек config.php
Откройте файл /datas/config.php на новом сервере в текстовом редакторе и измените параметры подключения к базе данных на новые:
$cfg['mysqlhost'] = 'localhost'; // Новый хост БД $cfg['mysqluser'] = 'new_db_user'; // Новый пользователь $cfg['mysqlpassword'] = 'new_db_password'; // Новый пароль $cfg['mysqldb'] = 'new_db_name'; // Новое имя базы данных
Сохраните изменения.
Шаг 5. Очистка кэша (Важный шаг!)
После изменения конфигурации и импорта базы данных пути к картинкам, правилам ЧПУ или установленным плагинам могут оставаться в кэше по старым адресам. Чтобы сайт на новом сервере заработал корректно, необходимо сбросить кэш.
Сделать это можно двумя способами:
Способ 1. Через панель управления (если есть доступ в админку)
Если вам удалось успешно залогиниться на новом сайте:
- Перейдите в Админ-панель -> Управление -> Внутренний кэш (или откройте адрес
admin.php?m=cache). - Вы увидите список закешированных ресурсов и управляющие кнопки:
- Нажмите «Очистить всё» (Purge) — это сбросит весь внутренний кэш базы данных.
- Нажмите «Пересоздать кэш ЧПУ» (Regenerate SEF URLs) — это принудительно обновит кэш правил дружественных URL (
sed_urls.php) под текущую структуру и домен сайта. - Нажмите «Очистить кэш шаблонов» (Purge TPL cache) — это удалит старые скомпилированные копии TPL-файлов оформления.
Способ 2. Вручную (если админка недоступна)
Если из-за старого кэша путей сайт отображается некорректно или вы не можете войти в панель управления:
- Подключитесь к сайту по FTP или через файловый менеджер хостинга.
- Перейдите в папку
/datas/cache/. - Удалите все файлы из этой папки (за исключением служебных файлов защиты вроде
.htaccessилиindex.html, если они там присутствуют). Саму папку/datas/cache/удалять не нужно!Примечание: При первом же обращении к страницам сайта Seditio автоматически пересоберет кэш ЧПУ и сгенерирует новые, актуальные файлы кэша в этой папке.
После очистки кэша откройте ваш сайт в браузере и проверьте работоспособность всех разделов. Перенос успешно завершен!
Comments: (0)