2021. 4. 6. 23:56ㆍit
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 버전을 통일해 주는 것이 중요하다.
버전이 다르면, 실행 되지 않고 에러가 발생한다.
이거 때문에 한참을 고생했다.
파이썬 친구들인 왠만해서 버전가지고 속 안썩이는데,
좀 고통스러웠다.
위 내용만 주의하고 실행한다면, 큰 문제는 없을 것이다.
'it' 카테고리의 다른 글
window 시간 동기화 방법 ( 한국 표준 시 ) (0) | 2021.04.07 |
---|---|
node.js 백그라운드 실행 - forever (0) | 2021.04.07 |
Windows 에서 Flask + Apache 연동 (0) | 2021.04.03 |
AWS Lambda, Python Import Library ( 한글 ) (0) | 2021.04.02 |
무료 리눅스(centos/ubuntu) 서버 사용하기 ( 오라클 클라우드 ) (0) | 2021.04.02 |