🚨 DuckDNS 도메인 IP 설정 문제, 원인과 해결 방법 정리
·
프로젝트
🚨 DuckDNS 도메인 IP 설정 문제, 원인과 해결 방법 정리✅ 문제 상황 요약: DuckDNS 도메인이 잘못된 IP로 설정됨DuckDNS에 등록된 teamnotfound.duckdns.org가 현재 EC2 인스턴스의 퍼블릭 IP(3.34.129.166) 가 아닌, 이전 IP(15.164.49.138) 로 계속 바인딩되어 있었음.해당 현상은 도메인 접속 시 연결 실패 및 인증 문제로 이어지며, dig 명령어를 여러 번 실행할 경우 IP가 왔다 갔다하는 불안정 현상도 발견되었음.🛠 구현 흐름 ①: DuckDNS 등록 스크립트 작성 및 확인#!/bin/bashIP="3.34.129.166" # ✅ 기존 duck.sh에 명확히 현재 IP를 IP= 로 고정 지정하고, curl 요청에 포함되도록 처리🧼..
EC2 재부팅 시 IP 변경 문제와 DuckDNS 전파 지연 해결 전략
·
프로젝트
EC2 재부팅 시 IP 변경 문제와 DuckDNS 전파 지연 해결 전략 EC2 퍼블릭 IP 변경으로 인한 문제 상황✅ 전체 코드 및 로그 상황EC2 인스턴스를 재시작할 경우 퍼블릭 IP가 변경되어, DuckDNS가 가리키는 주소와 실제 서버 주소가 불일치하는 문제가 발생합니다. 이로 인해 Nginx는 요청을 받지만, Django에서는 ALLOWED_HOSTS 불일치로 인해 400 Bad Request가 반환되었습니다.$ curl http://checkip.amazonaws.com3.34.129.166$ nslookup teamnotfound.duckdns.orgAddress: 15.164.49.138🛠 구현 흐름 ①: 문제 발생 경로→ EC2 재시작 → IP 변경 → DuckDNS가 옛날 IP 가리킴 ..
✅ 실무형 배포 시 인증서 발급~CSRF & 동기화 무한지옥까지 완벽 정리
·
프로젝트
✅ 실무형 배포 시 인증서 발급~CSRF & 동기화 무한지옥까지 완벽 정리🔖 1️⃣ SSL 인증서 발급 (Let's Encrypt + DuckDNS) 실전 프로세스DuckDNS로 서브도메인 생성예시: teamnotfound.duckdns.org토큰(인증값) 발급서버에 certbot, certbot-dns-duckdns 설치(pip로 설치하려면 --break-system-packages 등 추가 필요)sudo pip3 install certbot-dns-duckdns --break-system-packagesDuckDNS 토큰 설정파일(duckdns.ini) 준비dns_duckdns_token = bf05a989-ac28-4ecd-87dd-6daa2e8974fd권한변경: chmod 600 ~/duckdn..
🎯 DuckDNS 무료 도메인 + 자동 IP 갱신 실무 배포 전과정
·
프로젝트
🎯 DuckDNS 무료 도메인 + 자동 IP 갱신 실무 배포 전과정✅ 1. DuckDNS 서브도메인 생성 및 토큰 확보duckdns.org 접속구글/깃허브로 로그인원하는 서브도메인(teamnotfound) 입력 후 [add domain]“token” 값을 복사해서 메모장 등 안전한 곳에 저장✅ 2. 서버에서 duckdns 폴더 및 스크립트 구성SSH로 EC2(또는 서버)에 접속홈디렉토리에서 폴더 생성mkdir ~/duckdnscd ~/duckdns✅ 3. duck.sh 스크립트 직접 작성 & 권한 부여vi, nano 등으로 duck.sh 파일 생성nano duck.sh아래처럼 작성(도메인/토큰 값 본인걸로!)echo url="https://www.duckdns.org/update?domains=내도매인..
Gunicorn + Nginx 연동 프로세스별 정리
·
프로젝트
Gunicorn + Nginx 연동 프로세스별 정리1️⃣ Gunicorn 도입 및 Dockerfile 설정✅ 분석Django 기본 개발 서버는 프로덕션 환경에서 안정적이지 않음Gunicorn은 WSGI 서버로 다중 프로세스 지원, 빠르고 안정적 요청 처리 가능따라서 실제 서비스에서는 Gunicorn으로 Django 실행 필요1-2. requirements.txt에 gunicorn 추가gunicorn==22.0.0 🛠 해결Dockerfile에 Gunicorn 실행 명령어 추가ENTRYPOINT에 python manage.py migrate 후 gunicorn 실행 명령어 배치ENTRYPOINT [ "sh", "-c", "python manage.py migrate && gunicorn config.wsg..
Gunicorn이란? vs Nginx란? 아니죠 함께가야죠
·
프로젝트
✅ Gunicorn이란?Django를 진짜 “서비스용”으로 돌리는 엔진비유:“Django 코드를 레스토랑 주방장처럼 실제로 ‘음식’을 만드는 엔진”→ 주문(웹 요청)이 들어오면 요리를 시작하는 역할**운영환경(실서비스)**에서python manage.py runserver로는 못 버팀“Gunicorn”이 대신 받아서 훨씬 빠르고 안전하게 주문을 처리함✅ Nginx란?모든 손님(인터넷 사용자)이 맨 처음 만나는 ‘입구/접수대’비유:“식당의 안내 데스크/매니저”→ 손님이 오면 정리해서 주방(Gunicorn)으로 주문을 넘김→ 단체손님(여러 요청), 외부 잡음(해커 공격), 매장관리(정적 파일 제공), 계산대(SSL/https) 등 다양한 역할웹 서버에서 가장 먼저 요청을 받아서정적파일은 즉시 응답동적 요청은..
Django + Docker + CI/CD 자동배포 구축기(GitHub Actions, EC2 실전 완성)
·
프로젝트
Django + Docker + CI/CD 자동배포 구축기 (GitHub Actions, EC2 실전 완성) ✅ 전체 코드아래는 Github Actions를 통한 main/release 브랜치 완전 자동 배포 예시name: Deploy to EC2on: push: branches: - main - release workflow_dispatch:jobs: deploy: runs-on: ubuntu-latest steps: - name: SSH into EC2 and deploy with Docker Compose env: PRIVATE_KEY: ${{ secrets.EC2_PRIVATE_KEY }} HOST: ${..
Docker Hub 배포 실전 가이드 (실무 플로우/코드/명령 포함)
·
프로젝트
Docker Hub 이미지 푸시부터 EC2 배포, 실무 절차 완전정리Docker Hub 배포 실전 가이드 (실무 플로우/코드/명령 포함)1️⃣ 도커 허브(Docker Hub) 가입~로그인공식 Docker Hub에서 계정 생성, 이메일 인증서버/로컬에서docker login→ 브라우저 인증/CLI 로그인 (계정, 패스워드 입력)2️⃣ 도커 이미지 빌드/태깅/푸시 실습이미지 빌드 (Dockerfile 기준)docker build -t account-book-image .로컬 이미지 확인docker images태깅 (Hub 업로드용)docker tag account-book-image chansman1004/account-book:latest푸시docker push chansman1004/account-boo..