Overview

Ubuntu 환경에서 Python 3.6을 설치하고 Django 서버를 세팅 해보도록 할 것이다. EC2 인스턴스를 생성 하였으며, SSH 연결까지 된 상황이라고 가정하고 진행했다.

이 곳을 참고해 진행했다.

목차

uWSGI를 위한 NGINX 세팅하기

시작하기에 앞서 nginx를 설치

$ sudo apt-get install nginx

설치 후 http://[Your-IP] 해당 링크에서 Welcome to nginx 페이지를 확인 할 수 있다.

nginx는 2개의 폴더를 갖고 있다. 상황에 따라 두 파일을 수정하기도 하지만, 세팅을 위해 삭제를 하도록 한다.

  • sites-available
    • 특정 인스턴스의 사용 가능한 모든 사이트에 대한 모든 config 파일을 저장한다.
  • sites-enabled
    • sites-available 폴더에 있는 사이트에 심볼 링크를 저장한다.
$ sudo rm -rf /etc/nginx/sites-available/default
$ sudo rm -rf /etc/nginx/sites-enabled/default

site-available 폴더에 nginx-uwsgi.conf 파일을 생성한다.

$ sudo vi /etc/nginx/sites-available/nginx-uwsgi.conf
upstream Tirrilee_dev {
    server unix:/Tirrilee-dev/Project/run/uwsgi.sock;
}

server {
    listen 80;
    server_name 13.209.88.232;
    charset utf-8;

    client_max_body_size 128M;

    location /static {
    # exact path to where your static files are located on server
    # [mostly you won't need this, as you will be using some storage service for same]
        alias /Tirrilee-dev/Project/static;
    }

    location /media {
    # exact path to where your media files are located on server
    # [mostly you won't need this, as you will be using some storage service for same]
        alias /Tirrilee-dev/Project/media;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass Tirrilee_dev;
        uwsgi_read_timeout 300s;
        uwsgi_send_timeout 300s;
    }

    access_log /Tirrilee-dev/Project/log/dev-nginx-access.log;
    error_log /Tirrilee-dev/Project/log/dev-nginx-error.log;
}

sites-enabled 폴더에 동일한 파일을 생성한다.

$ sudo ln -s /etc/nginx/sites-available/nginx-uwsgi.conf /etc/nginx/sites-enabled/nginx-uwsgi.conf

Daemon을 실행한다.

$ sudo systemctl daemon-reload
$ sudo systemctl enable nginx
$ sudo service nginx start

nginx를 테스트 하고, 에러가 발생했을 경우 로그파일을 확인한다.

$ sudo nginx -t
...
$ tail -f /Tirrilee-dev/Project/log/nginx-error.log
$ tail -f /Tirrilee-dev/Project/log/nginx-access.log

nginx 서버 재시작

$ sudo service nginx restart

nginx 상태 확인

$ sudo service nginx status
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-10-11 09:14:33 UTC; 17min ago
 Main PID: 15896 (nginx)
   CGroup: /system.slice/nginx.service
           ├─15896 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           └─15897 nginx: worker process

nginx가 정상작동 할 경우 http://[Your-IP] 여기로 작업한 내용들을 확인 할 수 있다.