| На этой странице представлю начальные шаги для создания нового 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*. |
| |
| | Все пути запросов, отправляемые в ваш проект (контейнер) будут начинаться с */newporject*. Благодаря этому осуществляется перенаправление запросов в нужные контейнеры. |
| | Все пути запросов, отправляемые в ваш проект (контейнер) будут начинаться с */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} |