Flask(웹 어플리케이션)과 Nginx(웹 서버)를 uWSGI(WSGI 인터페이스)를 이용하여 서로 연결하여 서비스를 할 수 있습니다.
WSGI(Web Server Gateway Interface)
- 웹서버와 웹 어플리케이션이 어떤 방식으로 통신하는가에 관한 인터페이스를 의미
- 웹서버와 웹어플리케이션 간의 소통을 정의해 어플리케이션과 서버가 독립적으로 운영될 수 있게 돕는다.
- WSGI 어플리케이션은 uWSGI라는 컨테이너에 담아 어플리케이션을 실행하게 되며, uWSGI가 각각의 웹서버와 소통하도록 설정하면 끝이다. Flask, django와 같은 프레임워크는 이미 WSGI 표준을 따르고 있기 때문에 바로 웹서버에 연결해 사용할 수 있다.
- WSGI는 파이썬 표준이며, 서버에서 들어온 요청에 맞춰서 파이썬 웹 어플리케이션에 미리 등록된 로직을 콜백 함수로 서버에 응답해줍니다. 여기서 WSGI 인터페이스에 맞춰서 제작된 프레임워크가 uWSGI입니다.
오래된 uwsgi를 삭제한다.
mv /usr/bin/uwsgi /usr/bin/uwsgi-old
새롭게 uwsgi를 설치해준다.
pip install uwsgi
ln -s /usr/local/bin/uwsgi /usr/bin/uwsgi
uwsgi로 해당 어플리케이션을 실행한다.
uwsgi -s /tmp/uwsgi.sock --module yourapplication --callable app --venv .venv
파라미터를 매번 입력하기 번거로우므로 다음과 같으 ini파일을 작성해 저장해 놓고 실행 할 수 있다.
[uwsgi]
chdir=/home/ubuntu/helloWorld
chmod-socket=666
callable=app
module=app
socket=/tmp/uwsgi.sock
virtualenv=/home/ubuntu/helloWorld/.venv
윗 처럼 작성한 후 다음 명령어로 실행한다.
uwsgi <filename> &
https://edykim.com/ko/post/connecting-flask-uwsgi-to-nginx/(출처)
nginx
- nginx는 기존의 apache같은 웹 서버입니다. 기존 apache 서버와 다른 점은 nginx 는 비동기 이벤트 기반으로 만들어졌고, apache 서버는 동기식, 프로세스 또는 쓰레드 기반으로 만들어졌습니다.
apache서버에 비해서메모리를 적게가져간다는 장점이 있습니다.
apt-get을 통해 설치
apt-get install nginx-full
/etc/nginx/sites-available/default 파일을 열어 설정을 해준다.
server {
listen 8080;
server_name helloworld.haruair.com;
location / {
try_files $uri @helloworld;
}
location @helloworld {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
위 설정을 통해 nginx로 들어오는 모든 요청을 uWSGI로 보내고
또 돌려받아 nginx를 통해 클라이언트에 전달하게 된다. nginx를 재구동하면 적용된다.
/etc/init.d/nginx restart
https://medium.com/sunhyoups-story/flask-nginx-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-258b979d2de3
Flask + Nginx 설치 방법
Flask와 Nginx를 uWSGI를 이용하여 연결해봅시다
medium.com
차이점 Apache vs Nginx
https://youngmind.tistory.com/entry/Apache-vs-Nginx
Apache vs Nginx
Apache vs Nginx Apache와 Nginx는 현재까지 가장 폭넓게 사용되는 2가지의 오픈소스 웹서버이다. 2가지 솔루션들은 현재 전체 웹서비스의 50% 이상을 차지할 정도로 프론트엔드에서 사랑받고 있다. 이�
youngmind.tistory.com
정적 컨텐츠와 동적 컨텐츠의 차이점은 무엇입니까
https://presmarymethuen.org/ko/dictionary/what-is-the-difference-between-static-and-dynamic-content/
정적 컨텐츠와 동적 컨텐츠의 차이점은 무엇입니까
집 / 질문 / 정적 컨텐츠와 동적 컨텐츠의 차이점은 무엇입니까 정적 컨텐츠와 동적 컨텐츠의 차이점은 무엇입니까 대답 1: 정적 콘텐츠는 사이트를 방문하는 모든 사람에게 동일한 콘텐츠입니��
presmarymethuen.org
sqlarchemy
- Python의 객체에 데이터 모델을 정의하고 이를 데이터베이스와 매핑해주는 것을 ORM(Object Relaition Model)이라고 합니다. 덕분에 코드는 특정 데이터베이스에 종속되지 않고, 기본 객체 만으로 데이터를 기술할 수 있기 때문에 조금 더 OOP 스러운 코드를 작성할 수 있습니다.
Python에서 ORM으로 많이 쓰이는 것 중 SQLAlchemy가 있는데, 이를 Flask에서 플러그인 처럼 사용하기 쉽게 만들어진 Flask-SQLALchemy가 있습니다.
패키지 설치
(venv) PS flask_blog> pip install flask_sqlalchemy
https://opentutorials.org/module/3669/22070
데이터베이스 - Flask로 만드는 블로그
이전 시간에 우리는 부트스트랩을 이용해서 어플리케이션의 디자인을 조금 세련되게 변경했습니다. 이번에는 사용자와 게시물에 대한 정보를 저장하기 위한 데이터베이스를 만들어보도록 하��
opentutorials.org
':: IT > flask' 카테고리의 다른 글
[flask] Flask-Login (0) | 2020.08.05 |
---|---|
[flask] jinja2 {% include %} 활용 (0) | 2020.07.23 |
[flack] aws : CURRENT_USER/HTTP 요청 전후에 호출되는 데코레이터/ is_authenticated 소개 및 예시/render_template 사용법 (0) | 2020.07.22 |
[flask] 내부 링크 만들기 -url_for() (0) | 2020.07.22 |