Python/Flask

라즈베리파이에 Nginx + uWSGI + Flask 설치하기.

컴닥 2019. 8. 18. 15:04
반응형

1. 라즈베리 파이에 raspbian 설치

다운로드 링크 : https://www.raspberrypi.org/downloads/raspbian/

지금 현재 가장 최신 버전 2019-07-10 설치. 

용량에 따라 3가지 버전이 있음.

데스크탑 환경이 편한 취미 개발자이며, 추천 소프트웨어까지는 필요 없을 듯 하여 Raspbian Buster with desktop 사용. 

마이크로 SD 카드는 8기가 이용. rufus를 이용해 카드에 라이팅함. 

2. 내장된 파이썬 버전 확인

pi@raspberrypi:~ $ python3 -V
Python 3.7.3

최신 버전이라 업그레이드는 패스.

붙여넣기 단축키: ctrl + shift + v

3. pip 업그레이드 (필요 없음)

pi@raspberrypi:~ $ sudo pip3 install --upgrade pip

또는

pi@raspberrypi:~ $ sudo python3 -m pip install --upgrade pip

4. 소스 폴더에 가상환경 생성

python3 -m virtualenv venv 

또는

virtualenv venv

5. virtualenv 실행

. venv/bin/activate

6. 플라스크 설치 (venv 실행 후라...)

pip install flask

7. uWSGI 설치

pip install uWSGI

8. 설치 확인

pip list

9. nginx 설치

sudo apt install nginx

10. test.py 파일 작성

# test.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

11. test.py 파일 실행

venv 상에서 python3 test.py

12. curl 확인

curl http://127.0.0.1:5000

13. uwsgi 실행

콜러블에 app = Flask(__name__) 에서 지정한 앱이름을 넣어야 한다. (application이면 생략가능.)

uwsgi --socket 0.0.0.0:5000 --protocol=http --wsgi-file test.py --callable app --processes 4

14. 5000 포트로 확인

curl http://localhost:5000

15. uwsgi 실행시 명령어가 너무 길다.

myproject/uwsgi.ini 파일을 만들어서 관리하면 편리하다.

[uwsgi]
module = test:app
master=true
processes=4
socket = test.sock
chmod-socket = 666
vacuum = true
die-on-term = true

16. ngnix default 파일 설정

$ sudo nano /etc/nginx/sites-available/default

server {
   listen 80;
   server_name server_domain_or_IP;
   location / { try_files $uri @app; }
   location @app {
     include uwsgi_params;
     uwsgi_pass unix: /home/pi/www/test/test.sock;
   }
}

[설정코드 ; 빠트리지 ]

 

17. nginx 재구동

$ sudo /etc/init.d/nginx restart

18. uwsgi 실행

pi@raspberrypi:~/www/test $ uwsgi --ini uwsgi.ini

 

-----------

왠지 모르게 힘들었다 ㅠ,.ㅠ 

반응형