# TaxBaik 프로덕션 배포 체크리스트 **작성일**: 2026-06-26 **상태**: 운영 기준 정비 중 **대상**: 178.104.200.7 (Ubuntu 26.04) --- ## 📋 배포 전 (개발 환경) ### 1. 코드 검증 - [ ] `dotnet build TaxBaik.sln -c Release` 성공 - [ ] 모든 컴파일 오류 0개 - [ ] 경고 0개 유지 ### 2. Git 상태 확인 - [ ] 모든 변경사항 커밋됨 - [ ] `git status`에서 clean 상태 - [ ] `git log --oneline | head -5` 확인 ### 3. 발행 검증 ```bash dotnet publish TaxBaik.Web -c Release -o ./publish # 확인 ls -lh ./publish/TaxBaik.Web.dll ``` --- ## 🖥️ 서버 배포 ### 1단계: 서버 초기 설정 (한 번만) ```bash # 1. SSH 접속 ssh kjh2064@178.104.200.7 # 2. 자동 설치 스크립트 실행 curl -s https://raw.githubusercontent.com/kjh2064/taxbaik/master/SERVER_SETUP.sh | bash # 또는 로컬에서 업로드 scp deploy/SERVER_SETUP.sh kjh2064@178.104.200.7:~/ ssh kjh2064@178.104.200.7 'bash ~/SERVER_SETUP.sh' # 3. 배포 디렉토리 생성 (자동으로 진행됨) # ~/deployments/ # ~/taxbaik_active # ~/taxbaik_active ``` ### 2단계: Gitea Actions 설정 **Gitea 저장소 Settings → Secrets 추가**: - `DEPLOY_USER`: `kjh2064` - `DEPLOY_HOST`: `178.104.200.7` - `DEPLOY_SSH_KEY`: SSH 개인키 (줄바꿈 포함) 이후 `master` 브랜치 푸시 → 자동 배포 --- ## ✅ 배포 후 검증 ### 1. 서비스 상태 확인 ```bash ssh kjh2064@178.104.200.7 # 서비스 상태 sudo systemctl status taxbaik # 프로세스 확인 ps aux | grep TaxBaik # 포트 확인 netstat -tlnp | grep -E '5001' ``` ### 2. 엔드포인트 테스트 ```bash # 공개 사이트 curl -I http://178.104.200.7/taxbaik/ # 예상: 200 OK # 관리자 로그인 curl -I http://178.104.200.7/taxbaik/admin/login # 예상: 200 OK # API 헬스체크 curl http://178.104.200.7/taxbaik/api/health 2>/dev/null || echo "헬스체크 없음 (정상)" ``` ### 3. 데이터베이스 확인 ```bash ssh kjh2064@178.104.200.7 # DB 연결 psql -U taxbaik -d taxbaikdb # 테이블 확인 \dt # 마이그레이션 확인 SELECT * FROM schema_migrations; # 데이터 확인 SELECT COUNT(*) FROM blog_posts; SELECT COUNT(*) FROM inquiries; SELECT COUNT(*) FROM categories; ``` ### 4. 로그 확인 ```bash # 웹 서비스 journalctl -u taxbaik -n 50 # Nginx sudo tail -f /var/log/nginx/access.log | grep taxbaik ``` ### 5. 성능 테스트 ```bash # 응답 속도 측정 time curl http://178.104.200.7/taxbaik/ > /dev/null # gzip 압축 확인 curl -I -H "Accept-Encoding: gzip" http://178.104.200.7/taxbaik/ | grep -i encoding # 예상: Content-Encoding: gzip ``` --- ## 📱 기능 테스트 (QA) ### 공개 사이트 (Web) #### 홈페이지 - [ ] http://178.104.200.7/taxbaik/ 접근 가능 - [ ] 영웅 섹션 표시 - [ ] 서비스 카드 표시 - [ ] 최근 블로그 포스트 표시 - [ ] 모바일 CTA 바 표시 #### 블로그 - [ ] http://178.104.200.7/taxbaik/blog 페이지 로드 - [ ] 5개 카테고리 탭 표시 - [ ] 포스트 그리드 표시 - [ ] 포스트 클릭 → 상세 페이지로 이동 - [ ] SEO 메타 태그 확인: `curl http://178.104.200.7/taxbaik/blog/accountant-mistakes-5 | grep og:title` #### 문의 폼 - [ ] http://178.104.200.7/taxbaik/contact 페이지 로드 - [ ] 폼 필드 표시 (이름, 전화, 이메일, 분야, 메시지) - [ ] 제출 버튼 활성화 - [ ] 폼 제출 성공 (응답 메시지 표시) #### 관리자 백오피스 (Admin) #### 로그인 - [ ] http://178.104.200.7/taxbaik/admin/login 접근 - [ ] 로그인 폼 표시 - [ ] 초기 계정 로그인 - username: `admin` - password: `` #### 대시보드 - [ ] 로그인 후 대시보드 로드 - [ ] KPI 카드 표시 (이번달 문의, 신규 문의 등) - [ ] 최근 문의 테이블 표시 #### 블로그 관리 - [ ] 블로그 목록 페이지 로드 - [ ] 5개 포스트 표시 - [ ] 수정/삭제 버튼 활성화 #### 문의 관리 - [ ] 문의 목록 페이지 로드 - [ ] 최근 제출한 문의 표시 - [ ] 상태 변경 기능 테스트 #### 사이트 설정 - [ ] 설정 페이지 로드 - [ ] 연락처 정보 표시 - [ ] 설정 저장 기능 테스트 --- ## 🔧 트러블슈팅 | 증상 | 원인 | 해결 방법 | |------|------|----------| | 404 /taxbaik | Nginx 설정 미적용 | `sudo nginx -t && sudo systemctl reload nginx` | | 502 Bad Gateway | 프록시 또는 백엔드 미실행 | `sudo systemctl restart taxbaik-proxy taxbaik` | | 503 Service Unavailable | 백엔드 충돌 또는 비밀값 누락 | 로그 확인: `journalctl -u taxbaik -n 50` | | DB 연결 오류 | 환경 변수 미설정 | systemd 파일의 ConnectionStrings__Default 확인 | | HTTPS 오류 | SSL 미구성 | 개발 환경에서는 HTTP 사용 (IP 기반) | | 마이그레이션 실패 | 테이블 존재 | `DROP DATABASE taxbaikdb;` 후 재시작 | --- ## 📊 모니터링 ### 실시간 모니터링 ```bash # 터미널 1: 백엔드 로그 ssh kjh2064@178.104.200.7 'journalctl -u taxbaik -f' # 터미널 2: 프록시 로그 ssh kjh2064@178.104.200.7 'journalctl -u taxbaik-proxy -f' # 터미널 3: Nginx 로그 ssh kjh2064@178.104.200.7 'sudo tail -f /var/log/nginx/access.log | grep taxbaik' # 터미널 4: 시스템 리소스 ssh kjh2064@178.104.200.7 'watch -n 1 "ps aux | grep TaxBaik"' ``` ### 정기적 검사 ```bash # 일일 체크는 CI 배포 후 자동 검증으로 대체 ``` --- ## 🔄 배포 후 업데이트 ### 코드 변경 후 배포 ```bash # 1. 로컬에서 커밋 및 푸시 git add . git commit -m "기능: 새로운 기능 추가" git push origin master # 2. Gitea Actions가 자동으로 배포 ``` ### 롤백 절차 ```bash # 이전 버전 목록 확인 ssh kjh2064@178.104.200.7 'ls -la ~/deployments/ | grep taxbaik' # 롤백 (예: 이전 버전이 taxbaik_20260625_100000) ssh kjh2064@178.104.200.7 << EOF ln -sfn ~/deployments/taxbaik_20260625_100000 ~/taxbaik_active sudo systemctl restart taxbaik-proxy sudo systemctl restart taxbaik EOF ``` --- ## ✨ 수락 기준 배포가 성공하려면 다음을 모두 만족해야 합니다: - [ ] 모든 엔드포인트 HTTP 200 응답 - [ ] 데이터베이스 마이그레이션 완료 (schema_migrations 테이블 확인) - [ ] 초기 5개 블로그 포스트 DB에 존재 - [ ] 로그인 기능 정상 (admin/) - [ ] 문의 폼 제출 → DB 저장 확인 - [ ] Nginx 프록시 정상 작동 - [ ] 응답 gzip 압축 확인 - [ ] 관리자 페이지 WebSocket 연결 성공 --- ## 📞 긴급 연락처 **문제 발생 시**: - 로그 확인: `journalctl -u taxbaik` - 포트 확인: `netstat -tlnp` - DB 상태: `psql -U taxbaik -d taxbaikdb -c "SELECT 1;"` - 관리자 연락: kjh2064@gmail.com --- **다음 단계**: 체크리스트 완료 후 프로덕션 운영 시작