
Последнее время я довольно плотно занимался mCMS. И каждый раз находилось ещё что-нибудь, что хотелось доделать перед публикацией: установщик, темы, модули, обновления, резервное копирование, магазин… В какой-то момент стало понятно, что так можно продолжать бесконечно.
Поэтому я наконец решил: mCMS достаточно готова, чтобы выпустить её в публичный доступ. Исходники открыты, готовые дистрибутивы опубликованы, документация есть. Это не означает, что в системе больше нечего менять. Означает, что ей уже можно пользоваться и не нужно сначала разбираться в моём окружении разработки.
Что такое mCMS
mCMS — открытая модульная система управления сайтами на PHP и CodeIgniter 4, рассчитанная прежде всего на установку на собственном сервере или обычном хостинге. Она не требует аккаунта в стороннем облаке или оплаты подписки. Сайт, база данных и загруженные файлы находятся на вашей инфраструктуре.
Я не пытался упаковать в ядро всё на свете. Ядро занимается пользователями и правами, авторизацией, настройками, административным интерфейсом, жизненным циклом модулей, хранилищем и обслуживанием системы. Всё, что относится к содержимому сайта или конкретным задачам, подключается отдельно.
Например, Pages, News, Menus, Media и Galleries отвечают за страницы, новости, меню, файлы и галереи. Модуль SEO — за метаданные, карту сайта и переадресации. А Catalogue, Stock, Cart, Orders и Delivery позволяют собрать магазин: товары и варианты, изображения, остатки, корзину, оформление заказов и доставку или самовывоз. Есть также дополнительные модули, включая аналитику и интеграционный API.
У каждого модуля свои данные, настройки, права и миграции. Зависимости проверяются при установке и включении. Отключение модуля не означает удаление его данных. Для сторонних расширений предусмотрены установка из ZIP, каталог пакетов, обновления и варианты удаления с сохранением данных или с полной очисткой.
Темы и редактирование
Внешний вид сайта отделён от его содержимого. В комплекте четыре штатные темы — Default, Signature, Depth и Focus. Есть API тем, поддержка сторонних пакетов и настройка расположения меню. В административной части используются Tabler, в публичном интерфейсе — шаблоны выбранной темы.
Для контента предусмотрены визуальный редактор, предпросмотр ещё не сохранённых изменений, автосохранение и история редакций. Можно публиковать новости, собирать страницы, вставлять галереи в разных представлениях, управлять медиафайлами и искать материалы на сайте.
Как установить
Сейчас есть два полноценных варианта развёртывания.
Docker Compose / Portainer
Для своего сервера это наиболее удобный путь. В репозитории лежит готовый portainer-stack.yml, который можно развернуть через Portainer → Stacks → Repository, либо использовать обычный Docker Compose. В составе стека приложение, веб-сервер и MariaDB; файлы, модули, темы и резервные копии хранятся в постоянных томах. После запуска мастер по адресу /install помогает завершить установку и создать администратора.
Публичный доступ лучше организовать через HTTPS reverse proxy. Готовы инструкции и для обычного Git Stack, и для установки на опубликованных контейнерных образах.
Обычный PHP-хостинг
Docker не обязателен. Для standalone-установки есть полный ZIP-дистрибутив с PHP-зависимостями и готовыми ресурсами интерфейса. Нужны PHP 8.2 или новее, MySQL/MariaDB, необходимые расширения PHP и возможность настроить веб-корень.
Важная деталь: DocumentRoot должен указывать именно на публичный каталог public_html. Исходники приложения, vendor, writable, .env и другие приватные файлы располагаются выше веб-корня, независимо от абсолютного пути на хостинге. После распаковки установка также выполняется через браузер. Composer или командная строка на хостинге для первоначальной установки не требуются.
Скачивать нужно именно файл вида mcms-X.Y.Z-shared-hosting.zip из релиза. Кнопка GitHub «Source code ZIP» для этого не подходит.
Как обновлять и обслуживать
Мне было важно сделать не только установку, но и нормальное обслуживание уже работающего сайта.
- Резервные копии. Из административной панели можно создать и скачать полный архив сайта, а затем восстановить его. В Docker есть отдельный том для готовых копий. Копии, конечно, стоит хранить и вне сервера.
- Обновления. Ядро, модули и темы обновляются раздельно. Автоматические обновления необязательны и по умолчанию выключены. В обычном Git Stack обновление ядра выполняется через Git Re-pull / Redeploy; для автоматических обновлений опубликованных релизных образов предусмотрена отдельная схема с Portainer API.
- Расширения. Зависимости учитываются, а потенциально опасные операции требуют подтверждения. Модуль нельзя бездумно удалить, если от него зависят другие.
- Диагностика и восстановление. Есть проверки состояния системы, руководство по эксплуатации, резервированию и действиям при неудачном обновлении.
И отдельно замечу: установка стороннего PHP-модуля — это запуск чужого кода с правами приложения. Поэтому устанавливать стоит только те пакеты, которым вы доверяете.
Релиз и исходники
На момент публикации доступен mCMS v0.1.10. Проект открыт под лицензией MIT. Разработка продолжается, и какие-то детали интерфейсов, модулей и установки ещё наверняка будут меняться. Но ждать какого-нибудь мифического «идеального состояния» я больше не собираюсь.
Страница mCMS на моём сайте — описание, возможности и основные ссылки.
Скачать релизы mCMS — ZIP для хостинга и другие артефакты.
Руководство на русском — установка, обновления, эксплуатация и восстановление.
Исходный код на GitHub — документация для разработчиков и история проекта.
Если попробуете mCMS у себя и найдёте ошибку или неудобное место, об этом можно написать в GitHub Issues. Практический опыт использования здесь полезнее любых предположений о том, как система должна работать.
