Debian stretch, подготовка рабочего места к web-разработке на Python3

avm

Опубликован:  2018-02-17T09:42:04.089443Z
Отредактирован:  2018-02-17T11:16:24.776222Z
600

В продолжение темы поговорим о подготовке рабочего места для web-разработки на базе Python3. Платформой, как уже отмечено, послужит десктоп Debian stretch. Я расскажу о своём рабочем месте и покажу как оно организовано.

Установка Python3 уже детально описана в Python3, установка и подготовка к разработке на пакетной базе Debian stretch, кроме этого потребуется текстовый редактор или IDE для редактирования исходных текстов разрабатываемых программ.

Debian stretch предоставляет достаточно обширный набор имеющихся в официальном репозитории текстовых редакторов и IDE на любой вкус. Я в разное время использовал Kate, Medit, Geany, Spyder, присматривался к Eric6 и Eclipse. Но при всём богатстве выбора, наилучшим вариантом для себя я определил PyCharm Community Edition - IDE, которой нет в официальном репозитории, но которую можно установить и на Debian stretch. При этом я использую достаточно старую версию.

PyCharm

Главным преимуществом этой IDE для меня стала возможность выбора активного интерпретатора (и виртуального окружения) для каждого проекта. Кроме того, PyCharm предлагает великолепную систему автозавершения, решает импорты и позволяет управлять огромным набором инспекций кода. Для новичка - в самый раз. Я использу PyCharm исключительно как продвинутый текстовый редактор для правки кода. Все его IDE-шные фичи меня мало интересуют, поскольку я привык решать свои проблемы в консоли. Старая версия на моём рабочем месте лишь потому, что она тянет меньше места в сравнении с текущей, и чуть менее требовательна к ресурсам (надо заметить, что PyCharm греет процессор достаточно активно). Скачать PyCharm Community Edition можно на официальном сайте разработчика, процесс установки достаточно прост и хорошо описан.

С редактором определились. Теперь посмотрим, что ещё потребуется для разработки web-приложений с Python3.

База данных. Так как мой десктоп используется не только для web-разработки, тащить непосредственно на него серверные решения мне не очень хотелось. Весьма кстати оказался VirtualBox, который предоставляет возможность иметь базовый сервер на виртуальной машине, которую в свою очередь можно запускать, только когда производится разработка, отладка и тестирование web-приложений. На него можно установить все необходимые для работы серверные решения, и его можно выключать, когда он не требуется.

Итак, мой виртуальный сервер postgres установлен на виртуальную машину в полном соответствии с этой инструкцией и запущен.

postgres-server

Окно виртуальной машины сервера, чтобы не маячило, отправлено на второй рабочий стол и свёрнуто в панель задач. Сервер подключен к виртуальной сети и доступен для подключения с десктопа на IP-адресе 192.168.56.102.

sadmin@debian:~$ ping -c 2 192.168.56.102
PING 192.168.56.102 (192.168.56.102) 56(84) bytes of data.
64 bytes from 192.168.56.102: icmp_seq=1 ttl=64 time=0.423 ms
64 bytes from 192.168.56.102: icmp_seq=2 ttl=64 time=0.398 ms

--- 192.168.56.102 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.398/0.410/0.423/0.023 ms
sadmin@debian:~$ 

На сервере настроен пользователь sadmin - участник группы sudo, который может подключиться к серверу по ssh и выполнять любые административные действия с собственным паролем.

sadmin@debian:~$ ssh sadmin@192.168.56.102
Enter passphrase for key '/home/sadmin/.ssh/id_ed25519': 
Linux postgres 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3+deb9u1 (2017-12-23) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Feb 17 09:36:23 2018 from 192.168.56.100
sadmin@postgres:~$ 

Для начала, мне понадобится на этом сервере PostgreSQL и Redis с возможностью подключения и администрирования из консоли моего десктопа. Устанавливаю на сервер необходимые пакеты.

sadmin@postgres:~$ sudo apt-get install postgresql redis-server
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libjemalloc1 libpq5 libsensors4 libxslt1.1 postgresql-9.6
  postgresql-client-9.6 postgresql-client-common postgresql-common
  postgresql-contrib-9.6 redis-tools ssl-cert sysstat
Предлагаемые пакеты:
  lm-sensors postgresql-doc locales-all postgresql-doc-9.6 libdbd-pg-perl
  ruby-redis openssl-blacklist isag
НОВЫЕ пакеты, которые будут установлены:
  libjemalloc1 libpq5 libsensors4 libxslt1.1 postgresql postgresql-9.6
  postgresql-client-9.6 postgresql-client-common postgresql-common
  postgresql-contrib-9.6 redis-server redis-tools ssl-cert sysstat
обновлено 0, установлено 14 новых пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено.
Необходимо скачать 7 989 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 34,0 MB.
Хотите продолжить? [Д/н] 

Соглашаюсь и дожидаюсь окончания установки пакетов.

Настраиваю PostgreSQL, для этого вхожу пользователем postgres.

sadmin@postgres:~$ sudo -i -u postgres
postgres@postgres:~$ 

Создаю новую роль с именем sadmin.

postgres@postgres:~$ createuser sadmin -P -d --interactive
Введите пароль для новой роли: 
Повторите его: 
Должна ли новая роль иметь полномочия суперпользователя? (y - да/n - нет) n
Новая роль должна иметь право создавать другие роли? (y - да/n - нет) n
postgres@postgres:~$ 

И выхожу.

postgres@postgres:~$ exit
выход
sadmin@postgres:~$ 

Создаю тестовую базу данных startpoint.

sadmin@postgres:~$ createdb startpoint
sadmin@postgres:~$ 

Пробую к ней подключиться.

sadmin@postgres:~$ psql -d startpoint
psql (9.6.6)
Введите "help", чтобы получить справку.

startpoint=> \q
sadmin@postgres:~$ 

Отлично. Теперь мне нужно открыть доступ для подключения к PostgreSQL с моего десктопа. Напоминаю, IP-адрес сервера 192.168.56.102, IP-адрес десктопа 192.168.56.100. Открываю в текстовом редакторе файл /etc/postgresql/9.6/main/postgresql.conf.

$ sudo nano /etc/postgresql/9.6/main/postgresql.conf

Нахожу в этом файле секцию - Connection Settings -, в ней строчку listen_address и привожу к следующему виду.

configuration

Сохраняю и выхожу из текстового редактора. Обращаю внимание, что в эту строчку внесён IP-адрес сервера.

Далее таким же образом открываю файл /etc/postgresql/9.6/main/pg_hba.conf.

$ sudo nano /etc/postgresql/9.6/main/pg_hba.conf

Перемещаюсь в самый конец файла и добавляю в него новую строчку.

pg_hba

Сохраняю и выхожу из текстового редактора. Обращаю внимание, что в этом файле я вписал имя созданной в PostgreSQL роли и IP-адрес моего десктопа в виртуальной сети. Поскольку сервер не боевой и предназначен только для тестирования и отладки, указанные настройки вполне приемлемы. Теперь необходим рестарт сервера PostgreSQL, но поскольку мне нужно перейти в консоль десктопа, я перезагружаю весь сервер.

sadmin@postgres:~$ sudo shutdown -r now
Connection to 192.168.56.102 closed by remote host.
Connection to 192.168.56.102 closed.
sadmin@debian:~$ 

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

sadmin@debian:~$ sudo apt-get install postgresql-client redis-tools
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libjemalloc1 postgresql-client-9.6 postgresql-client-common
Предлагаемые пакеты:
  postgresql-9.6 postgresql-doc-9.6 ruby-redis
НОВЫЕ пакеты, которые будут установлены:
  libjemalloc1 postgresql-client postgresql-client-9.6
  postgresql-client-common redis-tools
обновлено 0, установлено 5 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1 911 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 7 101 kB.
Хотите продолжить? [Д/н] 

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

sadmin@debian:~$ psql -h 192.168.56.102 -U sadmin -d startpoint
Пароль пользователя sadmin: 
psql (9.6.6)
SSL-соединение (протокол: TLSv1.2, шифр: ECDHE-RSA-AES256-GCM-SHA384, бит: 256, сжатие: выкл.)
Введите "help", чтобы получить справку.

startpoint=> \q
sadmin@debian:~$ 

Успех! К серверу PostgreSQL можно подключаться, что и требовалось.

Теперь очередь Redis. Снова иду на сервер (ssh). Открываю в текстовом редакторе файл /etc/redis/redis.conf.

sadmin@postgres:~$ sudo nano /etc/redis/redis.conf 

Нахожу в этом файле строчку bind 127.0.0.1 и ниже дописываю ещё одну строчку.

redis-config

Сохраняю файл и выхожу из текстового редактора. Перезагружаю сервер, дожидаюсь его полной загрузки. После того, как сервер загрузился, в консоли десктопа пробую подключаться к Redis.

sadmin@debian:~$ redis-cli -h 192.168.56.102
192.168.56.102:6379> exit
sadmin@debian:~$ 

Успех! Redis на сервере доступен для подключения с десктопа. Опять же, поскольку сервер предназначен только для тестирования и отладки, подобная настройка сервера вполне приемлема.

Это минимальная конфигурация сервера, если будет необходимо в будущем, достаточно несложно установить на него другое серверное ПО, которое будет нужно для конкретного разрабатываемого проекта. Когда вся работа на текущий период выполнена и сервер не нужен, его можно выключить и заняться другими делами.

sadmin@postgres:~$ sudo shutdown -h now
[sudo] пароль для sadmin: 
Connection to 192.168.56.102 closed by remote host.
Connection to 192.168.56.102 closed.
sadmin@debian:~$ 

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

sadmin@debian:~$ VirtualBox --startvm postgres &
[1] 10591
sadmin@debian:~$ 

Таким образом моё рабочее место полностью готово к web-разработке с Python3. В ближайшей перспективе планирую показать начальную конфигурацию приложения на Flask, будет доступно в списках, оставайтесь с нами. :)

Кстати, комментарии открыты и приветствуются. Чтобы оставить комментарий, необходима регистрация. Синяя кнопка в строке "Комментарии" ниже обычно отзывается сразу после обновления страницы в браузере при условии, что в вашем браузере разрешены куки и включен JS.

 
Комментарии: