티스토리 뷰

Dev Story/Flask

Flask + Apache 연동 (ubuntu)

jeonguram 2021. 4. 7. 17:30
728x90

 
Flask는 Python web framewark 중 하나다.
 
사용이 간편해, 가벼운 api 서버로 사용하기에 안성 맞춤이다.
 
하지만, Python의 고질적인 문제이자, Flask의 문제인...
 
Multi Thread 의 약점 때문에, 이를 활용해 프로젝트를 수행하는 경우, 이슈로 제기 된다.
 
이러한 약점을 보안하기 위해, 많은 Flask 개발자들은 Apache 서비스와 함께 사용한다.
 
그래서 금일은 Flask와 Apache web 서비스를 연동하는 방법에 대해 알아 보겠다.  
 
0. 본 환경은 ubuntu 20 버전이다.
- ubuntu 18 버전에서 무난히 잘 된다.
 
1. 먼저 필요한 패키지를 설치한다.
$ sudo add-apt-repository universe
$ sudo apt-get update
$ sudo apt-get install python3-pip
$ sudo apt install apache2
$ sudo apt install libapache2-mod-wsgi-py3
 
2. Flask를 설치한다.
$ pip3 install flask
 
3. Flask 실행 경로를 만들어 준다
$ mkdir /flask
 
4. Flask의 권하늘 부여한다. ( ubuntu는 현재 내가 사용하는 user id/user group 이다 )
$ sudo chown -fR ubuntu:ubuntu flask
 
5. ubuntu에 해당 경로가 있는지 확인한다.
$ cd /etc/apache2/sites-available
$ cd /var/www
 
6. Flask 에 링크를 걸어준다.
$ sudo ln -s /flask
 
7. Flask 로 이동하고, 디렉토리를 구성해준다.
$ cd flask
$ mkdir app
$ mkdir wsgi
 
8. Flask conf 파일을 만들어 준다.
$ cd /etc/apache2/sites-available/
$ sudo vi flask.conf
<VirtualHost *:80>
       ServerName localhost
       WSGIDaemonProcess flaskApp user=ubuntu group=ubuntu threads=5 maximum-requests=10
       WSGIScriptAlias / /var/www/flask/wsgi/mod.wsgi
       DocumentRoot /var/www/flask
       <Directory /var/www/flask>
                WSGIProcessGroup flaskApp
                WSGIApplicationGroup %{GLOBAL}
                Order deny,allow
                Allow from all
       </Directory>
</VirtualHost>
 
9. wsgi를 작성해준다.
$ cd /flask/wsgi
$ vi mod.wsgi
import sys
sys.path.insert(0, '/var/www/flask/app')
from flaskApp import app as application
 
10. app를 작성해 준다. ( 실질적으로 실행되는 파일 )
$ cd ..
$ cd app
$ vi flaskApp.py
from flask
import Flask
app = Flask(__name__)
@app.route("/")
def index():
     return "hello World!"
 
11. Flask conf 파일을 우리가 작성한 conf로 바꿔준다.
$ sudo a2dissite 000-default
$ sudo a2ensite flask
$ sudo service apache2 restart
 
12. 방화벽을 풀어준다.
$ sudo ufw allow 80
 
13. 접속을 해본다.
http://123.456.789.123:80
 
 
 
flask와 wsgi의 python 버전을 통일해 주는 것이 중요하다.
 
버전이 다르면, 실행 되지 않고 에러가 발생한다.
 
이거 때문에 한참을 고생했다.
 
파이썬 친구들인 왠만해서 버전가지고 속 안썩이는데,
 
좀 고통스러웠다.
 
위 내용만 주의하고 실행한다면, 큰 문제는 없을 것이다.

728x90
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함