CMS Табуна
Go to file
2025-01-08 19:52:19 +00:00
backend Механизм общесайтовых уведомлений 2025-01-02 07:05:25 +03:00
docker Возможность изменять конфигурацию PHP без пересборки образов, настройка вывода отладочной информации при необработанных исключениях 2024-12-06 06:35:53 +03:00
fixtures Попытка минимизировать перезапись счётчика комментариев в записи при её обновлении, мелкие исправления, актуализация readme 2024-11-18 22:19:56 +03:00
frontend Фикс обработчика кнопки закрытия общесайтового уведомления 2025-01-08 17:57:44 +03:00
lang Механизм общесайтовых уведомлений 2025-01-02 07:02:01 +03:00
.gitignore Оптимизация файловой структуры (перенос файлов бекенда в отдельную папку), исправления production-конфигурации Docker 2024-11-09 03:52:32 +03:00
docker-compose.develop.yml Возможность изменять конфигурацию PHP без пересборки образов, настройка вывода отладочной информации при необработанных исключениях 2024-12-06 06:35:53 +03:00
docker-compose.yml Оптимизация файловой структуры (перенос файлов бекенда в отдельную папку), исправления production-конфигурации Docker 2024-11-09 03:52:32 +03:00
README.md Исправления в readme 2024-11-19 22:48:44 +03:00

Да, это — </Табун>!

Блог-платформа на базе сильно переписанного LiveStreet 1.0.3. С понями.

  • PHP 7.4 с шаблонизатором Smarty;
  • JS/CoffeeScript и CSS/Stylus в сборке WebPack 4 с Babel;
  • БД MySQL;
  • кеш Redis;
  • движок поиска ElasticSearch.

Запуск проекта

Для запуска проекта нужен Docker >=19.03 (поддерживает buildx) с CLI-плагином Compose.

# запуск проекта из docker-compose по умолчанию (опция -f для переопределения)
docker compose up -d

# выполнение команды в работающем контейнере бекенда (например, composer update)
docker compose exec app ...

# выполнение команды в работающем контейнере фронтенда (например, npm install)
docker compose exec frontend ...

# остановка проекта
docker compose down

Для сборки продакшен сервера используется docker-compose.yml, для разработки — docker-compose.develop.yml. Отличия сборки для разработки:

  • все порты открываются на определённом IP-адресе, по умолчанию 127.0.0.1, настраивается переменной окружения HOST_IP в файле .env;
  • все изменения в папках frontend (ассеты) и lang (языковые файлы формата MessageFormat) отслеживаются и будут вызывать пересборку упакованных ассетов и применение их на сервере — не требуется перезапускать контейнеры;
  • создаётся отдельный контейнер для фронтенда, в котором крутится отслеживание упомянутых выше изменений;
  • возможна отладка PHP-кода посредством xDebug;
  • для управления базой данных доступен phpMyAdmin в стандартной поставке с автоматической авторизацией;
  • после первой сборки в проект загружаются пакеты Composer и NPM для корректной работы систем IntelliSense в IDE.

Если компьтер, на котором ведётся разработка, и компьютер, на котором запускается проект, — разные, то в файле .env в корне проекта необходимо указать IP-адрес в локальной сети компьютера-сервера. Пример оформления файла:

HOST_IP=10.0.1.1
COMPOSE_FILE=docker-compose.develop.yml
COMPOSE_PROJECT_NAME=tabun-dev

COMPOSE_FILE нужен, чтобы не писать при запуске/остановке контейнеров -f <...>.

Добавьте COMPOSE_PROJECT_NAME, чтобы образы, контейнеры и хранилища создавались с нужным префиксом. По умолчанию это имя папки проекта.

Работа с проектом

После запуска (в случае dev-сборки — на 127.0.0.1 или заданном адресе) будут открыты порты:

  • 8000 — собственно, сам Табун;
  • 8080 — интерфейс phpMyAdmin (авторизация не требуется). Доступен только на dev-сборке;
  • 1080 — интерфейс отладочного почтового сервера, позволяющего тестировать связанный с отправкой писем функционал без действительной отправки. Доступен только на dev-сборке;
  • 3307 — БД. Доступен только на dev-сборке.

При использовании xDebug укажите порт 9003 в конфигурации своей IDE. Если дополнительно используете DBGp Proxy Tool — IDE-ключ tabun.

База данных инициализируется автоматически при старте её контейнера и наполняется небольшой порцией тестовых данных (несколько аккаунтов, блогов, записей в них, комментариев). Для этого используются sql-файлы из папки fixtures — в migrations/ находится схема БД и в data/ тестовое наполнение.

Преднастроенные аккаунты на сайте для тестирования (логин:пароль):

  • Celestia:celestia
  • Luna:constellations
  • Sparkle:scrolls
  • Spitfire:feathers

При изменении существующей структуры БД на dev-сборке помимо создания дополнительных файлов миграции необходимо проверять соответствие тестового наполнения внесённым изменениям. Иными словами, после добавления файла миграции, изменяющего структуру БД, нужно заглянуть во все файлы в папке data/ и проверить SQL-запросы в них. Например, при добавлении новых столбцов нужно внести значения для них в соответствующих INSERT-запросах в 0001_example.sql, т.к. в них не прописан список заполняемых столбцов и при попытке выполнить такой запрос в таблице с изменённым набором столбцов БД упадёт (как ни странно).

Прочие сервисы

Redis

Порт 6379 (внутренний, не открывается за пределы docker)

Базы:

  • 1 — брокер Celery
  • 2 — результаты задач
  • 3 — сессии PHP
  • 4 — кеш приложения

php-fpm

Порт 9000 (внутренний, не открывается за пределы docker)

ElasticSearch

Переиндексация постов и комментов:

docker compose exec app php /var/www/backend/engine/console/ls.php reindex topics
docker compose exec app php /var/www/backend/engine/console/ls.php reindex comments