🔍 daphne와 postgres, nginx를 이용해서 배포를 진행하려고 한다.
- root passwd 초기화
sudo passwd root- root 접속 후 계정 비밀번호 초기화
su root
passwd ubuntu- 키 없이 로그인
sudo vi /etc/ssh/sshd_config
PasswordAuthentication no- adduser useradd 차이
adduser : 실행 시 계정 정보를 자동으로 생성
useradd : 계정만 생성하며 기타 계정 정보는 수동으로 생성 및 설정- 보안을 위한 다른 계정 생성
adduser django
sudo passwd django
sudo visudo
django ALL=(ALL) ALL 추가- 키페어 로그인시 설정
sudo cp /home/ec2-user/.ssh/ /home/django/.ssh/
sudo chown -R django:django /home/djanog/.ssh- hostname 설정
hostnamectl set-hostname django_aws
sudo reboot 다시 시작해야 적용됨!
version: '3.8' services: backend: container_name: backend build: ./backend/ entrypoint: sh -c "python manage.py collectstatic --no-input && python manage.py makemigrations && python manage.py migrate && daphne Togeduck.asgi:application -b 0.0.0.0 -p 8000" ports: - 80:8000 volumes: - ./backend/django/:/app/ - /etc/localtime:/etc/localtime:ro # host의 timezone 설정을 컨테이너에 적용합니다. # ro 은 읽기 전용(read only) 속성으로 볼륨을 설정하는 것을 의미합니다. restart: always
version: '3.8' volumes: postgres: {} django_media: {} django_static: {} services: postgres: container_name: postgres image: postgres:14.5 volumes: - postgres:/var/lib/postgresql/data/ environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=P@ssw0rd - POSTGRES_DB=django restart: always backend: container_name: backend build: ./backend/ entrypoint: sh -c "python manage.py collectstatic --no-input && python manage.py migrate && daphne Togeduck.asgi:application -b 0.0.0.0 -p 8000" volumes: - ./backend/django/:/app/ - /etc/localtime:/etc/localtime:ro - django_media:/app/media/ # nginx에서 media를 사용할 수 있도록 volume을 지정해줍니다. - django_static:/app/static/ # nginx에서 static을 사용할 수 있도록 volume을 지정해줍니다. environment: # django에서 사용할 설정들을 지정해줍니다. - DEBUG=1 - POSTGRES_DB=django - POSTGRES_USER=user - POSTGRES_PASSWORD=P@ssw0rd - POSTGRES_HOST=postgres - POSTGRES_PORT=5432 depends_on: - postgres restart: always nginx: container_name : nginx image: nginx:1.23.2 ports: - "80:80" - "443:443" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - django_media:/media/ # django의 media를 사용할 수 있도록 volume을 지정해줍니다. - django_static:/static/ # django의 static 사용할 수 있도록 volume을 지정해줍니다. depends_on: - backend restart: always
# python 3.10.8버전 이미지를 사용해 빌드 FROM python:3.8.10 # .pyc 파일을 생성하지 않도록 설정합니다. ENV PYTHONDONTWRITEBYTECODE 1 # 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설정합니다. ENV PYTHONUNBUFFERED 1 # /app/ 디렉토리를 생성합니다. RUN mkdir /app/ # /app/ 경로를 작업 디렉토리로 설정합니다. WORKDIR /app/ # requirments.txt를 작업 디렉토리(/app/) 경로로 복사합니다. COPY ./django/requirements.txt . # 프로젝트 실행에 필요한 패키지들을 설치합니다. RUN pip install --no-cache-dir -r requirements.txt # daphne을 사용하기 위한 패키지를 설치합니다. + postgres RUN pip install Daphne psycopg2
팀원들을 도와주고 에러를 해결하고 하는동안 시간이 다 가버렸다. 배포 했을때의 문제가 너무 많이 일어났고 웹소켓이 제대로 작동하지 않는 문제도 발생했다.
에러 관련한 것들은 내일 다시 정리해야겠다.