웹 프로그래밍

    [AWS (2)] AWS 도커 설치

    도커 설치 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu docs.docker.com > 그냥 시키는대로 하면됨 portainer 설치 https://documentation.portainer.io/v2.0/deploy/linux/ Redirecting... documentation.portainer.io 그대로 하면되는데 sudo로 관리자 설정주고 하면 됨 sudo docker volume create portainer_data sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/doc..

    [AWS (1)] EC2 인스턴스 생성

    로그인 > 서비스 > EC2 1. a) 키페어 생성 자동으로 다운된 .pem은 프로젝트 파일에 옮겨주었다. b) 인스턴스 > 인스턴스 시작 > 1단계) Amazone Machine Image(AMI) 선택 프리티어사용가능한걸로 골라준다. : Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 2단계) 인스턴스유형선택 프리티어사용가능한걸로 골라준다. t2.micro 3단계) 인스턴스 세부정보구성 > 우선 기본값그대로 패스 4단계) 스토리지추가 > 8기가 쓸거임 5단계) 태그추가 > 네임태그 추가 (나중에 관리 용이하게) 6단계)보안그룹구성 > 필요할때 구성할것 우선은 디폴트로 진행 마무리후 만들었던 키페어로 인스턴스 시작 2. .pem 가지고 서버 접속 vultr이용할땐 도..

    [배포해보기 (14)] Docker Secret

    루트 패스워드라던가 장고 시크릿키같은 보안 관련된 정보들을 파일에 적어두면 보안상 위험할 수도 있으니 도커 시스템내에서 따로 관리하도록 설정을 한다. 1. DJANGO_SECRET_KEY 도커파일에서 요렇게 넣었던것을 RUN echo "SECRET_KEY=엘렐렐렐렐렐레" > .env 엘렐렐렐렐렐레 만 떼어서 넣어주면 됨. 2. MYSQL_PASSWORD DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', 'USER': 'django', 'PASSWORD': 'password1234', 'HOST': 'mariadb', 'PORT': '3306', } } 얘네들도 해줌. 3. MYSQL_ROOTPASSWORD ..

    [배포해보기 (13)] Stack을 위한 yml파일 작성

    portainer에서는 swarm init이 안돼서 ssh로 서버접속해서 docker swarm init 명령으로 시작해준다. docker-compose.yml 작성 version: "3.7" services: nginx: image: nginx:1.19.5 networks: - network volumes: - /home/django_course/nginx.conf:/etc/nginx/nginx.conf - static-volume:/data/static - media-volume:/data/media ports: - 80:80 django_container_gunicorn: image: oconnect_image:5 networks: - network volumes: - static-volume:/h..

    [배포해보기 (12)] Docker Stack, Docker Swarm 의 이해

    Docker Stack의 이해 현재까지 nginx와 django container, DB container를 만들어 배포했다. 이렇게 container만을 가지고 배포했을때 몇가지 문제가 발생한다. 1. 설정을 반복해줘야한다는것 (컨테이너를 배포할때마다) : 컨테이너마다 포트 세팅, 볼륨 세팅, 네트워크세팅 등등 => Docker Stack : 통합 세팅파일을 만들어 컨테이너들을 한번에 배포 2. 컨테이너가 모종의 이유로 꺼졌을 때 : 장고컨테이너가 갑자기 꺼졌다. 누가 켜줄건가? 사람이 계속 붙어서 관리할 수는 없다. => service: 컨테이너에 문제가 생기면 설정파일을 불러와 자동으로 리부트시킨다. 또한 scale out 이 가능하다. Total Stack Settings는 YML File에 작성..

    [배포해보기 (11)] MariaDB container를 이용한 DB분리

    현재로써는 django container안에 db 파일이 있어서 그 안에 데이터를 보관하고 있다. 그런데 만약에 이 컨테이너가 꺼지게된다? 이 데이터는 모두 사라질 것이다. 이 데이터를 컨테이너를 따로 분리할 필요가 있다. 데이터가 증발하는 걸 막기위해 volume을 이용할 것이다. 컨테이너의 생애주기와 상관없이 데이터가 유지될 수 있도록 한다. 1. 개발환경(Local)과 배포환경(Deploy)의 분리 현재 로컬환경에 settings.py 하나만 있다. settings 디렉토리를 만들어 안에 deploy.py, local.py를 만들어주고 settings.py는 base.py로 rename해 안에 넣었다. base.py from pathlib import Path import os, environ # ..

    [배포해보기 (10)] collectstatic; static file 받지 못하는 문제의 해결

    settings.py STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_DIRS = [ BASE_DIR / "static", ] collectstatic python manage.py collectstatic 로컬에서 collectstatic 해도 달라질건 없기때문에 로컬은 놔두고 dockerfile에 입력해준다. FROM python:3.9.0 WORKDIR /home/ RUN git clone https://github.com/Aiden-Kwak/oconnect2021_ver4.git WORKDIR /home/oconnect2021_ver4/ RUN pip install -r requiremen..

    [배포해보기 (9)] Static 의 이해

    nginx를 앞단에 두고 뒤에 있는 django를 구동시키는 것까지 했지만 정적인 파일들을 로딩하지 못하고있다. 왜 gunicorn / django 가 static files를 받지 못하는가? static이란 무엇인가? 초기에 서버들은 단순한 html 파일들, 정적인 파일들만 제공하는 역할을 했다. 클라이언트가 index.html을 요청하면 서버가 해당 html을 제공하는 정도의 역할만을 수행하였다. (모두 static한 서버였다.) 하지만 static만으로 처리하는 것은 한계가 존재한다. 이에 동적(dynamic)으로 컨텐츠를 생산해낼 수 있는 방향으로 변화한다. 예전에는 서버가 static과 dynamic content를 모두 처리했다. 하지만 시간이 지나며 dynamic content가 복잡해지다보..

    [배포해보기 (8)] Docker Network의 이해 및 구현

    gunicorn이 설치된 Django container와 Nginx container를 연결할 것이다. Nginx container에서 django container로 요청을 보낼때는 어떻게 보내야하는가? IP Address 로 요청을 보내야할지, DOMAIN으로 요청을 보내야할지 모른다. 이걸 해결해줄 도구가 Docker Network이다. Docker Network django container의 container name은 'django_container_gunicorn' Nginx의 container name은 'nginx' 였다. Network안에서는 container name자체가 도메인이된다. 이런식으로 두 컨테이너의 연결을 만들것이다. 1. Network 생성 우선 이전에 임시로 만들었던 ..

    [배포해보기 (7)] Gunicorn

    https://duckracoon.tistory.com/entry/%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0-6-Django-container-%EC%83%9D%EC%84%B1 [배포해보기 (6)] Django container 생성 django container 를 만들기 위한 과정 1. Upload Source to Github 2. Write Dockerfile 3. Build Image 4. Run Container 1. Upload Source to Github 올리기전 requirements.txt 만들어주기 pip freeze > req.. duckracoon.tistory.com 앞서 장고 컨테이너를 생성하면서 도커파일에 CMD ["python", "..