티스토리 뷰
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 버전을 통일해 주는 것이 중요하다.
버전이 다르면, 실행 되지 않고 에러가 발생한다.
이거 때문에 한참을 고생했다.
파이썬 친구들인 왠만해서 버전가지고 속 안썩이는데,
좀 고통스러웠다.
위 내용만 주의하고 실행한다면, 큰 문제는 없을 것이다.
- Total
- Today
- Yesterday
- python
- ubuntu
- 쉽게따라하기
- 티스토리
- MongoDB
- nestjs
- Redis
- ChartGPT
- 딥러닝
- svelte 따라해보기
- svelte
- ML
- GPT
- 클라우드
- 따라해보기
- 한식
- AI
- cloudcomputing
- DevOps
- lambda
- Containerization
- 실습
- 따라하기
- AWS
- EC2
- 개발이야기
- frontend
- typescript
- docker
- Docker 관리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |