ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라즈베리파이에 Nginx + uWSGI + Flask 설치하기.
    Python/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

     

    -----------

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

    반응형
Designed by Tistory.