Уточнения:
- На ubuntu22.04 у меня не завелось. Советую использовать 20.04
- Приведенные команды необходимо выполнять из корня проекта
- При внесении изменений в код, необходимо ребилдить images
docker-compose build
Порядок действий:
- Установить
mkcert,docker,docker-compose - Выпустить сертификаты для ssh
mkcert -key-file key.pem -cert-file cert.pem localhost 0.0.0.0 ::1 - Скопировать сертификаты для ssh в модуль lti_auth (необходимо для сервера на python)
cp ./key.pem ./lti_auth/key.pem & cp ./cert.pem ./lti_auth/cert.pem - Создать и заполнить файл
.env - Запустить проект
docker-compose up
См. lti_auth.src.lti_auth.settings.settings.py - создается объект настроек из .env файла
Там заданы дефолтные значения + дано краткое описание, за что именно отвечает та или иная настройка
Что настаивал я для запуска:
- JWT_SECRET - секрет, который используется для подписания
jwtтокена в cookie - JWT_COOKIE_NAME - название куки, в которой будет лежать
jwtтокен - JWT_TASK_ID_PARAM_NAME - название параметра в payload
jwtтокена дляidупражнения - JWT_USER_ID_PARAM_NAME - название параметра в payload
jwtтокена дляlms_user_idпользователя - JWT_IS_TRIED_PARAM_NAME - название параметра в payload
jwtтокена для отображения информации о том, что пользователь ранее уже успешно решил данное упражнение - NGINX_HOST_NAME - хост в
url, с которого редиректитnginx(необходимо сервисуlti_authдля замены хоста вurl, по которому перенаправляет запросnginx, чтобы успешно проходить проверкуlti-запроса). Например, чтобы локально тестировать, указывать в переменнойlocalhost, и в адресе сервиса вmoodleтакже указывать url черезlocalhost - SESSION_SECRET_KEY - секрет, который мы кладём в moodle (по дефолту
secretkey). Должен быть только из букв и цифр - SESSION_PUBLIC_KEY - публичный ключ, который мы кладем в moodle (по дефолту
publickey). Должен быть только из букв и цифр
Открываем lti_auth, как отдельный проект в ide и ведём разработку, как с самостоятельным проектом
В Pycharm файл README.md подсвечивает возможность выполнения команд -> можно без прекоммитера удобно выполнять
команды ниже. Эти же команды продублированы в README.md, расположенном в папке lti_auth
python -m ruff check --select I --select T20 --select COM --select B --exclude B008 --select F --select E --select W --select N --select C90 --fix srcpython -m ruff format srcpython -m mypy --install-types --non-interactive --show-error-context --show-column-numbers --pretty srcpython -m deptry src- игноримpython-multipart, он нужен дляfastapi
В nginx задан url для lti_auth через суффикс /python_app/. То есть, например, локально мы хотим сходить в наш lti_auth - для этого мы должны прописать url https://localhost/python_app/<some_python_uri>/
В приложении lti_auth реализована ручка /public/v1/lti/. Именно эту ручку нужно вставлять в moodle, вместе с хостом и префиксом приложения. Например, локально получится https://localhost/python_app/public/v1/lti/