코딩 교육 TIL

2024-06-07 AI 코딩 TI

HyunjunPark 2024. 6. 7. 21:36
아 배포 진짜로 힘들다 이렇게 하기 힘든거 였나?
  • nginx까지 등록 완료
  • docker와 gunicorn을 사용해서 배포

문제점 :

  1. nginx를 사용시 web과 nginx연동이 불가능 한 상황 발생
  2. static파일을 사용할 수 없는 문제 발생
  3. 서버의 ssl인증을 받았으나 적용이 되지 않는 문제 발생
  4. 각 www. 유뮤, https/http 상관없이 하나의 사이트로 이동할 수 있도록 설정 필요
  • 코드
    # Dockerfile 내용
    
    # 베이스 이미지 설정
    FROM python:3.10
    
    # 환경 변수 설정
    ENV PYTHONUNBUFFERED 1
    
    # GNU Gettext와 OpenCV 설치
    RUN apt-get update && apt-get install -y \\
        gettext \\
        libgl1-mesa-glx \\
        libglib2.0-0 \\
        && apt-get clean \\
        && rm -rf /var/lib/apt/lists/*
    
    # 작업 디렉토리 설정
    WORKDIR /app
    
    # requirements.txt 복사 및 패키지 설치
    COPY requirements.txt /app/
    RUN pip install --upgrade pip && \\
        pip install -r requirements.txt
    
    # 애플리케이션 코드 복사
    COPY . /app/
    
    version: '3.8'
    
    services:
      web:
        build: .
        command: sh -c "if [ ! -f /app/.initialized ]; then python manage.py migrate --noinput && python manage.py compilemessages && touch /app/.initialized; fi && gunicorn --bind 0.0.0.0:8000 SilverLining.wsgi:application"
        volumes:
          - .:/app
        ports:
          - "8000:8000"
        depends_on:
          - db
          - redis
        environment:
          DATABASE_URL: postgres://myuser:mypassword@db:5432/mydb
        networks:
          - backend
    
      nginx:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./static:/static
          - ./media:/media
        depends_on:
          - web
        networks:
          - backend
    
      db:
        image: postgres:latest
        environment:
          POSTGRES_DB: mydb
          POSTGRES_USER: myuser
          POSTGRES_PASSWORD: mypassword
        volumes:
          - postgres_data:/var/lib/postgresql/data
        networks:
          - backend
    
      redis:
        image: redis:latest
        networks:
          - backend
    
    volumes:
      postgres_data:
    
    networks:
      backend:
        driver: bridge
    
    
  • # nginx worker_processes 1; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name silverlinings.site www.silverlinings.site; location / { proxy_pass <http://web:8000>; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /static/; } location /media/ { alias /media/; } } }

해결방안 :

  1. nginx 포트를 8080에서 80으로 변환하여 설정 및 ec2에서도 모든 포트를 80포트로 설정
  2. settings.py와 nginx.conf 파일의 static설정을 동일하게 하며 staticfiles삭제
  3. 아직 해결 못함 ( http로 입장을 해도 https로 리다이렉션을 할 수 있도록)
  4. 아직 해결 못함 ( 3번과 동일한 방법으로 모든 주소를 하나의 주소로 리다이렉션을 할 수 있도록 수정)

임우재튜터님 피드백 : 키워드전달

  1. aws http to https redirect
  2. aws load balancer health check django

현재 진행 상황

 

  • nginx docker 등록 (완료)
  • 음성 인식 주문 기능 - 장바구니 오류 개선 (진행중)
  • 고령화 템플릿의 음성인식을 통한 메뉴 삽입 검색 결제가 판단할 수 있도록 수정 되었으며, 캐시를 통한 매뉴 수정 및 오랬동안 응답이 없을 시에는 메인으로 돌아감
  • 구매한 도메인을 ip주소에 연동하여 작업하는 기능 완료
  • 메인화면 페이지 수정 및 css 수정
    • 메인화면
    • css 변경 건