Flask 배포 가이드: 개발 환경과 배포 환경 설정
Flask는 Python 기반의 마이크로 웹 프레임워크로, 간단한 설정으로도 강력한 웹 애플리케이션을 개발할 수 있습니다. 하지만 개발 환경과 배포 환경은 서로 다르기 때문에 각각의 환경에 적합한 설정이 필요합니다. 이번 포스팅에서는 Flask 애플리케이션을 배포하기 위한 기본 설정과 배포 환경 구축 방법을 단계별로 알아보겠습니다.
1. 개발 환경 설정
가상 환경 설정
개발 환경에서는 Python 가상 환경(Virtual Environment)을 사용하는 것이 권장됩니다. 가상 환경은 프로젝트별로 의존성을 관리할 수 있도록 도와줍니다.
가상 환경 생성 및 활성화
# 가상 환경 생성
python -m venv venv
# 가상 환경 활성화 (Windows)
venv\Scripts\activate
# 가상 환경 활성화 (Mac/Linux)
source venv/bin/activate
Flask 설치
가상 환경이 활성화된 상태에서 Flask를 설치합니다.
pip install flask
requirements.txt 생성
프로젝트의 의존성을 기록하기 위해 requirements.txt
파일을 생성합니다.
pip freeze > requirements.txt
Flask 애플리케이션 작성
간단한 Flask 애플리케이션 예제를 작성해보겠습니다.
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, Flask!"
if __name__ == "__main__":
app.run(debug=True)
로컬 실행
python app.py
애플리케이션이 실행되면, 브라우저에서 http://127.0.0.1:5000
으로 접속해 결과를 확인할 수 있습니다.
2. 배포 환경 설정
개발 환경에서는 Flask의 기본 개발 서버를 사용하지만, 배포 환경에서는 더 안전하고 확장 가능한 WSGI 서버를 사용해야 합니다. 여기서는 Gunicorn과 Nginx를 사용한 배포 설정 방법을 설명합니다.
Gunicorn 설치
Gunicorn은 WSGI(Web Server Gateway Interface)를 지원하는 Python 애플리케이션 서버입니다.
pip install gunicorn
Gunicorn 실행
애플리케이션을 실행하여 Gunicorn이 제대로 작동하는지 확인합니다.
gunicorn -w 4 -b 0.0.0.0:8000 app:app
위 명령은 4개의 워커(worker) 프로세스를 사용하여 애플리케이션을 0.0.0.0:8000
에서 실행합니다.
Nginx 설정
Nginx는 HTTP 요청을 Gunicorn으로 전달하고, 정적 파일을 제공하는 역할을 합니다.
Nginx 설치
sudo apt update
sudo apt install nginx
Nginx 설정 파일 생성
/etc/nginx/sites-available/flask_app
파일을 생성합니다.
server {
listen 80;
server_name your_domain.com;
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;
}
location /static/ {
alias /path/to/your/static/files/;
}
}
심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/flask_app /etc/nginx/sites-enabled
Nginx 재시작
sudo systemctl restart nginx
Supervisor로 Gunicorn 관리
Supervisor는 Gunicorn 프로세스를 관리하는 데 사용됩니다.
Supervisor 설치
sudo apt install supervisor
설정 파일 생성
/etc/supervisor/conf.d/flask_app.conf
파일을 생성합니다.
[program:flask_app]
command=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
directory=/path/to/your/project
autostart=true
autorestart=true
stderr_logfile=/var/log/flask_app.err.log
stdout_logfile=/var/log/flask_app.out.log
user=your_user
Supervisor 재시작
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start flask_app
3. 배포 후 점검 사항
- 도메인 연결: Nginx 설정에서
server_name
에 도메인을 추가합니다. - HTTPS 설정: Let’s Encrypt를 사용하여 SSL 인증서를 설정합니다.
- 로그 확인: 애플리케이션의 로그를 정기적으로 확인하여 오류를 점검합니다.
- CI/CD 구성: 배포 자동화를 위해 GitHub Actions와 같은 도구를 활용할 수 있습니다.
이로써 Flask 애플리케이션을 안전하게 배포하는 방법을 알아보았습니다. 배포 환경을 잘 관리하면 애플리케이션의 성능과 안정성을 크게 향상시킬 수 있습니다.
'Python > Python Flask' 카테고리의 다른 글
Flask 애플리케이션 Docker로 배포하기 (0) | 2025.09.20 |
---|---|
Flask 애플리케이션 배포: Gunicorn 및 Nginx를 활용한 배포 방법 (0) | 2025.09.19 |
Flask-Caching으로 애플리케이션 성능 최적화하기 (0) | 2025.09.17 |
Flask-Mail을 사용하여 이메일 전송하기 (0) | 2025.09.16 |
Flask-Admin으로 관리 페이지 만들기 (0) | 2025.09.15 |