본문 바로가기

개발/Flask, Fastapi

flask+uwsgi+nginx 로컬에 띄우기

 

 

 

useradd www-data 로 유저를 추가한다.

passwd user 로 비밀번호를 설정한다.

usermod -a -G www-data www-data (앞에가 그룹, 뒤에가 유저다)
www-data 유저와 그룹을 만드는 이유는 www-data 유저와 그룹이 nginx 소켓 파일을 소유하기 때문이다.

chmod -R 777 [디렉토리] 로 작업 폴더의 권한을 그룹 유저와 다른 유저에게도 디렉토리 안의 파일에 읽기, 쓰기, 실행 권한까지 준다.

nginx conf 파일을 수정해준다. 

server {
    location / {
    include uwsgi_params;
    }

    location /hello {
    include uwsgi_params;
    }
}

같이 사이트의 하위 주소를 명기한다.


다음은 Flask, uWsgi, nginx 가 각각 잘 되는지 3단계로 나누어 확인할 차례다.

1. Flask 가 잘 뜨는지 확인
python wsgi.py (uwsg를 실행하는 파이썬 파일)

2. uWsgi가 잘 되는지 확인
uwsgi --http:[port number] --wsgi-file wsgi.py (uwsg를 실행하는 파이썬 파일)

3. run_uwsgi.ini 파일에 http=:[port number] 를 추가해준다.
uwsgi --ini run_uwsgi.ini

 

오류해결

invalid request block size: 21573 (max 4096)...skip -> 커맨드라인에 -b 32678 을 추가한다.

!!! no internal routing support, rebuild with pcre support !!! -> uWsgi를 다시 설치한다.

도커 컨테이너로 띄운 상황에서 파일 실행 시 로컬 포트와 http 포트가 같지 않을 때 (로컬 포트가 + 1 될때) ->
docker stop [기존컨테이너]   (기존 컨테이너 멈추기)
docker commit [기존컨테이너] [새 컨테이너 이름]  (기존 컨테이너를 이미지로 커밋)
docker run --privileged --name [예전 컨테이너 이름] -v/sys/fs/cgroup:/sys/fs/cgroup:ro -p [port number]:[port number] -d [새 컨테이너 이름]  (기존 컨테이너 이미지를 불러와 새 privileged 컨테이너를 만들고 로컬 포트와 http 포트가 같을 수 있도록 설정)