Навык для голосового помощника Алиса
- В директории
Alice/
создать виртуальное окружение:
python -m venv venv
-
Активировать виртуальное окружение:
- Если у вас Linux/macOS:
source venv/bin/activate
- Если у вас windows:
source venv/scripts/activate
- Если у вас Linux/macOS:
-
Установить зависимости:
pip install -r requirements.txt
- Создать туннель ngrok:
ngrok http 8000
- Запустить MongoDB.
- Наполнить БД ответами пользователю:
python db_loader.py
- Запустить проект:
uvicorn app.main:application --reload
Сформировать .env файл согласно example.env
# Настройки логирования (указаны значения по умолчанию при отсутствии параметра в .env)
LOG_LEVEL=INFO
LOG_DIR=logs
LOG_FILE=alice.log
LOG_FILE_SIZE=10485760
LOG_FILES_COUNT=10
# Настройки подключения
ME_CONFIG_MONGODB_URL=www.guidedogs.acceleratorpracticum.ru
ME_CONFIG_MONGODB_ADMINUSERNAME=adminuser
ME_CONFIG_MONGODB_ADMINPASSWORD=adminpassword
SENTRY_DSN=https://somedsn
# Настройки приложения
# Адрес расположения методички (указано значение по умолчанию)
BASE_AUDIO_URL=https://www.guidedogs.acceleratorpracticum.ru/
# Путь к файлу вопросов викторины (указано значение по умолчанию при отсутствии параметра в .env)
QUIZ_FILE_PATH="app/quiz/quiz.json"
Клонируем репозиторий:
git clone https://github.com/ProektAlisy/Alice.git
Переходим в директорию с файлом docker_compose.yaml:
cd infra
Собираем контейнеры и запускаем их:
docker-compose up -d --build
Наполняем базу данных:
sudo docker exec alice_app-app-1 python app/db_loader.py
Копируем файлы docker-compose и конфигурации nginx выполнив команду:
scp -r infra/* username@server:/home/alice_app/
ME_CONFIG_MONGODB_ADMINUSERNAME=adminuser
ME_CONFIG_MONGODB_ADMINPASSWORD=adminpassword
ME_CONFIG_MONGODB_URL=www.guidedogs.acceleratorpracticum.ru
MONGO_INITDB_ROOT_USERNAME=adminuser
MONGO_INITDB_ROOT_PASSWORD=adminpassword
MONGO_PORT="27017"
SENTRY_DSN="https://somedsn"
LOG_DIR=logs
- Автоматический деплой происходит при команде git push в ветку develop или main.
- Предварительно проходит проверка flake8 и автотесты.
- Базы данных наполнятся автоматически.
Копируем проект:
git clone https://github.com/ProektAlisy/Alice.git
Копируем файлы docker-compose и конфигурации nginx выполнив команду:
scp -r infra/* username@server:/home/alice_app/
Переходим на сервере в папку c docker-compose:
cd ..
cd home/alice_app/
Запускаем приложение командой:
docker-compose up -d --build
Наполняем базу данных:
sudo docker exec alice_app-app-1 python app/monga/db_loader.py
Проверить запущенные контейнеры можно командой:
docker-compose ps
Если поменяется домен, то необходимо изменить домен в файле settings.py:
BASE_AUDIO_URL = "https://www.new_addres.ru/"
Чтобы начать процесс получения сертификата, введите команду:
sudo certbot --nginx
В процессе оформления сертификата вам нужно будет указать свою электронную почту и ответить на несколько вопросов.
- "Enter email address" (англ. «введите почту»). Почта нужна для предупреждений, что сертификат пора обновить.
- "Please read the Terms of Service..." (англ. «прочитайте правила сервиса»). Прочитайте правила по ссылке, введите y и нажмите Enter.
- "Would you be willing to share your email address with the Electronic Frontier Foundation?" (англ. «хотите ли вы поделиться своей почтой с Фондом электронных рубежей»). Отметьте на своё усмотрение y (да) или n (нет) и нажмите Enter.
- "Please enter the domain name(s) you would like on your certificate" (англ. «пожалуйста, введите доменные имена, которые вы хотели бы видеть в своем сертификате»). Введите добавленное в проект доменное имя, нажмите Enter.
После этого certbot отправит ваши данные на сервер Let's Encrypt и там будет выпущен сертификат, который автоматически сохранится на вашем сервере. Также будет изменена конфигурация вашего nginx: добавятся нужные настройки и будут прописаны пути к сертификату. Перезапустите nginx:
sudo systemctl reload nginx
Зайдите через браузер на свой проект. Теперь в адресной строке вместо HTTP будет указан протокол HTTPS (англ. HyperText Transfer Protocol Secure), а рядом с адресом будет виден символ «замочек». Это значит, что сертификат успешно подключён и информация между клиентом и сервером передаётся в зашифрованном виде. Клик по замочку покажет подробную информацию о сертификате.
Бесплатный сертификат нужно обновлять минимум раз в три месяца. Certbot делает это по умолчанию, если вы не меняли стандартных настроек. Убедиться, что всё обновляется, можно с помощью команды:
sudo certbot renew --dry-run
Если по каким-то причинам автообновление не происходит, то можно выполнить следующую команду:
sudo certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
Эта команда обновит сертификат и перезапустит nginx.