๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ django ๋ฐฐํฌ

๐Ÿ” daphne์™€ postgres, nginx๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

aws ubuntu ๊ณ„์ • ์ดˆ๊ธฐ ์„ธํŒ…

  • 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 ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ์ ์šฉ๋จ!

๐Ÿงฒ django daphne

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

๐Ÿงฒ postgres, daphne docker file

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

๐Ÿงฒ Dockerfile

# 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

๐Ÿงฒ ํ›„๊ธฐ

ํŒ€์›๋“ค์„ ๋„์™€์ฃผ๊ณ  ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํ•˜๋Š”๋™์•ˆ ์‹œ๊ฐ„์ด ๋‹ค ๊ฐ€๋ฒ„๋ ธ๋‹ค. ๋ฐฐํฌ ํ–ˆ์„๋•Œ์˜ ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์ผ์–ด๋‚ฌ๊ณ  ์›น์†Œ์ผ“์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ๋‹ค.
์—๋Ÿฌ ๊ด€๋ จํ•œ ๊ฒƒ๋“ค์€ ๋‚ด์ผ ๋‹ค์‹œ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€

Powered by GraphCDN, the GraphQL CDN