【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지②Nginx로 Django의 환영 페이지에 도착한다

7035 단어 nginx도커장고RDS

전치



독학으로 아이의 성장 앱을 만들었을 때를 기록으로 남겨 갑니다.
틀린 곳 등 있으면 연락 부탁드립니다.
 ① 장고의 환영 페이지에 도착할 때까지
 ② Nginx에서 장고의 환영 페이지에 도착할 때까지  <--여기입니다
맞춤 사용자를 만들어 admin에 도착
로그인 로그아웃하자
사용자 등록(로그인) 기능을 만들자
사용자별 데이터 등록 가능 ~ CRU편
사용자별 데이터 등록 가능 ~ 삭제편
이미지 파일 업로드
신장 체중을 기록하는 @ 일괄 삭제 기능 포함
성장 곡선 그래프를 그려 보자.
프로덕션 환경에 배포 + 다양한 수정

Goal



Nginx에서 장고의 환영 페이지로 이동

uWsgi 설정



Nginx와 Django를 연결하는 uwsgi를 넣습니다.

requirement.txt
Django==2.2.2
psycopg2==2.8.4
uwsgi==2.0.17

docker-compose도 변경한다.
nginx 컨테이너 설정 추가 및 웹 컨테이너 명령 포트 설정을 변경합니다.

docker-compose.yml
version: "3"

services:

  nginx: #ここを追加する
    image: nginx:1.13
    ports:
      - "8000:8000"
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
      - ./static:/static #staticも繋ぐ
    depends_on:
      - web

  db-postgres:
    image: postgres

  web:
    build: ./web
    volumes:
      - ./src:/code
    expose:
     - "8000" #ポートフォワードじゃなくて普通にport空ける
    depends_on:
      - db-postgres
    command: uwsgi --socket :8000 --module mysite.wsgi #uwsgi起動に変更

Nginx 설정



이런 파일 체계가 되도록 nginx 부하를 만들어 간다
.
├── docker-compose.yml
├── nginx
│   ├── conf
│   │   └── mysite_nginx.conf
│   └── uwsgi_params
├── src
│   ├── manage.py
│   ├── mysite
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-37.pyc
│   │   │   ├── settings.cpython-37.pyc
│   │   │   ├── urls.cpython-37.pyc
│   │   │   └── wsgi.cpython-37.pyc
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── static
└── web
    ├── Dockerfile
    └── requirements.txt

conf 파일에서 정적 응답과 동적 응답을 나누고 있는 이미지.

conf/mysite_nginx.conf
upstream django {
    ip_hash;
    server web:8000;
}

server {
    listen      8000;
    server_name 127.0.0.1;
    charset     utf-8;

    client_max_body_size 75M;

    location /static {
        alias /static;
    }

    location / {
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params;
    }
}

uwsgi_params는 그대로.

uwsgi_params
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

Docker로 시작합시다.



requirement.txt를 고치면 build해 둔다.
docker-compose build

Docker 시작
docker-compose up

localhost:8000에 액세스
장고의 runserver와 마찬가지로 초기 화면이 표시되면 성공!


참고

좋은 웹페이지 즐겨찾기