Nginx로 Django 애플리케이션 배포

3022 단어 djangoubuntu
한 달 전에 Apache2를 사용하여 Django 애플리케이션을 배포하는 방법에 대한 게시물을 올렸습니다. 이 게시물은 Nginx로 Django 애플리케이션을 배포하는 방법에 관한 것입니다.
나는 사용할 것이다
  • 장고
  • 아나콘다3
  • AWS EC2
  • 우분투 18.04
  • 엔진엑스
  • 암호화하자

  • 이번에는 가상 환경 설치, EC2 인스턴스 설정 및 기타 기본 설정은 건너뛰겠습니다.

    애플리케이션 배포


    Nginx 서버 설정



    Nginx 설치

    $ sudo apt-get update
    $ sudo apt-get install nginx
    


    HTTPS를 활성화하려면 certbot을 설치하십시오.

    $ sudo apt-get install certbot
    $ apt-get install python3-certbot-nginx
    


    /etc/nginx/conf.d 내부에 (your domain).conf라는 파일을 만듭니다.
    예: 'domainname.com.conf'.
    방금 만든 파일을 편집합니다.

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root (path to your root folder);
        server_name domainname.com;
    }
    


    파일을 저장하고 이 명령을 실행하여 모든 것이 정상인지 확인합니다.

    $ sudo nginx -t
    


    그런 다음 서버를 로드합니다.

    $ sudo nginx -s reload
    


    SSL 인증서 얻기



    이 명령을 실행하여 인증서를 생성하십시오.

    $ sudo certbot --nginx -d domainname.com
    


    'domainname.com.conf'를 편집합니다.

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root (path to your root folder);
        server_name  domainname.com;
    
        listen 443 ssl; # managed by Certbot
    
        # RSA certificate
        ssl_certificate /etc/letsencrypt/live/domainname.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/domainname.com/privkey.pem; # managed by Certbot
    
        location / {
            root (path to your django root);
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass https://localhost:8001;
        }
    
    location /static/ {
            alias (path to the static folder);
            expires 7d;
        }
    location /media/ {
            alias (path to the media folder);
    }
    
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    
        # Redirect non-https traffic to https
        if ($scheme != "https") {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    }
    server {
        if ($host = domainname.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name domainname.com;
        return 404; # managed by Certbot
    }
    


    django 서버를 실행하면 응답 헤더에서 서버가 변경된 것을 볼 수 있습니다.

    좋은 웹페이지 즐겨찾기