четверг, 24 апреля 2025 г.

Установка и настройка NGINX для работы со скриптами Python.

.
Цель: Развернуть среду, обеспечивающую возможность принятия запросов по стандартному HTTP протоколу и выполнение по этим запросам скриптов на сервере, написанных на языке Python.
Для выполнения данной задачи соберем сборку: NGINX + Gunicorn + Flask


Устанавливаем и запускаем NGINX
# dnf install nginx
# systemctl enable --now nginx

Устанавливаем Python
# dnf install python3 python3-pip

Устанавливаем Gunicorn
# pip3 install gunicorn
Проверка:
# /usr/local/bin/gunicorn --version

Установка приложения Flask
# pip3 install flask
Создаем приложение Flask
# mkdir /var/www/appfs
# nano /var/www/appfs/app.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return "Hello, World from Gunicorn and NGINX!"
if __name__ == '__main__':
    app.run()

Выполняем первый запуск:
# cd /var/www/appfs
# /usr/local/bin/gunicorn --bind 127.0.0.1:8000 app:app

Приложение запуститься на порту 8000
В другом терминале можно проверить ответ приложения так:
# curl http://127.0.0.1:8000

Теперь запустим Gunicorn как сервис systemd:
# nano /etc/systemd/system/gunicorn.service
[Unit]
Description=Gunicorn app
After=network.target
[Service]
User=root
Group=nginx
WorkingDirectory=/var/www/appfs
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.target

Запускаем службу:
# systemctl daemon-reload
# systemctl start gunicorn
# systemctl enable gunicorn

Выполняем настройку NGINX, чтобы сервер все запросы отправлял на Gunicorn:
# nano /etc/nginx/conf.d/appfs.conf
server {
    listen 80;
    server_name 172.31.0.3;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Перезапускаем NGINX
# systemctl restart nginx
Для проверки делаем тест-запрос:
# curl http://172.31.0.3:80
Должны увидеть:
Hello, World from Gunicorn and NGINX!


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

Отправить комментарий