웹 서버 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단계) 서비스 작동 확인하기
파이보에 포트번호 없이 접속해서 확인해보자.
여기까지.
댓글