기술나눔

Linux 환경에 Python 웹 서비스 배포

2024-07-12

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

여기에 이미지 설명을 삽입하세요.

"얘야, 우리 다시 만날 건 운에 달렸어. 모르는 척 하지 마. "오랜만이야"라고 떨지 말고..."

Python으로 작성된 백엔드 API를 Linux 환경에 배포하려면 아래의 세부 단계를 따르세요. 이 기사에서는 환경 준비, API 작성, Gunicorn을 WSGI 서버로 사용, Nginx를 역방향 프록시로 구성 및 Systemd를 사용하여 서비스 관리에 대해 설명합니다.

1. 환경 준비

파이썬 설치

Linux 시스템에 Python이 설치되어 있지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.

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 서버)

건니콘 설치

Gunicorn 설치:

pip3 install gunicorn
  • 1

플라스크 애플리케이션 실행

Gunicorn을 사용하여 Flask 애플리케이션을 실행합니다.

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

Django 애플리케이션 실행

Gunicorn을 사용하여 Django 애플리케이션을 실행합니다.

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

5. Nginx를 역방향 프록시로 사용

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 서비스 파일을 만듭니다.

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 환경에 성공적으로 배포됩니다. 특정 프로젝트 요구 사항에 맞게 필요에 따라 구성을 조정할 수 있습니다. 이 자세한 가이드가 도움이 되었기를 바랍니다.