[파이썬] Flask의 배포와 웹 서버 설정

Flask는 파이썬 웹 프레임워크로, 가벼우면서도 유연한 웹 애플리케이션 개발을 위해 많이 사용됩니다. 그러나 단순히 개발환경에서만 동작하는 것이 아니라, 실제 서비스로 배포하기 위한 설정과 웹 서버와의 연동도 필요합니다. 이번 글에서는 Flask 애플리케이션의 배포와 웹 서버 설정에 대해 알아보겠습니다.

1. 가상 환경 설정

Flask 애플리케이션을 배포하기 전에, 가상 환경을 활용하여 의존성을 격리하는 것이 좋습니다. 가상 환경을 설정하기 위해서는 venv 모듈을 사용할 수 있습니다. 아래는 가상 환경을 생성하는 명령어입니다.

python3 -m venv myenv

2. 애플리케이션 구조

Flask 애플리케이션을 배포하기 위해선, 애플리케이션의 구조를 잘 설계해야 합니다. 일반적으로 아래와 같은 구조로 설계됩니다.

myapp/
    app/
        __init__.py
        routes.py
    myapp.py

3. 웹 서버 설정

Flask 애플리케이션을 배포하기 위해서는 웹 서버와의 연동이 필요합니다. 가장 많이 사용되는 웹 서버는 NginxGunicorn입니다.

아래는 Flask 애플리케이션을 Nginx와 Gunicorn으로 연동하는 설정 파일의 예시입니다.

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        include proxy_params;
        proxy_pass http://unix:/path/to/myapp.sock;
    }
}

4. 배포 스크립트

마지막으로, Flask 애플리케이션을 실제로 배포하기 위한 스크립트를 작성해야 합니다. 배포 스크립트는 가상 환경 설정, 애플리케이션 실행, 웹 서버 설정 등을 자동으로 수행할 수 있도록 구성됩니다.

아래는 배포 스크립트의 예시입니다.

#!/bin/bash

# 가상 환경 설정
source myenv/bin/activate

# 애플리케이션 실행
gunicorn -w 4 myapp:app -b 0.0.0.0:5000

# 웹 서버 설정
sudo cp myapp.conf /etc/nginx/conf.d/
sudo service nginx restart

위 스크립트는 가상 환경을 활성화한 후, Gunicorn으로 애플리케이션을 실행하고, Nginx 설정 파일을 복사하고 서비스를 재시작합니다.

이제 Flask 애플리케이션을 배포하고 웹 서버와의 연동을 설정하는 방법에 대해 알아보았습니다. 정확한 설정은 실제 상황과 요구사항에 따라 다르게 적용될 수 있으니, 참고용으로 활용해 주세요.