파이썬과 아파치 연동하는 방법은?

Python과 Apache HTTP 서버를 연동하여 웹 애플리케이션을 배포하는 방법으로는 WSGI(Web Server Gateway Interface) 모듈을 사용하는 방법이 일반적입니다. Apache에서는 mod_wsgi 모듈을 사용하여 Python 애플리케이션을 실행할 수 있습니다. 여기서는 Python Flask 애플리케이션을 Apache 서버와 연동하는 과정을 설명하 겠습니다.

1. 환경 준비

  • Python이 설치되어 있어야 하고, Flask 같은 Python 웹 프레임워크가 필요합니다.
  • Apache 서버가 설치되어 있어야 하며, Apache에 mod_wsgi 모듈을 추가로 설치해야 합니다.

2. mod_wsgi 설치

먼저 mod_wsgi를 설치합니다. Ubuntu를 사용하고 있다면, 다음 명령어로 설치할 수 있습니다.

bash
sudo apt-get update
sudo apt-get install libapache2-mod-wsgi-py3

설치가 완료되면 Apache 서버에 mod_wsgi가 추가됩니다.

3. Flask 애플리케이션 준비

Flask 애플리케이션을 준비합니다. 예를 들어, my_flask_app이라는 Flask 프로젝트 디렉토리 안에 app.py 파일을 생성하여 기본적인 Flask 애플리케이션을 작성합니다.

디렉토리 구조

my_flask_app/
├── app.py # Flask 애플리케이션 메인 파일
├── myapp.wsgi # WSGI 파일 (Apache가 Flask 앱을 인식하도록 함)
└── templates/ # HTML 파일들이 저장되는 폴더
└── index.html

p.py 예제

from flask import Flask

app = Flask(__name__)

@app.route(‘/’)
def hello():
return “Hello, World! This is served by Apache and Flask.”

if __name__ == “__main__”:
app.run()


4. WSGI 파일 생성 (myapp.wsgi)

Apache 서버가 Flask 애플리케이션을 인식할 수 있도록 WSGI 파일을 생성합니다. my_flask_app 디렉토리 내에 myapp.wsgi 파일을 작성합니다.

import sys
import os
from app import app as application

# 애플리케이션 경로 설정
sys.path.insert(0, os.path.dirname(__file__))

5. Apache 설정 파일 수정

Apache 설정 파일을 수정하여 Flask 애플리케이션을 서비스하도록 설정합니다. 이 설정 파일은 보통 /etc/apache2/sites-available/000-default.conf 또는 새로 구성한 VirtualHost 파일입니다.

Apache 설정 예시

Apache 설정 파일에 다음과 같은 구성을 추가합니다.

<VirtualHost *:80>
ServerName myflaskapp.com # 도메인 이름 (또는 IP 주소)

WSGIDaemonProcess myapp python-path=/path/to/my_flask_app python-home=/path/to/venv
WSGIScriptAlias / /path/to/my_flask_app/myapp.wsgi

<Directory /path/to/my_flask_app>
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

  • WSGIDaemonProcess: python-path는 Flask 애플리케이션이 있는 경로를 지정하고, python-home은 Python 가상 환경 경로를 지정합니다.
  • WSGIScriptAlias: Apache가 요청을 myapp.wsgi 파일로 전달하도록 설정합니다.

6. Apache 서버 재시작

설정 파일을 저장한 후, Apache 서버를 재시작하여 변경사항을 적용합니다.

bash
sudo service apache2 restart

7. 접속 확인

웹 브라우저에서 http://your-domain.com 또는 http://your-server-ip로 접속하여 Flask 애플리케이션이 정상적으로 Apache를 통해 서비스되는지 확인합니다.

이 과정이 완료되면 Apache 서버와 Python Flask 애플리케이션이 연동되어, Apache를 통해 Python 웹 애플리케이션을 서비스할 수 있습니다.