Ubuntu+Apache2+Flask 배포/관리

2020. 8. 20. 15:02개발노트

Apache와 WSGI를 함께 쓰는 이유

Flask만 사용해도 Flask에서 제공하는 WSGI를 이용해 서버를 배포

하지만 WSGI는 미들웨어의 개념이라 서버로서 동작하기보다는 웹 앱에 가깝기 때문에

서버의 역할을 수행하는 Apache를 함께 사용, 성능 향상을 위해 사용

  • Apache는 정적인 웹 페이지를 제공
  • WSGI는 동적인 페이지 제공과 추가적인 기능들을 제공

Apache 환경 설정

/etc/apache2/sites-available/000-default.conf

위 경로를 따라가서 '.conf'파일을 수정

<VirtualHost *:포트번호>
# Flask 프로세스 사용자권한 설정 및 user group, thread 설정
WSGIDaemonProcess Test python-path=/etc/anaconda3/lib/python3.6/site-packages lang='ko_KR.UTF-8' locale='ko_KR.UTF-8' threads=5
        
        # URL "/" 접근시 먼저 run.wsgi 설정 참조
        WSGIScriptAlias / /var/www/Test/test.wsgi
        # 파일 경로
        <Directory /var/www/Test>
                WSGIProcessGroup Test
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

사용할 포트 번호를 입력,

Flask 프로세스 사용자권한 설정 및 user group, thread, '. wsgi'파일 경로를 입력


WSGI 파일 설정

import sys
sys.path.insert(0,"/var/www/Test")
from main import app as application

path에 WSGI파일이 위치한 경로를 입력

from 실행할.py파일이름 import app as application 같이 입력


아파치 명령어

우분투 (서비스명: apache2)  
상태 확인 service apache2 status
아파치 시작 service apache2 start
아파치 정지 service apache2 stop
아파치 재시작 service apache2 restart
아파치 리로드 service apache2 reload