WinGyu_coder

Django 서버, WSGI 와 NGINX 사용하기 본문

Django 백엔드의 모든것

Django 서버, WSGI 와 NGINX 사용하기

WinGyu 2023. 8. 13. 09:43

Django 프로젝트를 NGINX와 함께 사용하려면 보통 uWSGI나 Gunicorn과 같은 WSGI 서버를 중간에 두어 연결합니다. 이 예제에서는 Gunicorn을 사용하여 Django 백엔드와 NGINX를 설정하는 방법을 안내하겠습니다.

  1. Gunicorn 설치:

    Django 프로젝트의 가상 환경 내에서 Gunicorn을 설치합니다.

    pip install gunicorn
  2. Gunicorn으로 Django 앱 실행:

    잠시 Gunicorn만 사용하여 Django 앱을 실행해 보겠습니다. 프로젝트 디렉토리에서 다음 명령어를 실행합니다.

    gunicorn yourproject.wsgi:application --bind 127.0.0.1:8001

    이렇게 하면 Gunicorn이 8001 포트에서 애플리케이션을 실행하게 됩니다.

  3. NGINX 설정:

    NGINX 설정은 Django 앱을 프록시로 연결하는 것이 주목적입니다.

    /etc/nginx/sites-available/에서 새로운 설정 파일을 만듭니다.

    sudo nano /etc/nginx/sites-available/django_project

    그리고 다음과 같이 내용을 입력합니다:

    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
    
        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    
        location /static/ {
            alias /path/to/your/staticfiles/;
        }
    }

    여기서, /static/ 위치는 Django의 정적 파일을 직접 제공하기 위한 것입니다.

  4. 설정 활성화 및 NGINX 재시작:

    sudo ln -s /etc/nginx/sites-available/django_project /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
  5. 서버 부팅 시 Gunicorn 자동 시작:

    Gunicorn을 서비스로 실행하려면 systemd 유닛 파일을 작성해야 합니다. 이렇게 하면 시스템 부팅 시 Gunicorn이 자동으로 시작됩니다.

    /etc/systemd/system/gunicorn.service:

    [Unit]
    Description=gunicorn daemon
    After=network.target
    
    [Service]
    User=username
    Group=groupname
    WorkingDirectory=/path/to/django/project
    ExecStart=/path/to/venv/bin/gunicorn yourproject.wsgi:application --bind 127.0.0.1:8001
    
    [Install]
    WantedBy=multi-user.target

    서비스를 활성화하고 시작합니다:

    sudo systemctl enable gunicorn
    sudo systemctl start gunicorn

이제 Django 앱이 Gunicorn과 함께 실행되고, NGINX를 통해 클라이언트 요청을 처리하도록 설정되었습니다.