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

+ Recent posts