mitaba
Mitabá
Проект использует Docker, в частности утилиту Docker Compose в качестве платформы разработки и деплоя, поэтому все операции разворачивания и администрирования будут проходить через него. Данный ридми поможет преодолеть нубическость в нём.
Установите Docker и убедитесь в успехе через
и
.
Docker для самых маленьких
Поднять докер обычно
, но так как я использую несколько файлов конфигурации, то задаю его
. Остановить докер
, а если вообще хочется подчистить контейнеры и volumes, то с ключом
:
.
Когда запущены контейнеры докера, в них можно входить через
, где
название контейнера (оно задается в схеме для docker-compose), для примера моего основного контейнера приложения.
Первоначальная настройка базы данных
Для этого зайти через
внутрь работающего контейнера.
Администрирование
Полезные для работы с проектом команды заданы в
в корне проекта, запускаются например
или
(запуск/остановка докера). Это для тех счастливчиков, кто UNIX. Все остальные (windows) подсматривают
и самостоятельно запускают цепочки команд.
Обновление сертификатов (production)
ssh root@mitaba.rucd /projects/mitaba.rumake downsudo certbot renewmake upexit
Обновление сертификатов (development)
make dev-cert
Очистка экосистемы докера
При работе с докером он зажирает место очень быстро, поэтому нужно периодически чистить лишнее, см. хелп докера. Но будь осторожен не похерь volume базы данных!
Дамп базы
Периодически делай дамп базы (TODO).
Перенос на другой сервер
Что нужно взять со старого [OLD_SERVER]?
- Забрать архив сертификатов:
ssh [OLD_SERVER]sudo tar -czvf /etc-letsencrypt.tar.gz /etc/letsencryptexitсd [LOCAL_PROJECT_ROOT]scp [OLD_SERVER]:/etc-letsencrypt.tar.gz .
- Забрать дампы базы данных
ssh [OLD_SERVER]cd /projects/mitaba.rumake dumpjsonmake dumpsqlexitсd [LOCAL_PROJECT_ROOT]scp [OLD_SERVER]:/projects/mitaba.ru/host/postgresql/dumpjson/dump.json host/postgresql/dumpjsonscp [OLD_SERVER]:/projects/mitaba.ru/host/postgresql/dumpsql/dump.sql host/postgresql/dumpsql
Развернуть проект на новом сервере [NEW_SERVER]
- Клонируем код приложения
ssh [NEW_SERVER]mkdir /projects/mitaba.rucd /projects/mitaba.rugit clone https://gitflic.ru/project/titamota/mitaba.git .
- Кладем production-настройки Django на новый сервер
сd [LOCAL_PROJECT_ROOT]scp host/django/settings.production.py [NEW_SERVER]:/projects/mitaba.ru/host/django/
- Переносим сертификаты
сd [LOCAL_PROJECT_ROOT]scp etc-letsencrypt.tar.gz [NEW_SERVER]:/tmpssh [NEW_SERVER]sudo tar -xzvf /tmp/etc-letsencrypt.tar.gz
- Переносим базу данных
ssh [NEW_SERVER]cd /projects/mitaba.rumkdir host/postgres/dumpsqlexitсd [LOCAL_PROJECT_ROOT]scp host/postgresql/dumpsql/dump.sql [NEW_SERVER]:/projects/mitaba.ru/host/postgresql/dumpsql
Далее, важно чтобы база данных была пустая. Можно на всякий случай удалить и заново собрать докер, но без миграций:
ssh [NEW_SERVER]docker-compose -f docker-compose.production.yml down -vdocker-compose -f docker-compose.production.yml up -d --buildmake loadsqlmake up
В принципе, должно сразу и заработать. Возможные проблемы:
- Не забыть перенести доменное имя - для обновления сертификатов это понадобится (правда позже)
- Проблемы с доступом. Проще все делать через root. Для утилиты scp важно чтобы создаваемые папки были от пользователя, под которым заходим. Помнить что ssh берет ключ, но с именем пользователя будет тупить, имя нужно явно задавать. В общем, решать проблемы доступа по мере поступления - в зависимости от условий нового сервера шаманский бубен будет по-другому стучать.
- Много других проблем, но все поправляемо, главное:
DON'T PANIC.
Смена IP-адреса
Не забыть прописать в
сервера
xx.xx.xx.xx mitaba.ru mitaba
xx.xx.xx.xx www.mitaba.ru
И поменять IP адрес на хостинге (в разделе "Записи DNS для зоны mitaba.ru")
Разработка
Устанавливаем Docker
Клонируем проект
Делаем сертификаты
Поднимаем
Заходим внутрь и делаем миграции
и админа админки
для
Пересобрать докер-образ
При изменении зависимостей в
нужно пересобирать образ через
(автоматически докер 'поднимется' после завершения сборки)
Задеплоить изменения в регистр докера
. Возможно, сначала придется залогиниться в Docker Hub
Обойти блокировку Docker Hub
Инструкция: https://www.netangels.pro/article/docker-hub-zablokirovan-v-rf/
Языки
JavaScript
- Dockerfile
- Makefile
- Python
- CSS