Gunicorn, Nginx?
지금까지는 python manage.py runserver 명령을 사용해서 서버를 실행시켰다. 하지만 실제로 서버에서 웹사이트를 운영할 때 방문자가 많아지면 성능, 보안 등의 문제가 발생할 수 있다. 이런 상황에 대응하기 위해 전문적인 웹 서버 소프트웨어를 사용해 서버를 실행시켜야한다. 웹 서버 소프트웨어를 사용하면 방문자의 요청에 더 빠르게 응답할 수 있고, 많은 사용자가 동시에 접속했을 때 여러 대의 서버로 요청을 분산하는 로드 밸런싱 같은 기능도 제공.
Django에서 웹 서버 소프트웨어는 보통 Nginx를 사용한다. 웹 서버 소프트웨어와 Django를 연결하기 위해 WSGI(Web Server Gateway Interface)인 Gunicorn을 사용한다.
1. Gunicorn 적용
1) 설치
pip install gunicorn
2) settings.py 수정
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
3) urls.py 수정
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
2. Nginx 적용
Nginx 적용이라기보단 Docker에서 Nginx 적용을 위한 설정 파일의 생성이다.
nginx/nginx.conf
upstream do_it_django {
server web:8000;
}
server {
listen 80;
server_name something.com; # 서버 이름 설정
location / {
return 301 https://$host$request_uri;
}
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
}
server {
listen 443 ssl;
server_name something.com; # 서버 이름 설정
location / {
proxy_pass http://something; # 서버 domain (.com 제외)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
alias /usr/src/app/_static/;
}
location /media/ {
alias /usr/src/app/_media/;
}
ssl_certificate /etc/letsencrypt/live/서버 도메인(something.com)/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/서버 도메인(something.com)/privkey.pem; # 서버 접속 .pem 키
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
'Back-End > Wagtail, Django 배포' 카테고리의 다른 글
DumpData (0) | 2022.01.08 |
---|---|
Wagtail RichText API (0) | 2022.01.07 |
1. PostgreSQL 적용 (0) | 2021.12.22 |
3. Docker(Django, Wagtail) (0) | 2021.12.22 |
4. AWS (인스턴스 생성, 서버 접속) (0) | 2021.12.20 |