Подготовка рабочего места web-программиста на Python

Jazz

Опубликован:  2023-08-01T10:53:34.689472Z
Отредактирован:  2023-08-01T10:53:34.689472Z
Статус:  публичный
48
0
0

Web-разработка.., именно её мы увлечённо исследуем в этом блоге и продолжаем целенаправленно двигаться в этом направлении. Очередной эпизод посвящён стеку инструментов, с помощью которых web разрабатывают, но на этот раз описание будет содержать максимальную конкретику. Я подготовлю окружение для разработки конкретного web-приложения на базе языка программирования Python, обзаведусь всем необходимым для этого программным обеспечением и покажу его начальную настройку. Острожно, будет много букв...

Выбор платформы

Web-разработка - дисциплина компьютерная, и чтобы заниматься ей, необходим любой компьютер с большим экраном, современным процессором, достаточным запасом RAM и клавиатурой. Не имеет значения, стационарный это компьютер или лэптоп, выделенная видеокарта для web-разработки не обязательна, достаточно встроенного в процессор видео.

На компьютере, чтобы с ним можно было продуктивно работать, должна стоять операционная система, и, поскольку в процессе разработки необходимо будет эмулировать взаимодействие клиента и сервера, в эту операционную систему нужно будет установить некоторые серверные приложения. Кроме этого, необходимо помнить, что результат разработки впоследвии так или иначе придётся разворачивать на сервер глобальной сети, а значит, все используемые компоненты должны быть совместимы с операционной системой сервера.

В настоящее время наиболее широкое распространение на десктопах получили три типа операционных систем:

  • MS Windows;

  • Apple macOS;

  • Linux.

На базе MS Windows и Apple macOS вполне возможно заниматься web-разработкой, но эти операционные системы придётся покупать, и они либо плохо, либо совсем не подходят для сервера. И если уж совсем всё плохо, и на десктопе стоит одна из них, то без дополнительных мероприятий вряд ли можно будет обойтись, а эти дополнительные мероприятия потребуют предварительной подготовки и ресурсов, в рамках этого блога мы их рассматривать не будем.

Операционные системы на базе ядра Linux могут работать как на десктопе, так и на сервере, они свободны и не требуют оплаты, поэтому наиболее удобно и рационально на десктопе использовать в качестве базы для web-разработки одну из следующих операционных систем: Debian, Ubuntu, Fedora и, возможно, Arch.

Поскольку на моём десктопе установлен и эффективно работает Debian sid, в этом блоге я буду использовать именно его в качестве базы. Вот как выглядит его рабочий стол.

ZAdS4ERnp3.png

Такой выбор впоследствии почти гарантирует периодические проблемы на сервере, но я знаю как эти проблемы минимизировать и эффективно разрешить. Зато я получаю всегда свежий интерпретатор Python текущей стабильной версии в процессе разработки и возможность в опеределённый момент после релиза перебраться на стабильный выпуск Debian на сервере.

Язык программирования

Под управлением операционной системы Debian можно разрабатывать web с любым языком программирования: PHP, Python, Perl, Ruby, JavaScript, Java и так далее... В самом начале пути я для себя выбрал язык программирования Python в силу его разносторонности и универсальности, о чём ни разу не пожалел. Python удобен, лаконичен, прост в изучении, эффективен за счёт своей поистине всеобъемлющей стандартной библиотеки и позволяет достичь результатов с наименьшими затратами времени и усилий.

В Debian этот язык программирования установлен по умолчанию в любом варианте установки с графическим рабочим столом.

WJ7j7PXbom.png

В официальном хранилище пакетов Debian достаточно много библиотек для разработки на Python. На начальном этапе сразу необходимо установить в систему всего три дополнительных пакета:

  • python3-dev;

  • python3-venv;

  • python3-pip.

Остальные сторонние библиотеки Python я буду устанавливать позже по мере необходимости в виртуальное окружение конкретного web-приложения из PyPI, об этом поговорим чуть позже в этом блоге. Поскольку некоторые сторонние библиотеки Python требуют компиляции исходного кода при установке в виртуальное окружение, желательно установить ещё и набор компиляторов - пакет build-essential.

$ sudo apt install python3-dev python3-venv python3-pip build-essential

Эти пакеты необходимо будет установить и на сервер позже, при развёртывании уже разработанного web-приложения в глобальной сети, поэтому при конфигурации web-приложения я сделаю список зависимостей, об этом тоже поговорим в своё время.

Базы данных

Web-приложению необходимо где-то хранить свои данные. Вариантов и способов хранения данных достаточно много. В этом цикле статей я буду использовать две базы данных: PostgreSQL и Redis.

PostgreSQL даёт все необходимые возможности для хранения данных и работы с ними, но эта база слишком медленная. В некоторых случаях web-приложению необходимо кэшировать некоторые данные и максимально быстро получать к ним доступ, именно этих целей мне поможет достичь Redis.

На рабочем месте web-разработчика эти базы данных необходимо установить. Начнём с PostgreSQL. Пакеты PostgreSQL есть в официальном хранилище пакетов Debian, и установить их можно с помощью пакетного менеджера apt, вот так выглядит команда.

$ sudo apt install -y postgresql

Эта команда отзовётся следующим выхлопом в терминал.

Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Будут установлены следующие дополнительные пакеты:
  libcommon-sense-perl libjson-perl libjson-xs-perl libllvm14
  libtypes-serialiser-perl postgresql-15 postgresql-client-15
  postgresql-client-common postgresql-common ssl-cert sysstat
Предлагаемые пакеты:
  postgresql-doc postgresql-doc-15 isag
Следующие НОВЫЕ пакеты будут установлены:
  libcommon-sense-perl libjson-perl libjson-xs-perl libllvm14
  libtypes-serialiser-perl postgresql postgresql-15 postgresql-client-15
  postgresql-client-common postgresql-common ssl-cert sysstat
Обновлено 0 пакетов, установлено 12 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 41,2 MB архивов.
После данной операции объём занятого дискового пространства возрастёт на 174 MB.

Пакетный менеджер загрузит все необходимые пакеты и установит их, следует дождаться полного завершения процесса установки.

PostgreSQL - это исключительно серверный компонент, и на десктопе он нужен только для web-разработки, а это не 100% времени работы с компьютером. В начальном состоянии настроек база данных включена. На десктопе (только на десктопе) я предпочитаю изменить это начальное состояние следующей командой.

$ sudo systemctl disable postgresql.service

В этом случае после перезагрузки операционной системы сервис PostgreSQL будет выключен, и на время разработки и тестирования web-приложения его нужно будет каждый раз включать.

$ sudo systemctl start postgresql.service

ON3sWsAoYC.png

После установки PostgreSQL необходимо создать пользователя, для этого нужно получить в системе права пользователя postgres.

$ sudo -i -u postgres

В результате выполнения этой команды приглашение командной строки терминала изменит свой вид. Теперь создать пользователя можно следующей командой.

$ createuser jazz -P -d --interactive

Как видно из содержания команды, я создал пользователя с именем jazz, именно от имени этого пользователя у буду работать в операционной системе во время разработки web-приложения. Программа интерактивна и потребует ввода дополнительных данных, в том числе пароль для входа пользователя. Пароль нужно придумать и ввести два раза, при вводе пароль на терминале не отображается.

D0pafvIhME.png

После создания пользователя нужно покинуть учётную запись postgres командой exit. Всё, сервис PostgreSQL готов к работе на десктопе, и в этом варианте никаких дополнительных настроек он не требует, с ним мы более подробно познакомимся в следующих выпусках этого цикла статей.

Вторая база данных - это Redis. Установить его очень просто.

$ sudo apt install -y redis

Пакетный менеджер отзовётся следующим выхлопом.

Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Будут установлены следующие дополнительные пакеты:
  libjemalloc2 liblzf1 redis-server redis-tools
Предлагаемые пакеты:
  ruby-redis
Следующие НОВЫЕ пакеты будут установлены:
  libjemalloc2 liblzf1 redis redis-server redis-tools
Обновлено 0 пакетов, установлено 5 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1365 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 7124 kB.

Пакетный менеджер загрузит все необходимые пакеты и установит их, следует дождаться полного завершения процесса установки.

Redis - тоже исключительно серверный компонент, и на десктопе он нужен только во время работы над web-приложением. Так же как и PostgreSQL его можно исключить из списка включенных при загрузке операционной системы сервисов.

$ sudo systemctl disable redis

В этом случае каждый раз приступая к работе над web-приложением сервис Redis нужно будет включать.

$ sudo systemctl start redis

Khs6Q6kTaL.png

Все компоненты для разработки бэкэнда web-приложения в системе установлены, осталось обзавестись вспомогательными инструментами.

Система контроля версий

Работа над web-приложением это процесс сложный, запутанный и довольно продолжительный, чтобы этот процесс был удобен и эффективен нам понадобится система контроля версий, я обычно использую Git. Его нужно установить в операционную систему, сделать это можно опять при помощи пакетного менеджера apt.

$ sudo apt install -y git

После установки нужно представиться Git -у, эту задачу решит последовательное выполнение следующих двух команд.

$ git config --global user.name Jazz
$ git config --global user.email webmaster@codej.ru

Кроме этого, необходимо обзавестись учётной записью на сервере Git, наиболее популярными сервисами сегодня являются github.com, gitlab.com и bitbucket.org, с их помощью можно поделиться кодом web-приложения с другими пользователями и организовать совместную работу, или развернуть этот код на сервер, когда придёт время. В рамках этого блога я буду работать над web-приложением в одиночку и хранить его код на github.com, об этом поговорим чуть позже.

Интернет браузеры

Разработка web-приложения предполагает три ключевых процесса:

  1. Редактирование кода приложения в текстовом редакторе;

  2. Тестирование;

  3. Отладка.

Проще всего протестировать web приложение можно в обычном Интернет браузере. У процесса тестирования есть особенность, иногда бывает необходимо полностью почистить кеш браузера, поэтому использовать для тестирования тот же браузер, который используется для серфинга и должен аккуратно хранить кеш, не совсем рационально. Я обычно устанавливаю в свою систему столько различных браузеров, сколько возможно. При тестировании бывает нужно работать в web-приложении от имени разных пользователей одновременно, несколько браузеров будет как нельзя кстати в этом случае.

В официальном хранилище пакетов Debian есть два штатных браузера: Chromium и Firefox. Кроме этого можно установить дополнительные браузеры: Opera, Google-Chrome, Brave и любые другие. Штатные браузеры при этом будут использоваться для серфинга, а нештатные только для тестирования web-приложения, и их кеш можно будет чистить хоть каждые пять минут.

Текстовый редактор

Для редактирования кода web-приложения крайне необходим продвинутый текстовый редактор. Последнее время очень популярны у IT-шников так называемые IDE - продвинутые среды для разработки кода, такие как PyCharm и VSCode. На начальном этапе изучения web-разработки я использовал PyCharm для работы с исходным кодом приложения, но в итоге отказался от него в пользу текстового редактора NeoVim или Vim и консоли, с тех пор по PyCharm не разу не соскучился.

NeoVim - это продвинутый консольный текстовый редактор, клон Vim, он очень быстрый, бережно расходует системные ресурсы, быстро открывает большие по размеру файлы, даёт возможность работать с несколькими файлами параллельно, имеет очень широкий спектр весьма продвинутых настроек и позволяет перемещаться по тексту клавиатурными командами, не снимая пальцев с основной позиции на клавиатуре (фыва - олдж). Чтобы почувствовать эффективность этого текстового редактора необходимо владеть слепым методом набора текста. После Vim и его клонов (NeoVim) вы уже просто не сможете работать в PyCharm как прежде.

Я обычно устанавливаю оба редактора в своей операционной системе, и Vim, и NeoVim, хотя работаю чаще всего с NeoVim.

Перед началом работы NeoVim необходимо настроить. Настраивается этот редактор с помощью простого текстового файла, который достаточно просто отредактировать. Вот как этот файл выглядит на моей системе.

$ nvim .config/nvim/init.vim

7fBj55pyT5.png

Как видно на снимке экрана, мой редактор отображает номера строк, цветную границу на 80-м столбце, кроме этого в настройках установлен выход из режима вставки или визуального режима в командный режим при помощи сочетания ctrl+s, клавишу Esc нажимать для этого уже не обязательно. Кроме этого, в редакторе включена подсветка синтаксиса, и для каждого используемого диалекта установлена соответствующая ширина отступа. Какие-то продвинутые плагины проверки и автодополнения я предпочитаю не использовать, квалификация позволяет, хотя и это тоже возможно. С этими настройками редактор отображает код на Python следующим образом.

62Xti38NLJ.png

Подводим итог

На текущий момент у меня есть основная операционная система со всеми необходимыми для web-разработки компонентами, можно приступать к проектированию конкретного экземпляра. Как видно подготовка рабочего места web-разработчика не требует каких-то особых приёмов, достаточно иметь операционную систему и уметь ей пользоваться в полной мере. А в одном из ближайших выпусков этого блога поговорим о web-фреймворках общего назначения, я расскажу, что это такое, для чего они нужны, как выбрать конкретный, и в чём заключаются особенности выбора.