장고를 NGINX와 gunicorn을 사용하여 움직일 때의 흐름 정리 (자신 메모)

소개



공부하고 Django를 원격 호스트에 배포 한 후 NGINX와 gunicron의 설정 방향을 잘 모르기 때문에 자신에게 메모

  • 하고 싶은 일
  • 필요한 작업 흐름
  • 1. NGINX가 Django 사이트를 호출하는 구성 파일 작성
  • 2. Django를 호출하는 설정 파일에 대한 심볼릭 링크 생성
  • 3. NGINX와 gunicorn 재부팅

  • 하고 싶은 일



    Django로 만든 애플리케이션을 클라우드에 배포하고, 정적 파일을 표시하는 것 등의 가벼운 처리는 웹 서버(NGINX)로 처리하고, Django에서의 동적 처리 등 무거운 처리는 AP 서버(gunicron)로 하고 싶다.

    정리하면 다음과 같은 이미지

  • nginx
  • 주로 정적 파일을 표시하는 웹 서버
  • 자신은 무거운 일은 하지 않는다(ngninx로 하는 것은 HTML의 표시 정도)
  • 로드 밸런서적으로 행동하고 무거운 처리만 gunicorn으로 흔들어

  • gunicorn
  • 장고를 움직이는 AP 서버
  • 정적 파일 (HTML 등) 만 표시하는 경우에는 필요하지 않으므로 Python이 필요한 경우에만 호출하고 싶습니다.


  • 필요한 작업 흐름



    위의 작업을 수행하려면 다음 작업이 필요합니다 (Django 애플리케이션이 이미 서버에 배포되었다고 가정)
  • NGINX가 Django 사이트를 호출하기 위한 설정 파일을 준비한다
  • 설정 파일은 "/etc/nginx/sites-available"폴더에서 어려운 이름으로 만든다
  • 설정 파일에 기입하는 내용은, 「이 포트를 사용하자마자」라든지

  • 「/etc/nginx/sites-enabled」폴더에, 상기 1로 만든 파일에의 심볼릭 링크를 붙인다
  • 이렇게하면 위의 No.1 파일이 무효화되면 심볼릭 링크를 끊어야합니다.
  • 심볼릭 링크 원래 무엇이라고 하는 사람은 「쇼트 컷 링크 같은 것」이라고 생각하면 k

  • NGINX와 gunicron을 재부팅하고 액세스하십시오

  • 1. NGINX가 Django 사이트를 호출하는 구성 파일 작성



    "/etc/nginx/sites-available"에 NGINX가 호출하는 웹 사이트 (여기서는 Django 앱)의 설정 파일을 추가한다. 이렇게 하면 NGINX가 그 사이트를 호출할 수 있게 된다.

    /etc/nginx/sites-available에 파일 추가
    cd /etc/nginx/sites-available
    sudo vi djangapp
    

    이 "djangapp"에 기재된 설정에 따라 NGINX는 Django를 호출한다.
    다음에, 작성한 설정 파일에 정보를 기재한다. 덧붙여 이번 NGINX는 이하의 2개를 하고 싶다.
    1. 정적 파일 표시
    2. 요청 정보를 djangapp.sock(gunicorn과의 소켓용 파일)에 흘린다

    설정 파일의 내용은 이런 느낌

    etc/nginx/sites-available/djangapp
    server {
         # 設定しているウェブサイトへのリクエストを通すポート
            listen 80;
            # ウェブサイトのIPもしくはドメイン名
            server_name xx.xx.xx.xxx;
            # ファビコンが見つからないというエラーを回避するおまじない
            location = /favicon.ico {access_log off; log_not_found off;}
            ### 以下、リクエストURLとNGINX上のパスとの対応を定義
            # Django静的ファイルへのパスを設定
            location /static/ {
                    root /home/ubuntu/djangapp;
                    }
            # 管理者用ページのCSSを表示するためのパスを設定
            location /static/admin {
                    root /home/ubuntu/venv/lib/python3.6/site-packages/django/contrib/admin/static/admin;
            }
            # リクエストをウェブページに流すためにunixソケットへのパスを設定
            location / {
                    # 「/etc/nginx/proxy_params」にプロキシの設定が記載してある
                    include proxy_params;
                    # djangapp.sockにリクエスト結果を流している
                    proxy_pass http://unix:/home/ubuntu/djangapp/djangapp.sock;
            }
    }
    

    2. Django를 호출하는 설정 파일에 대한 심볼릭 링크 생성



    아까 작성한 「 sites-available/djangapp」는 「유효야에서」라는 것을 나타내기 위해서 「site-enabled」에 심볼릭 링크를 작성한다.
    접속을 일시적으로 끊고 싶은 경우는, 이 심볼릭 링크만 지우면 좋다

    심볼릭 링크 만들기
    sudo ln -s /etc/nginx/sites-available/djangapp /etc/nginx/sites-enaled
    

    이제 sites-enabled/djangapp -> sites-available/djangapp라는 심볼릭 링크를 만들었습니다. 일단 확인.

    심볼릭 링크 확인
    (venv) ubuntu@ip-172-31-45-165:/etc/nginx/sites-available$ ls -la /etc/nginx/sites-enabled/
    total 8
    drwxr-xr-x 2 root root 4096 Apr 29 13:26 .
    drwxr-xr-x 8 root root 4096 Apr 29 13:27 ..
    lrwxrwxrwx 1 root root   34 Apr 29 06:54 default -> /etc/nginx/sites-available/default
    # シンボリック・リンクになってる
    lrwxrwxrwx 1 root root   36 Apr 29 13:26 djangapp -> /etc/nginx/sites-available/djangapp
    

    3. NGINX와 gunicorn 재부팅



    우선 NGINX가 제대로 움직이는지 테스트 해 보겠습니다.

    nginx 테스트 실행
    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    문제없이 움직이고 있는지 확인.
    계속해서 다양한 재부팅

    NGINX 재부팅
    sudo systemctl restart nginx
    

    gunicorn 재부팅
     sudo systemctl restart gunicorn
    

    나중에 URL에 연결하십시오.

    좋은 웹페이지 즐겨찾기