🚀 Aura AI 배포 기록 (Part 4)
배포 명령어 정리 · 의미 설명 · 장애 대응 매뉴얼 · 운영 체크리스트
이번 글은 FastAPI + Next.js + Vercel + Amazon Web Services EC2 환경에서 실제 운영 시 사용하는 배포 명령어와 장애 대응 방법을 한 번에 정리한 실전 매뉴얼입니다.
👉 서버 운영을 하다 보면 매번 검색하게 되는 것들만 모았습니다.
- 접속 명령어
- 실행/재시작/백그라운드 실행
- systemd 영구 실행
- 에러 대응법
- 최종 점검 체크리스트
이 글 하나면 운영/복구/재배포 전부 가능합니다.
✅ 1️⃣ 배포용 핵심 명령어 + 의미 정리
🔹 EC2 서버 접속
ssh -i "C:\Users\dddd3\aura_ai\aura-key.pem" ubuntu@51.21.202.235
의미
- EC2 인스턴스 접속
- PEM 키 기반 인증 (비밀번호 대신 사용)
핵심 포인트
✔ PEM 없으면 접속 불가
✔ 경로는 반드시 따옴표 사용
🔹 백엔드 폴더 이동
cd ~/aura_ai/backend
의미
- FastAPI 프로젝트 위치로 이동
- uvicorn 실행 기준 디렉토리
🔹 가상환경 활성화
source .venv/bin/activate
의미
- Python 가상환경 활성화
- 패키지가 해당 환경에서만 동작
이유
✔ 시스템 Python 오염 방지
✔ 의존성 충돌 방지
🔹 패키지 설치
pip install -r requirements.txt
의미
- 프로젝트 의존성 전체 설치
언제 실행?
- 최초 배포
- requirements 수정 후
- 서버 재구성 후
🔹 서버 실행 (임시 실행)
uvicorn main:app --host 0.0.0.0 --port 8000
의미
- FastAPI 서버 실행
- 0.0.0.0 → 외부 접속 허용
- 8000 포트 사용
특징
❌ 터미널 종료 시 서버 종료
👉 테스트용/디버깅용
🔹 서버 실행 (백그라운드 임시)
nohup uvicorn main:app --host 0.0.0.0 --port 8000 > uvicorn.log 2>&1 &
의미
- 터미널 닫아도 유지
- 로그를 uvicorn.log에 저장
특징
✔ 간단한 임시 운영 가능
❌ 재부팅 시 자동 시작 안 됨
👉 임시 운영 전용
🔹 프로세스 종료
pkill -f uvicorn
의미
- 실행 중인 uvicorn 프로세스 전체 종료
사용 상황
- 포트 충돌
- 서버 재시작 전
- 좀비 프로세스 제거
🚀 ⭐ 권장 방식 — systemd (영구 실행)
운영 서버는 반드시 systemd 사용 권장합니다.
🔹 systemd 서비스 등록
sudo tee /etc/systemd/system/aura-api.service > /dev/null <<'EOF'
[Unit]
Description=Aura FastAPI (Uvicorn)
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/aura_ai/backend
EnvironmentFile=/home/ubuntu/aura_ai/backend/.env
ExecStart=/home/ubuntu/aura_ai/backend/.venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
의미
핵심 기능
✔ 서버 부팅 시 자동 실행
✔ 오류 발생 시 자동 재시작
✔ SSH 종료와 무관하게 유지
옵션 설명
옵션의미
| WorkingDirectory | 프로젝트 위치 |
| EnvironmentFile | .env 자동 로드 |
| ExecStart | 서버 실행 명령 |
| Restart=always | 항상 재시작 |
| RestartSec | 재시작 딜레이 |
🔹 systemd 적용/실행
sudo systemctl daemon-reload
sudo systemctl enable aura-api
sudo systemctl restart aura-api
의미
- 새 서비스 등록 적용
- 부팅 시 자동 실행 설정
- 즉시 서버 실행
🔹 실행 상태 확인
sudo systemctl status aura-api --no-pager
의미
- 서비스 실행 여부 확인
정상 상태
active (running)
🔹 포트 리스닝 확인
sudo ss -tlnp | grep 8000
의미
- 8000 포트가 열렸는지 확인
- uvicorn 실제 실행 여부 체크
✅ 2️⃣ 오류 로그 대응표 (실전 트러블슈팅)
운영 중 가장 많이 겪은 오류만 모았습니다.
❌ Mixed Content 오류
증상
HTTPS 페이지에서 HTTP API 호출 시 차단
해결
✔ /api/proxy 적용
✔ 프론트는 프록시 경유만 사용
✔ Vercel 내부 HTTPS 브릿지 활용
❌ ECONNREFUSED 127.0.0.1:3306
증상
MySQL 접속 실패
원인
Vercel 서버리스 → DB 직접 연결 불가
해결
✔ DB 접근은 전부 FastAPI 로 이동
✔ Vercel은 프록시만 담당
❌ Form data requires python-multipart
증상
파일 업로드 시 서버 실행 실패
해결
pip install python-multipart
❌ ModuleNotFoundError: bcrypt
증상
회원가입 시 비밀번호 해시 오류
해결
pip install bcrypt
❌ 이메일 형식 오류 (모든 이메일 실패)
원인
정규식 이중 이스케이프
해결
EMAIL_REGEX = re.compile(r"^[^\s@]+@[^\s@]+\.[^\s@]+$")
❌ SSH 접속 멈춤
증상
접속 후 아무 반응 없음
해결
✔ EC2 콘솔 → Reboot
✔ 또는 SSH 재시작
sudo systemctl restart ssh
✅ 3️⃣ 배포 최종 체크리스트 (운영 전 필수)
배포 완료 후 반드시 확인합니다.
🔹 Vercel 환경 변수
- NEXT_PUBLIC_API_BASE_URL=/api/proxy
- 백엔드 서버: 51.21.202.235:8000
🔹 EC2 상태 확인
systemctl status aura-api
👉 active (running)
ss -tlnp | grep 8000
👉 uvicorn 리스닝 확인
🔹 기능 테스트
✔ 회원가입 성공
✔ 소셜 로그인 성공
✔ /users/me 정상
✔ /sessions 정상
✅ Part 4 전체 요약
이번 파트에서 정리한 내용
✔ 서버 접속/실행 명령어 정리
✔ systemd 영구 실행 설정
✔ 실제 발생 오류 대응법
✔ 운영 체크리스트
🎯 최종 결론
👉 운영 환경에서는 반드시
- systemd 사용
- 프록시 구조 유지
- 의존성 관리
- 체크리스트 점검
이 4가지를 습관화하면 장애가 거의 발생하지 않습니다.
'챗봇 공부 노트' 카테고리의 다른 글
| [21편] 토큰 사용량 제한 (0) | 2026.02.27 |
|---|---|
| [20편] 배포 후 오류 수정 (0) | 2026.02.25 |
| [19편] part 3 배포 백엔드/회원가입/정규식/의존성 변경 상세 (0) | 2026.02.13 |
| [19편] part 2 배포 프론트/프록시 구조 변경 상세 정리 (0) | 2026.02.13 |
| [19편] part 1 배포 전체 흐름 + 장애 대응 + 서버 유지 (0) | 2026.02.13 |