dq-site

0

Описание

dq.cube2.ru – коллекция вручную отобранных цитат, оформленных с уважением к типографике. Место для медитаций и вдумчивого чтения.

https://dq.cube2.ru

Языки

  • Python61,9%
  • HTML19,3%
  • CSS8,4%
  • JavaScript6,2%
  • Dockerfile4,2%
README.md

DicQuo (Цитаты, Афоризмы и Факты)

Dicquo — это коллекция отобранных вручную цитат, оформленных с уважением к типографике. Место для вдумчивого чтения, переосмысления и поиска вдохновения. Проект создан как пространство, где типографика встречается со смыслом, а технологии помогают контенту выглядеть безупречно.

Основные цели проекта:

  • Типографика как искусство: Разработка и тестирование собственных алгоритмов типографирования (висячая пунктуация, неразрывные пробелы, правильные тире) из библиотеки
    etpgrf
    (доступен в GitHub, GitVerse и self-hosted Cube2, онлайн версия развёрнута на typograph.cube2.ru).
  • SEO-эксперименты: Исследование влияния микроразметки, мета-тегов и семантической верстки на индексацию поисковыми системами.
  • Технологический стек: Современный Django, Docker, CI/CD и автоматизация деплоя.

Развернут на dq.cube2.ru.


Структура файлов на сервере (Production)

После правильного развертывания, папка проекта на сервере (например,

~/docker-apps/dicquo/
) должна выглядеть так:


Развёртывание (Deployment)

Проект полностью упакован в Docker и разворачивается с помощью

docker compose
. Ниже приведена инструкция для развертывания на чистом Linux-сервере (Ubuntu/Debian, архитектуры AMD/ARM).

1. Подготовка структуры

Создайте директорию для проекта (например, в домашней папке пользователя) и необходимые подпапки для persistent-данных:

2. Файлы конфигурации

Вам понадобятся два файла из репозитория (или их содержимое):

  1. docker-compose.prod.yml
    -> сохраните его на сервере как
    docker-compose.yml
    .
  2. .env
    -> создайте на основе
    .env.sample
    , заполнив секретами для продакшена.

Важные переменные в

.env
:

  • HOST_PROJECT_PATH
    : Полный путь к папке проекта на хосте (например,
    /home/username/docker-apps/dicquo
    ). Используется для корректной генерации конфига Nginx.
  • DJANGO_ALLOWED_HOSTS
    : Список доменов через запятую (например,
    dq.cube2.ru,127.0.0.1
    ).

3. Перенос данных (Опционально)

Если вы мигрируете с dev-окружения или другого сервера, можно просто скопировать файлы базы данных и медиа.

Скопируйте файл базы

database/db.sqlite3
и содержимое папки
media/
в соответсвующие папки на сервере.

4. Настройка прав доступа (Permissions) ⚠️

Это критически важный этап.

  1. Docker-контейнер (с нашим бэкендом Django и Gunicorn) должн иметь доступ к примонтированным папкам.
  2. Внешний Nginx (на хосте) должен иметь доступ к статике и медиа.

Права на папки проекта:

Права на родительские директории (Pass-through): Если проект лежит в домашней папке пользователя (

/home/username/...
), то Nginx (пользователь
www-data
) по умолчанию не сможет туда попасть. Нужно разрешить "проход" (execute) для всех пользователей по пути к проекту:

Без этого шага Nginx будет выдавать 403 Forbidden на картинки и статику.

5. Запуск

При первом запуске контейнер автоматически:

  • Применит миграции.
  • Соберет статику.
  • Сгенерирует конфиг для Nginx в папке
    config/nginx/
    .

6. Настройка Nginx и SSL

  1. Подключение конфига: Создайте симлинк на сгенерированный конфиг:
  2. Проверка и релоад:
  3. Получение SSL сертификата (Certbot):

Разработка (Dev)

Для локального запуска используется

docker-compose.yml
(он же dev-версия).

Проект будет доступен по адресу: http://127.0.0.1:8008

ToDo

  • В будущем, возможно, сделать API для предоставления цитат вешним потребителям (по темам, авторам и т.п.).
  • Попробовать парсинг и разметку цитат с внешних сайтов.
  • Telegram-бот.