Оглавление
Проект является реализацией сервиса, используемого для регулярного, оперативного и качественного контроля уровня работоспособности и психологического состояния работников.
В настоящее время работаем над совершенствованием системы и разработанных ранее функций.
В данном разделе представлен минимальный набор инструкции, необходимых для запуска приложения.
-
Клонировать репозиторий и перейти в директорию для развертывания.
git clone [email protected]:moodbeat/back.git
cd back/docker/
-
Переименовать
.env.example
в.env
и задать переменные окружения.Warning: Если не указаны значения для почтового сервера и DNS-адрес проекта приложение работать полноценно не будет.
-
Выполнить запуск контейнеров Docker.
sudo docker compose -f docker-compose-deploy.yaml up -d
-
Наполнить базу данных тестовыми записями.
sudo docker compose -f docker-compose-deploy.yaml exec web python manage.py loaddata fixtures/test_data.json
-
Выполнить индексацию для elastisearch.
sudo docker compose -f docker-compose-deploy.yaml exec web python manage.py search_index -f --rebuild
После выполнения инструкций, описанных в разделе "Установка и Запуск", вы сможете получить доступ к админке, перейдя по адресу http://localhost/admin.
Пользователь с правами администратора (при использовании тестовой базы данных):
- логин
- пароль
DM94nghHSsl
Также по адресу http://localhost/api/v1/swagger/ доступна полная документация API.
Данный раздел содержит информацию, которая может быть полезна для разработчиков.
# Переменные базы данных
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
# Переменные Django
DJANGO_SECRET_KEY=https://djecrety.ir/
DJANGO_RESET_INVITE_SECRET_KEY=change
DJANGO_DEBUG=False
# время жизни refresh и access токенов
REFRESH_TOKEN_LIFETIME_DAYS=14
ACCESS_TOKEN_LIFETIME_MINUTES=30
# Переменные Redis
REDIS_HOST=redis
REDIS_PORT=6379
# Переменные почтового сервера
DJANGO_SMTP=False
EMAIL_HOST=smtp.yourserver.com
EMAIL_HOST_USER=[email protected]
EMAIL_HOST_PASSWORD=yourpassword
# Переменная адреса проекта, куда будет приходить приглашение на регистрацию
SELF_HOST=https://example.com
# Переменные Elasticsearch
ELASTIC_HOST=elasticsearch
ELASTIC_PORT=9200
# Переменные Sentry
DEV_SERVICES=False
SENTRY_DSN=https://sentry.io/welcome/
# Переменные Celery
NOTIFICATIONS_AGE_DELETE=30
CELERY_BROKER=redis://redis:6379
CELERY_RESULT=redis://redis:6379
# email для писем из контактной формы
CONTACT_EMAIL=[email protected]
# Переменные бота
TELEGRAM_TOKEN=@BotFather
BASE_ENDPOINT=https://example.com/api/v1/ # адрес для обращения со стороны бота к RestAPI проекта
TIME_ZONE=Europe/Moscow # часовой пояс - должен быть одинаков в настройках Джанго и настройках бота
CONDITION_PERIOD_SEC=36000 # периодичность в секундах между оценкой своего состояния по 5-бальной шкале
BOT_NAME=example_bot_name # имя пользователя бота
BOT_INVITE_TIME_EXPIRES_MINUTES=10 # время действия кода отправляемого на email для авторизации в боте
WEB_HOOK_MODE=False # запуск бота в режиме webhook - True, в режиме polling - False
WEB_HOOK_HOST=https://example.com # домен с ssl, на котором развернут бот
WEB_APP_PORT=5000 # порт на котором будет "слушать" бот в режиме webhook
Для начала работы с проектом вам необходимо:
- иметь установленный менеджер зависимостей Poetry;
- postgresql 15+ версии;
- локально развернутые elasticsearch и redis. Для удобства их развертывания воспользуйтесь приложенным docker-compose.
После того как выполнены условия выше, скопируйте example.env в backend/conf, переименуйте файл в .env и отредактируйте, особое внимание уделив указанным ниже строкам:
# имя бд, пользователя и пароль меняем в соответствии с создаными у себя в базе
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DJANGO_DEBUG=True
# если поднимали воспользовавшись приложенным docker-compose конфигом
REDIS_HOST=localhost
REDIS_PORT=6379
ELASTIC_HOST=localhost
ELASTIC_PORT=9200
CELERY_BROKER=redis://localhost:6379
CELERY_RESULT=redis://localhost:6379
# если нужны логи (хранятся в backend/logs)
DEV_SERVICES=True
Далее перейдите в /backend и выполните установку пакетов с зависимостями:
poetry install
Активируйте виртуальное окружение с установленными зависимостями:
poetry shell
Если потребности в постоянно активном виртуальном окружении не возникает, работайте с приложением по примеру ниже:
poetry run python manage.py runserver
После того как зависимости установлены и активированно виртуальное окружение, выполните миграции:
python manage.py migrate
По желанию можно загрузить в базу уже предустановленные данные и выполнить индексацию для elastisearch:
python manage.py loaddata fixtures/test_data.json
python manage.py search_index -f --rebuild
Важно отметить, что проводить индексацию необходимо лишь при заливке данных в обход приложения. При добавлении новых данных из приложения, индексация добавленного производится автоматически.
В приложенных к проекту тестовых данных уже есть учетная запись суперпользователя, с email [email protected] и паролем DM94nghHSsl, однако если вы не загружали тестовые данные необходимо создать учетную запись суперпользователя:
python manage.py createsuperuser
После чего проект готов к работе по адресу указанному после запуска локального сервера:
python manage.py runserver