참고 : 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