Nginx와 Gunicorn으로 Flask앱 배포하기(2)

5. Gunicorn을 Nginx와 연결시키기

5-1. 들어가기 전에

우선 nginx의 디렉토리 구조를 이해할 필요가 있다.
나도 자세히는 이해하지 못했기 때문에 우선 이해한 만큼만 적어본다.
여기서는 두 개만 알면 된다.

  • /etc/nginx/sites-available/ : 여기서 설정 파일을 만들어서 수정한다.
  • /etc/nginx/sites-enabled/ : sited-available 디렉토리의 설정 파일이 이 디렉토리의 파일과 link되어 nginx에 적용된다.

정리하자면, 설정파일을 우리가 생성하고 수정할 때는 sites-available에 있는 파일을 건드리고 sites-enabled의 파일은 직접 건드리지 않는다.
그런데 nginx는 sites-enabled를 찾아보지 sites-available을 찾아보지 않는다.
그래서 sites-available에서 수정한 파일을 sites-enable의 파일과 링크시켜서 수정 사항이 반영되도록 한다.
(그런데 참고한 영상에서는 바로 sites-enabled의 파일을 수정하던데 별 상관 없는건가 싶기도 하다)

5-2. nginx의 설정 파일 생성하기

/etc/nginx/sites-available/에 새 설정 파일을 만들어준다.

a. 기존의 파일(default)을 삭제하고 내 것(myflask)으로 다시 만들어준다.

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/myflask

b. 에디터로 열어서 다음의 내용을 작성하고 저장한다.

sudo nano /etc/nginx/sites-available/myflask 로 파일을 열어준다.

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name 0.0.0.0;
	location / {
		include proxy_params;
		proxy_pass http://unix:/home/sammy/myproject/myproject.sock; // gunicorn service 파일에서 socket 파일의 경로
	}
}

내 경우 proxy_pass는 http://unix:/home/userme/myproject/myflask.sock 이다.

5-3. sites-available의 파일과 sites-enabled의 파일을 연결시키기

두 디렉토리의 서로 다른 파일 사이에 심볼릭 링크를 생성해서 연결시키는 작업을 해준다.

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

ln : link, -s : symbolic

5-4. 마무리 작업

마지막으로 해당 설정 파일에 문법 오류가 없는지 체크하고, 아무 문제가 없으면 nginx를 재시작한다.

sudo nginx -t  // 문법 오류 체크
sudo systemctl restart nginx

5-5. 접속해서 확인하기

이제 원격 IP 주소로 접속해서 잘 뜨는지 확인하면 끝!

5-6. 정상 작동하지 않는다면

만약 여기서 잘 안되면 방화벽을 확인해보자. 가상머신의 네트워킹도 확인해보면서 이것저것 시도해보자!

sudo ufw app list
sudo ufw allow 'Nginx Full'  // HTTP, HTTPS 모두 접근 허용
sudo ufw status

좋은 웹페이지 즐겨찾기