[Django] uWSGI-Nginx 연동, letsencrypt https 적용

참고 : https://query.tistory.com/entry/Dj-장고-배포-④-uwsgi와-nginx-설치-및-연결

1. 가상환경(virtualenv)

1.1. virtualenv 설치

$ sudo apt-get install virtualenv

1.2. 가상환경 생성

# virtualenv -p python3 [가상환경이름]
$ virtualenv -p python3 venv

1.3. 가상환경 실행

# source [가상환경이름폴더]/bin/activate
$ source venv/bin/activate

# 종료는 deactivate

 

2. uWSGI

2.1. uWSGI 설치

$ pip install uwsgi

2.2. uwsgi.ini 생성

$ vi uwsgi.ini

>
[uwsgi]
chdir=/home/ubuntu/{장고 프로젝트 폴더}
module={프로젝트 이름}.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/home/ubuntu/{프로젝트 폴더}/django.log

# 가상환경 폴더 위치
home=/home/ubuntu/{프로젝트 폴더}/venv
virtualenv=/home/ubuntu/{프로젝트 폴더}/venv

socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.sock
chmod-socket=666

2.3. uWSGI 실행

$ uwsgi --ini uwsgi.ini

 

3. Nginx

3.1. Nginx 설치

$ sudo apt-get install nginx

3.2. nginx.conf 파일 수정

$ sudo vi /etc/nginx/nginx.conf

>
# http에 upstream django 추가
http {
    upstream django {
        server unix:/home/ubuntu/{프로젝트 폴더}/uwsgi.sock;
    }
}

3.3. site-enabled/default 파일 수정

$ sudo vi /etc/nginx/sites-enabled/default

>
location / {
    # try_files $uri $uri/ =404; 삭제
    include /etc/nginx/uwsgi_params;
    uwsgi_pass django;
}

location /static/ {
    alias /home/ubuntu/{프로젝트 static 폴더};
}

location /media/ {
    alias /home/ubuntu/{프로젝트 media 폴더};
}

3.4. Nginx 재시작

$ sudo service nginx restart

 

4. letsencrypt https 적용

참고 : https://syudal.tistory.com/entry/Ubuntu-Nginx-Lets-Encrypt로-https-적용하기

4.1. Certbot 설치

# certbot 패키지 저장소 추가
$ sudo add-apt-repository ppa:certbot/certbot
# python-nginx용 certbot 설치
$ sudo apt-get install python3-certbot-nginx

4.2. 인증서 발급 및 적용

$ sudo certbot --nginx -d {도메인}

>
# 이메일, 이용 동의 등 입력
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
# 1 : http->https 자동 리다이렉트 지원 X
# 2 : http->https 자동 리다이렉트 지원 O