본문 바로가기
관리자

Programming-[Backend]/Django

(56)
[TIL]Django Swagger 표현을 위한 라이브러리 : drf-spectacular(drf-yasg), OpenAPI 좀 더 자세한 이야기는 다음 연결 글을 참고! OpenAPI 명세, Swagger 기본 개념 : Django restframework, drf-spectacular로 swagger split 1. open api와 swagger, redoc의 개념 OpenAPI는 OpenAPI Specification (OAS)이라고도 불리는데, REST API의 스펙을 규칙에 맞게 json이나 yaml로 표현한 문서를 말한다. Django 에서는 일반적으로 프로젝트에 Schema.yml 이나 Schema.json 파일로 프로젝트의 API 구조를 뼈대처럼 작성해놓는다. 물론 자동으로... 예시) schema.yml 파일의 일부 Swagger나 redoc은 이런 Schema.yml 파일을 기반으로 각 API들의 입출력 구..
Django로 Pinterest 따라 만들기[3부 AWS] - 23. AWS EC2 생성, Docker 연결 및 Portainer 설치 1. AWS EC2 생성 및 접속 기존 강의에서 진행했던 VULTR 서버 대신 AWS 환경에서 EC2 서비스로 가상 서버를 구동한다. AWS에 회원가입을 하고 EC2에 접속하면 된다. 다만, EC2를 구동하는 동안 비용이 청구될 수 있으니 학습만 하고 EC2를 삭제하는 것이 좋다. 포트 AWS의 EC2의 포트는 막혀있는것이 기본값이다. 따라서 사용을 원하는 포트값을 열어주어야만 한다. 키 페어 aws는 ID/PW 방식 외 키페어 방식을 통해 보안 설정을 한다. 맨 먼저 키 페어를 생성해본다. OpenSSH 형식을 사용할 것이므로 .pem 형식으로 생성한다. 생성한 키는 다운로드해서 갖고 있어야한다. 다운로드 시에 반드시 사용자 키를 C:\Users\{사용자 이름} 디렉토리에 위치시켜야한다! 아니면 .pe..
Django로 Pinterest 따라 만들기[2부 Docker] - 22. Docker Secret 1. Docker Secret 생성 이번 글은 간단하다! 기존에 .env 파일로 관리하였지만 방법을 몰라서 그대로 외부에 노출시켰던 django_SECRET 정보와 mariaDB_PASSWORD 정보 등을 Docker SECRET을 통해서 보안처리할 것이다. Docker Secret을 설정하면 Service 내에 있는 Secret 정보가 필요한 Container들에게 SECRET 정보를 제공할 수 있다. 일단 SECRET을 생성한다. Name값과 Secret 정보값을 넣어주자. 나머지 DB 관련 Secret 값들도 넣어주었다. 2. 설정 파일 수정 이제 Stack의 Service들이 상기 생성한 Secret 정보들을 바라볼 수 있도록 Stack의 설정파일인 docker-compose.yml 파일을 수정한..
Django로 Pinterest 따라 만들기[2부 Docker] - 21. Docker Stack, Swarm, Service 1. Docker Stack, Swarm, Service의 개념 이때까지 만들어왔던 container는 다음 한계점이 있다. 이미지를 새로 배포할때마다 계속 환경설정을 해줘야한다. container가 갑자기 꺼지거나 삭제될 수 있다. 만약 꺼지면 자동으로 재부팅이라도 돼야한다. Docker Stack, Swarm 이런 문제점들을 해결하기 위한 개념이 Stack과 Service이다. Docker Stack은 여러 container들을 생성할 때 필요한 환경설정 정보를 하나의 .yml 파일로 묶어서 관리한다. 따라서 예를 들어 만약 앞서 살펴봤던 djangon-nginx-mariadb container 연결구조를 같은 환경으로 1개 더 배포해야될 상황이라면 Stack에서 자유롭게 갯수를 늘릴 수 있다. 이렇..
Django로 Pinterest 따라 만들기[2부 Docker] - 20. MariaDB로 분리 : local, deploy 환경 분리하기 1. MariaDB 분리 필요성과 container 생성 DB 분리 필요성 django container에 DB가 연동되어 있으면 django container가 에러가 나거나 삭제되면 DB 데이터도 사라질 수 있으므로 MariaDB container를 따로 분리하는 작업을 한다. named Volume으로 설정할 것이기 때문에 MariaDB container가 문제가 생기더라도 데이터는 남아있게 될 것이다. MariaDB 컨테이너 생성 DockerHub MariaDB 공식문서 참고 dockerHub에서 mariaDB를 검색하여 들어가보면, official image 페이지에서 어떤 설정을 해줘야하는지를 참고할 수 있다. Dokcer에서 이 공식 image를 바탕으로 container를 만들 때 어떤 설..
Django로 Pinterest 따라 만들기[2부 Docker] - 19. Nginx, staticfiles, Docker Network, Docker Volume 1. Docker Volume : 파일 참조 연동하기 Docker Volume 설정 이제 마지막 단계로 Docker Volume을 이용해서 nginx 컨테이너와 docker-gunicorn 컨테이너간에 파일 참조를 공유하게 만들어준다. 우선 nginx container를 수정해보자. portainer - Containers - nginx 클릭 Duplicate/edit 클릭 Volumes에서 아래 사진과 같이 설정한다. Bind Volume 형태로 container 상의 /etc/nginx/nginx.conf 파일과 host 서버(여기서는 로컬 PC) 상의 ~/nginx.conf 파일을 서로 참조하고, 연동되도록 하겠다는 것이다! Nginx로 접속 Docker network, Docker volume 설..
Django로 Pinterest 따라 만들기[2부 Docker] - 18. Docker, gunicorn, nginx, docker network, nginx.conf 1. gunicorn, nginx 배포환경에서 runserver 명령어를 사용하면 안된다. django는 웹 프레임워크를 만들기 위한 툴이지 서버에 배포하기 위한 툴이 아니기 때문에 performance, 보안 등에 문제가 생길 수 있다고 django 공식문서에서 설명한다. 따라서 대신 서버를 실행해주고, 뒤에서 언급할 Nginx와 연결해주는 Gunicorn 이라는 라이브러리를 django container에 설치할 것이다. Nginx와 Gunicorn의 개념(참조 2, 3) 그전에 간단하게 Nginx와 gunicorn 등의 개념에 대해서 짚고 넘어가자. WEB-WAS(WGSI) 관계 자바-스프링에서는정적 자원과 동적 자원을 WEB과 WAS가 나누어서 제공했던 것(각각 아파치, 톰캣)처럼 여기서 진행하는..
Django로 Pinterest 따라 만들기[2부 Docker] - 17. Docker VPS-VULTR, Dockerfile, portainer, SSH 1. Docker 간단 개념 Docker는 가상화된 서버에서 각종 라이브러리나 프로그램들을 단위체로 제공하는 오픈소스 플랫폼이다. 각 컴퓨터가 다른 운영체제(OS), 다른 프로그램 구성을 갖고 있고 이것들을 매번 설치하고 배포하고 관리하는 것이 번거롭다보니, 가상 서버에서 Image화하여 저장하고, container로 배포 및 구동하는 방식으로 개선한 것이다. Image는 OS, 각종 프로그램들의 버전별 기록이라고 할 수 있다. Windows 10, v0.1 버전을 Image화 해놓고, 여러 서버 컴퓨터에 설치하다가 Windows 10, v0.2가 나오면 이걸 다시 image로 만들어서 container로 구동하고 다른 사람들이 사용하게 할 수도 있다. Image를 만들고, 이것을 복사한 instance..