Найти в Дзене
Computer Pro

Postgres + Nginx + Fastapi без докер-контейнеров для Arch-подобных систем

С одной стороны докер-контейнеры это очень удобно, а с другой стороны это всё "варится" в какой-то закрытой "коробочке" и не очень понятно что к чему. Поэтому я установлю отдельно postgres, отдельно nginx и все это дело будет управляться при помощи fastapi. Опять жеж, а вдруг с 1 января отключат в России докер и что тогда?! А тут бац и мы помним как это все разместить на компе с помощью установщиков! Итак, поехали: Установил postgres, теперь нужна первоначальная настройка, проинициализировать базу данных: Всё это делается по официальной документации archlinux + postgres, хотя в окне выше написано что "можно запустить сервер баз данных" он не запустился: Ну да ладно, это не беда, возвращаемся к обычному пользователю (выходим из postgres) и запускаем сервис: Теперь можно запустить программу управления базами данных psql, от имени пользователя postgres: Где можно вывести список пользователей и баз данных (команды подчеркнул красным: Как можно видеть в системе управления базами данных пол
Оглавление
С Новым Годом (а в случае с годом змеи - ГАДОМ!))))
С Новым Годом (а в случае с годом змеи - ГАДОМ!))))

С одной стороны докер-контейнеры это очень удобно, а с другой стороны это всё "варится" в какой-то закрытой "коробочке" и не очень понятно что к чему. Поэтому я установлю отдельно postgres, отдельно nginx и все это дело будет управляться при помощи fastapi.

Опять жеж, а вдруг с 1 января отключат в России докер и что тогда?! А тут бац и мы помним как это все разместить на компе с помощью установщиков!

Итак, поехали:

Postgresql

-2

Установил postgres, теперь нужна первоначальная настройка, проинициализировать базу данных:

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

Всё это делается по официальной документации archlinux + postgres, хотя в окне выше написано что "можно запустить сервер баз данных" он не запустился:

-4

Ну да ладно, это не беда, возвращаемся к обычному пользователю (выходим из postgres) и запускаем сервис:

-5

Теперь можно запустить программу управления базами данных psql, от имени пользователя postgres:

-6

Где можно вывести список пользователей и баз данных (команды подчеркнул красным:

-7
-8

Как можно видеть в системе управления базами данных пользователи и базы данных только те, которые создаются при инициализации БД. Мне же надо создать пользователя-админа и базу данных которая будет работать с моим "клоном твиттера" (twitter_admin и twitter_db):

-9

Пользователь и база данных создана, по идее уже можно подключаться и выполнять операции с таблицами исходя из созданных бд и юзера:

-10

То есть база данных у меня создана и работает. Нужно теперь отработать установку и настройку nginx который будет отдавать "статический фронт_энд".

Nginx

-11

Установить - не проблема. Посмотрим что говорит руководство по настройке:

Руководство говорит - запускай сервис, ну я и запустил...
Руководство говорит - запускай сервис, ну я и запустил...

Глянем что у нас на локалхосте получилось...

-13

На стандартном, 80м порту не запустилось а вот на 8000 - пожалуйста, всё заработало.

Но мне нужно подменить стандартную nginx-html страничку моим "фронт_эндом" твиттера, пойдем ковырять nginx.conf

-14

В файле настроек очень много закомментированных строк, которые мне никогда не понадобятся (наверное, для того и привожу здесь листинг файла конфигурации - вдруг пригодится, потом):

-15
-16

Чтобы дальше продолжать настройку nginx, мне потребуется проект моего фаст_апи приложения, чтобы знать директорию в которой будет лежать папка с фронт_эндом:

Весь фронтенд я положу в директорию /usr/share/nginx и поменяю настройки root-директории. Вот такой у меня получился nginx.conf

Файл частично рабочий...
Файл частично рабочий...

Перезапуск nginx-сервера, заходим в браузер по адресу http://127.0.0.1 (0.0.0.0 или localhost) и у нас появляется какая-никакая а картинка фронта:

-18

Теперь нам нужно сделать так, чтобы от приложения FastAPI, приходил ответ, с эндпойнта /api/users/me, нужного формата. Формат ответа должен быть примерно таким:

-19

В файле nginx.conf нужно внести несколько изменений и конечный файл получается таким:

немного сбиты отступы, но в настройках nginx это не играет роли...
немного сбиты отступы, но в настройках nginx это не играет роли...

Ну вот, БД запущена, nginx работает, осталось дело за приложением. Так как у меня не докер-контейнер я указываю в настройках прокси localhost

FastAPI

Создал новый проект. В нем директорию src (плюс api и core), где написал простейшую обработку эндпойнта /api/users/me:

-21

Запускаю приложение, веб-сервер уже работает, обновляю страницу и вуаля: появилось что-то (не всё конечно) из фронтенда!

-22

Ну вот, теперь можно спокойно работать с бэкендом, не заморачиваясь каждый раз пересобиранием контейнеров. А когда проект будет завершен - можно код перенести в систему докер-контейнеров.

На сегодня всё. Всем удачи! С наступающим Новым Годом!