Server/Linux

라즈베리파이 웹서버 구축 (Gunicorn + flask + nginx )

soccerda 2021. 5. 18. 10:30
반응형

https://soccerda.tistory.com/210

 

라즈베리파이 웹서버 구축(nginx, uWSGI , Flask, Python)

집에 구매해 놓고 1년 넘게 방치한 라즈베리파이 4를 한번 사용해보려고 서버를 구축하여 개인 프로젝트 진행해보려고 한다. 선행 단계로 raspberry pi OS 설치 apt update 를 해주면 된다. nginx 설치 sudo

soccerda.tistory.com

이전 글을 통해서 nginx, uWSGI, Flask로 웹서버를 구축해보았다.

 

 

uWSGI를 gunicorn으로 대체해보도록 하겠다.

 

gunicorn은 uWSGI에 비해 가볍다.

 

서버 사양이 좋지 않다면 gunicorn을 사용하는 것을 추천한다.

 

우선 가상환경에 들어가서 설치하자.

 

(venv) pip install gunicorn

 

first.py , wsgi.py 파일이 존재해야 한다. 없다면 이전 (https://soccerda.tistory.com/210) 글을 

 

gunicorn --bind 0.0.0.0:5000 wsgi:app

 

가상 환경에서 나오자

(venv) deactivate

 

 

다음으로는 서비스를 등록해서 자동으로 앱이 실행될 수 있도록 설정을 하자.

 

cd /etc/systemd/system

 

sudo nano myproject.service

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=pi
Group=www-data
WorkingDirectory=/home/pi/www/myproject
Environment="PATH=/home/pi/www/myproject/venv/bin"
ExecStart=/home/pi/www/myproject/venv/bin/gunicorn --workers 3 --bind unix:first.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

 

저장된 파일을 서비스에 등록

pi@raspberrypi:/etc/systemd/system $ sudo systemctl start myproject
pi@raspberrypi:/etc/systemd/system $ sudo systemctl enable myproject

 

nginx 설정

cd /etc/nginx/sites-available

sudo nano gunicornconfig

server {
    listen 80;
    server_name localhost;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/pi/www/myproject/first.sock;
    }
}

소프트링크

 

sudo ln -s /etc/nginx/sites-available/gunicornconfig /etc/nginx/sites-enabled/

 

/etc/nginx/sites-enabled/ 에 다른 파일이 있으면 삭제하자.

 

sudo service nginx restart

 

반응형