본문 바로가기
개발자모드/혼자공부하는파이썬

[파이썬/장고#36] 웹 서버 Nginx 설치 및 설정 방법

by 요니L 2022. 10. 24.

 

 

웹 서버 Nginx를 설치하고 사용해 보자. Nginx는 높은 성능을 목적으로 개발한 웹 서버로 파이썬 웹 프레임워크인 장고나 플라스크에서 주로 사용한다. Nginx를 사용하려면 환경설정이 필요하다.

 


Nginx 설치하고 설정하기

 

(1단계) Nginx 설치하기 

 

Nginx를 다음과 같이 설치한다.

 

MobaXterm_Personal_22.1.exe 실행 (경로: D:\app\python\install\MobaXterm_Portable_v22.1)

ubuntu@ip-172-26-8-122:~$ mysite
(mysite) ubuntu@ip-172-26-8-122:~/projects/mysite$ sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
  libjpeg-turbo8 libjpeg8 libnginx-mod-http-image-filter
  libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5
  libwebp6 libxpm4 nginx-common nginx-core
Suggested packages:
  libgd-tools fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
  fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0
  libjpeg-turbo8 libjpeg8 libnginx-mod-http-image-filter
  libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5
  libwebp6 libxpm4 nginx nginx-common nginx-core
0 upgraded, 17 newly installed, 0 to remove and 105 not upgraded.
Need to get 2434 kB of archives.
After this operation, 7893 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal/main amd64 fonts-dejavu-core all 2.37-1 [1041 kB]
Get:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal/main amd64 fontconfig-config all 2.13.1-2ubuntu3 [28.8 kB]
Get:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal/main amd64 libfontconfig1 amd64 2.13.1-2ubuntu3 [114 kB]
Get:4 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 libjpeg-turbo8 amd64 2.0.3-0ubuntu1.20.04.3 [118 kB]
...
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.7) ...
(mysite) ubuntu@ip-172-26-8-122:~/projects/mysite$

 

 

(2단계) Nginx 설정하기 

 

Nginx에서 동적 페이지를 요청하면 WSGI 서버를 호출하도록 설정한다. /etc/nginx/sites-available 디렉터리로 이동해서 파이보(게시판 서비스)를 사용할 수 있도록 Nginx의 설정 파일을 mysite라는 이름으로 작성한다. 이 역시 시스템 디렉터리이므로 관리자 모드로 작성한다.

 

(mysite) ubuntu@ip-172-26-8-122:~/projects/mysite$ cd /etc/nginx/sites-available
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-available$ sudo nano mysite

 

# /etc/nginx/sites-available/mysite

server {
        listen 80;
        server_name 3.35.154.72;

        location = /favicon.ico { access_log off; log_not_found off; }

        location /static {
                alias /home/ubuntu/projects/mysite/static;
        }

        location / {
                include proxy_params;
                proxy_pass http://unix:/tmp/gunicorn.sock;
        }
}

내용을 입력하고 [Ctrl+O]를 눌러서 파일을 저장한 뒤 [Ctrl+X]를 눌러서 편집기를 종료한다.

 

 

▶ listen 80

HTTP 프로토콜의 기본 포트는 80이므로 listen 80 과 같이 웹 서버를 80번 포트로 서비스하도록 설정했다. 앞으로 3.35.154.XX:8000 에서 포트 번호를 생략한 3.35.154.XX로 접속해도 서비스에 접속할 수 있다.

 

server_name

server_name에는 고정IP를 등록한다.

 

location /static

location /static은 정적 요청에 따른 설정으로 /static으로 시작하는 URL 요청을 받으면 Nginx가 /home/ubuntu/projects/mysite/static 디렉터리의 파일을 읽어 처리한다는 설정이다.

 

 location /

location /은 /static으로 시작하는 URL 이외의 모든 요청은 Gunicorn이 처리한다는 동적 요청에 대한 설정이다. proxy_pass는 Gunicorn의 유닉스 소켓 경로이다. 

 

 

(3단계) Nginx가 mysite 파일을 환경 파일로 읽을 수 있도록 설정하기 

 

mysite 파일을 Nginx가 환경 파일로 읽을 수 있도록 설정해야 한다. /etc/nginx/sites-enabled 디렉터리로 이동하자. sites-enabled 디렉터리는 site-available 디렉터리에 있는 설정 파일 중에서 활성화하고 싶은 것을 링크로 관리하는 디렉터리이다. 

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-available$ cd /etc/nginx/sites-enabled
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ ls
default
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$

 

 

(4단계) mysite 파일 링크하기

 

먼저 default 링크를 삭제한다. 

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo rm default
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ ls
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$

 

그리고 mysite 파일을 링크한다. ls 명령을 수행하면 default는 사라지고 mysite 링크만 남은 것을 확인할 수 있다.

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo ln -s /etc/nginx/sites-available/mysite
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ ls
mysite
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$

 

 


Nginx 실행해 보기

 

 

(1단계) Nginx 다시 시작하기 

 

Nginx는 설치할 때 자동으로 실행되므로 앞에서 작성한 Nginx 설정을 적용하려면 Nginx를 다음처럼 다시 시작해야 한다. 

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo systemctl restart nginx

 

※ 혹시 Nginx 설정 파일에 오류가 발생했다면?

아래 명령을 수행할 때 오류가 발생하면 설정 파일이 올바르지 않은 것이므로 Nginx 서버가 정상으로 실행되지 않는다. 그런 경우에는 Nginx를 우선 종료하고 설정 파일을 다시 작성해 Nginx를 다시 실행해야 한다.

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$

 

다음은 Nginx를 종료하고 다시 실행하는 명령이다.

 

(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo systemctl stop nginx
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$ sudo systemctl start nginx
(mysite) ubuntu@ip-172-26-8-122:/etc/nginx/sites-enabled$

 

 

 

(2단계) 서비스 작동 확인하기

 

파이보에 포트번호 없이 접속해서 확인해보자. 

 


 

여기까지. 

 

 

 

댓글