Просмотр источника
На этой странице представлю начальные шаги для создания нового python проекта. h1. Что требуется от вас? Прежде всего согласовать с Михаил Семеновичем проект, что он будет делать и способы взаимодействия (какие страницы или какие команды, по какому адресу будут доступны, что надо открыть/запустить) с проектом. Требуется установка следующих программ: * Python * IDE для Python * Docker * Git * Space * основы HTTP h2. Python Python подойдет любой версии, которую поддерживают библиотеки и фреймворки проекта. [Здесь|https://www.python.org/] можно посмотреть все доступные версии. h2. IDE IDE для Python - я советую [VS Code|https://code.visualstudio.com/] или [PyCharm|https://www.jetbrains.com/pycharm/] (последний может быть доступен по студенческой лицензии). Подойдет любая другая удобная вам IDE на которой можно запускать Python код. h2. Docker [Docker|https://www.docker.com/] необходим для запуска проекта на серверах. При подготовке проекта к развертыванию на серверах требуется написать Dockerfile для своего проекта, проверить этот файл (корректное создание контейнера) и поместить этот файл в репозитории. Docker позволяет создавать и запускать проекты, написанные не только на Python, но и на любых других языках программирования. Главное, возможность поместить этот проект в linux контейнер. Для понимания Docker можно посмотреть [видео|https://www.youtube.com/watch?v=QF4ZF857m44] , почитать [доку(англ)|https://www.docker.com/get-started/], [доку(англ)|https://www.docker.com/blog/how-to-dockerize-your-python-applications/], [статья(англ)|https://developers.redhat.com/articles/2023/03/23/10-tips-writing-secure-maintainable-dockerfiles]. h2. Git и Space Git - технология версионирования кода. Space - платформа от Jetbrains, совмещающая в себе несколько инструментов для командной разработки, включая Git репозиторий. Про git можно почитать [тут|https://git-scm.com/book/ru]. Про Space можно почитать [тут(англ)|https://www.jetbrains.com/space/]. Вкратце, для dl.gsu.by это одно место со всеми исходными кодами всех проектов. Space можно установить, а можно пользоваться [веб версией|https://dl-gsu-by.jetbrains.space/]. h2. HTTP Про HTTP можно почитать [тут|https://habr.com/ru/articles/215117/]. h1. Стадии развития проекта Для начала требуется попросить завести вам репозиторий для вашего проекта. После этого начинаем кодить. После того, как вы протестировали проект и сделали из него то, что планировали, вы можете его опубликовать на серверах dl. Для этого требуется: * залить все файлы в свой репозиторий на Space (лучше сразу, после того, как внесли изменение в любой файл документировать в коммите это изменение) * создать Dockerfile (если вы этого еще не сделали) и протестировать корректность создания контейнера * написать Михаилу Семеновичу письмо о готовности опубликовать проект h1. Особенности, или инструкция как сэкономить время себе и другим В этом разделе собраны и будут собираться все особенности публикации проекта. h2. Обработка URL ведется начиная с префикса названия вашего проекта Покажу на примере: Допустим ваш проект называется *newproject*. Если вы хотите добавить какой-то функционал по адресу */user/profile/1*, то перед публикацией на dl этот URL должен быть преобразован в */newproject/user/profile/1*. Все пути запросов, отправляемые в ваш проект (контейнер) будут начинаться с */newproject*. Благодаря этому осуществляется перенаправление запросов в нужные контейнеры. Из URL в запросе */newproject* не убирается. Пути решения: Можно завести в файле конфиге проекта поле с префиксом для всех URL, а в обработчиках добавлять к URL этот префикс. Так же, если фреймворк позволяет, указать в приложении явно глобальный префикс для всех URL. h2. Proxy {quote} Вся коммуникация с внешним миром идёт через https-прокси, поэтому в приложении обязательно уметь и использовать прокси (обязательно с поддержкой http basic auth), который будет передан контейнеру через переменные окружения HTTP_PROXY и HTTPS_PROXY. По-умолчанию имеет слелующий формат HTTPS_PROXY=%username:%password@%proxy_host:$proxy_port. В ETR передано именно в этом формате и работает. Если есть команды в RUN (имеется ввиду в Dockerfile), утилита так же должна уметь работать с http proxy. Опять же, наличие вышеуказанных переменных вполне достаточно, 90% приложений под linux понимают именно этот формат и его стараются унифицировать, хотя бывают исключения. В основном это приложения на java и пакетные менеджеры (напр apt, yum). {quote} |