본문 바로가기
자격증/정보처리기사

Nginx와 Gunicorn 연동 실습 - 파이썬 웹 서버, 장고 배포

by 추운망고 2025. 5. 12.
반응형
Nginx와 Gunicorn 연동

목차

    👉Nginx와 Gunicorn 연동 실습 확인하기

    Nginx와 Gunicorn 연동

    파이썬은 그 유연성과 강력한 기능 덕분에 웹 개발 분야에서 인기를 끌고 있습니다. 특히 Django 프레임워크는 웹 애플리케이션을 신속하게 개발할 수 있는 도구로 많은 개발자들에게 사랑받고 있습니다. 하지만, 실제 서비스에 들어가기 위해서는 Django 애플리케이션과 웹 서버를 어떻게 연동할 것인지에 대한 고민이 필요합니다. 이때 Nginx와 Gunicorn의 조합이 매우 유용하게 작용합니다. Nginx는 고성능 웹 서버로 정적 파일을 관리하고, Gunicorn은 WSGI 서버로 Django 애플리케이션을 실행하는 역할을 합니다. 이러한 두 서버의 연동을 통해 안정적인 웹 서비스를 제공할 수 있습니다.

     

    이번 블로그 글에서는 Nginx와 Gunicorn을 연동하는 방법에 대해 실습을 통해 알아보겠습니다. 각 단계별로 필요한 설정과 명령어를 안내하고, 실제 서비스 환경에서의 최적화 방법도 제시할 것입니다. 이 글을 통해 파이썬 웹 개발의 기초를 다지고, 실제 프로젝트에 적용할 수 있는 실용적인 지식을 얻을 수 있을 것입니다. 실습을 통해 얻은 경험은 향후 웹 개발 과정에서도 큰 도움이 될 것입니다.

    1. 환경 설정

    우선 Nginx와 Gunicorn을 설치하기 위한 환경을 설정하겠습니다. Ubuntu를 기준으로 진행하겠으며, 다른 배포판에서도 기본적인 과정은 유사하니 참고하시기 바랍니다. 먼저 시스템의 패키지를 업데이트하고 필요한 패키지를 설치합니다.

    • sudo apt update
    • sudo apt install python3-pip python3-dev nginx

    이후, Gunicorn을 설치할 장고 프로젝트의 가상 환경을 설정합니다. 가상 환경을 사용하면 다른 프로젝트와의 의존성 충돌을 피할 수 있습니다.

    • python3 -m venv myenv
    • source myenv/bin/activate

    가상 환경을 활성화한 후, Django를 설치합니다. 이제 Django 프로젝트를 생성할 준비가 되었습니다.

    2. Django 프로젝트 생성

    이제 Django 프레임워크를 사용하여 간단한 웹 애플리케이션을 만들어보겠습니다. 아래의 명령어를 통해 새로운 Django 프로젝트를 생성합니다.

    • django-admin startproject myproject
    • cd myproject
    • python manage.py runserver

    위 명령어를 실행하면 Django 개발 서버가 실행됩니다. 이제 http://127.0.0.1:8000/에서 기본 페이지를 확인할 수 있습니다. 이 과정에서 간단한 웹 페이지가 정상적으로 동작하는지 확인합니다.

     

    이제 데이터베이스 설정과 애플리케이션을 추가하여 더 복잡한 기능을 구현할 준비를 합니다. settings.py 파일을 열어 데이터베이스와 관련된 설정을 진행합니다.

    👉Nginx와 Gunicorn 연동 실습 확인하기

    3. Gunicorn 설치 및 설정

    Gunicorn은 Python WSGI HTTP 서버입니다. Django 애플리케이션을 Gunicorn으로 실행하기 위해 설치합니다. 아래 명령어를 통해 Gunicorn을 설치합니다.

    • pip install gunicorn

    설치가 완료되면, Gunicorn으로 Django 애플리케이션을 실행할 수 있습니다. 다음 명령어를 통해 Gunicorn을 실행합니다.

    • gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

    이제 http://127.0.0.1:8000/에서 Gunicorn을 통해 실행된 Django 애플리케이션을 확인할 수 있습니다. 이 단계에서 애플리케이션이 잘 실행되는지 반드시 확인해야 합니다.

    4. Nginx 설치 및 설정

    이제 Nginx를 설정하여 Gunicorn과 연동해 보겠습니다. Nginx는 정적 파일을 서빙하고, Gunicorn에 요청을 전달하는 역할을 합니다. Nginx 설치 후 기본 설정 파일을 열어 수정합니다.

    • sudo nano /etc/nginx/sites-available/myproject

    설정 파일에 다음 내용을 입력하여 Nginx를 설정합니다.

     

    server {
        listen 80;
        server_name your_domain_or_IP;
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /path/to/your/project;
        }
    
        location / {
            include proxy_params;
            proxy_pass http://unix:/path/to/your/project/myproject.sock;
        }
    }
    

    위 설정에서 server_name은 서버의 도메인이나 IP 주소로 변경해야 합니다. 모든 설정이 완료되면 Nginx를 재시작합니다.

    • sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
    • sudo systemctl restart nginx

    5. Gunicorn과 Nginx 연동 테스트

    이제 Gunicorn과 Nginx가 정상적으로 연동되는지 테스트해 보겠습니다. Gunicorn을 실행할 때 사용한 소켓 파일 경로가 Nginx 설정과 일치해야 합니다. Gunicorn을 실행하는 명령어는 다음과 같습니다.

    • gunicorn --bind unix:/path/to/your/project/myproject.sock myproject.wsgi:application

    이제 웹 브라우저에서 http://your_domain_or_IP/를 입력하여 애플리케이션이 정상적으로 동작하는지 확인합니다. 에러가 발생한다면 로그 파일을 확인하여 문제를 해결해야 합니다.

    6. SSL 설정 (선택 사항)

    웹 애플리케이션을 안전하게 운영하기 위해 SSL을 설정하는 것이 좋습니다. Let's Encrypt를 사용하여 무료 SSL 인증서를 발급받고 Nginx에 설정할 수 있습니다. Certbot을 설치한 후 다음 명령어를 사용하여 SSL 인증서를 발급받습니다.

    • sudo apt install certbot python3-certbot-nginx
    • sudo certbot --nginx -d your_domain

    이 과정을 완료하면 HTTPS를 통해 안전하게 웹 애플리케이션에 접근할 수 있습니다. SSL 설정 후 Nginx 설정 파일을 재시작하여 변경 사항을 적용합니다.

    7. FAQ

    Q: Gunicorn과 Nginx 설정이 잘못되었으면 어떤 에러가 발생하나요?

     

    A: Nginx가 Gunicorn에 접근할 수 없거나 소켓 파일 경로가 잘못되어 502 Bad Gateway 에러가 발생할 수 있습니다. 로그 파일을 확인하여 경로가 올바른지 점검해야 합니다.

     

    Q: Django의 STATIC 파일은 어떻게 처리하나요?

     

    A: Django의 static 파일은 Nginx를 통해 제공하며, settings.py에서 STATIC_URL 및 STATIC_ROOT를 설정해야 합니다.

    결론

    Nginx와 Gunicorn의 조합은 파이썬 웹 개발에서 매우 효과적이고 안정적인 솔루션입니다. 이번 실습을 통해 환경 설정에서부터 최종 테스트까지의 과정을 알아보았습니다. 이 과정을 통해 웹 서버와 WSGI 서버의 연동 방법과 설정을 익힐 수 있었으며, 실제 서비스에 배포하는 데 필요한 기본적인 지식을 갖출 수 있었습니다. 앞으로도 다양한 웹 개발 기술을 익혀 나가면서 더 나은 서비스를 제공할 수 있도록 노력해 나가시기 바랍니다.

    👉Nginx와 Gunicorn 연동 실습 바로가기

    반응형