Обмен технологиями

Развертывание веб-сервисов Python в среде Linux

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Вставьте сюда описание изображения

«Девочка, это зависит от удачи, когда мы встретимся снова. Не притворяйся, что не знаешь друг друга. Не дрожь, когда говоришь: «Давно не виделись»…»

Чтобы развернуть серверный API, написанный на Python, в среде Linux, вы можете выполнить подробные шаги, описанные ниже. В этой статье будет рассмотрена подготовка среды, написание API, использование Gunicorn в качестве сервера WSGI, настройка Nginx в качестве обратного прокси-сервера и использование Systemd для управления службами.

1. Подготовьте среду

Установить Python

Если Python не установлен в вашей системе Linux, вы можете использовать следующую команду для его установки:

sudo yum update
sudo yum install python3 python3-pip
  • 1
  • 2

Установите необходимые библиотеки

Предполагая, что вы используете платформу Flask или Django, сначала установите необходимые библиотеки:

pip3 install flask  # 如果你使用的是 Flask
pip3 install django  # 如果你使用的是 Django
  • 1
  • 2

2. Напишите код API

Пример колбы

Создайте простой пример Flask API:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api', methods=['GET'])
def api():
    return jsonify({'message': 'Hello, World!'})

if __name__ == '__main__':
    app.run(host='0.0.0.0')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Пример Джанго

Создайте новый проект Django и добавьте API:

django-admin startproject myproject
cd myproject
django-admin startapp myapp
  • 1
  • 2
  • 3

существовать myapp/views.py Добавить представление API в:

from django.http import JsonResponse
def api(request):
    return JsonResponse({'message': 'Hello, World!'})
  • 1
  • 2
  • 3

существовать myproject/urls.py Настройте маршрутизацию URL-адресов в:

from django.contrib import admin
from django.urls import path
from myapp.views import api

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', api),
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. Способ 1 – Прямой запуск

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

python main.py 或者 nohup python main.py
  • 1
Пример Джанго:

У Django есть собственный сервер разработки, с которого вы можете начать:

python manage.py runserver 0.0.0.0:8000
  • 1

Рекомендуется использовать Gunicorn в производственной среде. Чтобы обеспечить производительность и стабильность приложения в производственной среде, рекомендуется использовать Gunicorn.Гуникорн В качестве сервера приложений отвечает за выполнение кода Python и управление несколькими процессами.

4. Способ 2. Настройка Gunicorn (сервер WSGI в производственной среде)

Установить Ганикорн

Установите Ганикорн:

pip3 install gunicorn
  • 1

Запустите приложение Flask

Запустите приложение Flask с помощью Gunicorn:

gunicorn --bind 0.0.0.0:8000 app:app
  • 1

Запустите приложение Джанго

Используйте Gunicorn для запуска приложений Django:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
  • 1

5. Используйте Nginx в качестве обратного прокси.

Установить nginx

Установите Нгинкс:

sudo yum install nginx
  • 1

Настроить Nginx

Редактировать файл конфигурации /etc/nginx/sites-available/default

server {
    listen 80;
    server_name your_domain_or_IP;

    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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Перезагрузите конфигурацию Nginx:

sudo systemctl restart nginx
  • 1

6. Используйте Systemd для управления Gunicorn

Создать файл службы Systemd

Создайте новый файл службы Systemd:

sudo vim /etc/systemd/system/myproject.service
  • 1

Добавить конфигурацию сервиса

Приложение колбы
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=your_user
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 app:app

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
Приложение Джанго

Воля ExecStart Измените строку на:

ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 myproject.wsgi:application
  • 1

Запустите и включите службу

Запустите и включите службу:

sudo systemctl start myproject
sudo systemctl enable myproject
  • 1
  • 2

7. Проверьте статус услуги

Убедитесь, что служба запущена:

sudo systemctl status myproject
  • 1

Таким образом, ваш Python API будет успешно развернут в среде Linux. Вы можете настроить конфигурацию по мере необходимости в соответствии с потребностями вашего конкретного проекта. Надеюсь, это подробное руководство было полезным!