Пошаговая инструкция

Создание простого API на Python с использованием Flask и его развертывание через Nginx. Все действия выполняются в терминале Linux.

0

Подготовка к работе

Откройте Konsole (Ctrl + Alt + T или через меню). Все команды в этой инструкции предназначены для выполнения в Konsole.

Если вы видите блок кода, например:

command_name argument

Это означает, что текст внутри нужно ввести в Konsole и нажать Enter.

1

Установка зависимостей

Установите Python, pip и виртуальное окружение.

sudo pacman -S python-pip python-virtualenv
2

Создание приложения

Подготовьте директорию и создайте виртуальное окружение.

mkdir -p ~/myapi
cd ~/myapi
python3 -m venv venv
source venv/bin/activate
pip install flask gunicorn
3

Написание кода API

Создайте файл app.py со следующим содержимым:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({"message": "Hello from API!", "status": "success"})

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5500)
4

Тестовый запуск

Проверьте работу приложения.

python3 app.py

Откройте в браузере: http://localhost:5500/api/hello. Если все работает, остановите сервер (Ctrl+C).

5

Создание службы Systemd

Настройте автозапуск приложения через пользовательский systemd. Создайте директорию для юнитов, если её нет:

mkdir -p ~/.config/systemd/user/

Создайте файл ~/.config/systemd/user/myapi.service:

nano ~/.config/systemd/user/myapi.service

Содержимое файла (пути изменены на домашнюю директорию, Nginx не используется, слушаем порт 5500):

[Unit]
Description=Gunicorn instance to serve myapi
After=network.target

[Service]
WorkingDirectory=%h/myapi
Environment="PATH=%h/myapi/venv/bin"
# Запускаем Gunicorn на порту 5500
ExecStart=%h/myapi/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:5500 app:app

[Install]
WantedBy=default.target
6

Запуск службы

Активируйте и запустите службу.

systemctl --user start myapi
systemctl --user enable myapi
systemctl --user status myapi

Теперь ваше API доступно по адресу http://localhost:5500/api/hello.