Web/flask
[Flask] 01. Python, Apache를 연동해서 Python 웹애플리케이션을 구동하는 방법
moomyung_s
2018. 5. 8. 00:17
환경
Ubuntu 16.04
Python3 3.5.2
아파치 웹서버 설치
1 2 | sudo apt-get update sudo apt-get install apache2 | cs |
웹서버가 설치된 컴퓨터의 IP 주소가 알고 싶다면 콘솔창에서 아래 명령을 실행합니다.
1 | hostname -I | cs |
아파치 index.html 페이지가 잘 나오는지 확인
Apache와 Python을 CGI로 연동하는 방법
Apache 웹서버가 동작하는 방법을 변경하기 위해서 설정 파일을 편집합니다.
1 | sudo vi /etc/apache2/sites-enabled/000-default.conf | cs |
원본 000-default.conf 파일
Document root(웹서버가 요청한 파일을 찾는 최상위 디렉토리)에 있는 파일 중 확장자가 py인 파일은 Python으로서 시행 되도록 합니다. 추가한 내용은 4~7행입니다.
1 2 3 4 5 6 7 8 9 10 | <VirtualHost *:80 *:3000> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html> AddHandler cgi-script .py Options ExecCGI </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> | cs |
수정본 000-default.conf 파일
cgi가 동작하도록 cgi 기능을 켜고 웹서버를 재시작합니다.
1 2 | sudo a2enmod cgi sudo service apache2 restart | cs |
helloword.py 파일의 권한이 실행 권한 있는지 확인 후 접속!
오류가 발생하면 오류 메시지를 확인해봅니다.
1 2 | sudo tail /var/log/apache2/error.log sudo tail -f /var/log/apache2/error.log | cs |
-f 옵션을 이용하면 실시간으로 에러를 확인할 수 있다.
웹브라우저에 header값을 줘야하는데 malformed 형식에 문제가 있다라는 의미.
해결하기 위해서는 .py 파일에 content-type과 charset 내용을 추가해야 함.
잘 동작됨
CGI 소개
CGI의 핵심은 웹서버가 사용자의 요청을 받았을 때 그 요청과 관련해서 웹 애플리케이션이 어떤 처리를 할 수 있도록 QUERY_STRING과 같은 약속되어 있는 이름의 데이터를 환경 변수라는 형태로 전달해 주는 것이다.
중요한 것은 CGI는 언어와는 상관없이 웹서버와 언어들 사이에 서로 약속이다.