4.7 KiB
4.7 KiB
TaxBaik 배포 가이드
서버 초기 설정
1. PostgreSQL 데이터베이스 생성
ssh kjh2064@178.104.200.7
# PostgreSQL 접속
sudo -u postgres psql
# 데이터베이스 및 사용자 생성
CREATE USER taxbaik WITH PASSWORD 'secure_password_here';
CREATE DATABASE taxbaikdb OWNER taxbaik;
GRANT ALL PRIVILEGES ON DATABASE taxbaikdb TO taxbaik;
\q
2. 환경 변수 설정
Web 서비스 (/etc/systemd/system/taxbaik.service):
[Service]
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://127.0.0.1:5001
Environment=ConnectionStrings__Default=Host=localhost;Database=taxbaikdb;Username=taxbaik;Password=your_secure_password
3. systemd 서비스 파일 설치
sudo cp deploy/taxbaik.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable taxbaik
4. Nginx 설정
# 현재 Nginx 설정 확인
sudo cat /etc/nginx/sites-available/default | head -30
# location 블록 추가 (또는 기존 설정에 병합)
sudo cp deploy/nginx-taxbaik-locations.conf /etc/nginx/conf.d/taxbaik.conf
# 테스트 및 재로드
sudo nginx -t
sudo systemctl reload nginx
배포 프로세스
Gitea Actions 준비
-
Gitea 저장소 Secrets 추가:
DEPLOY_USER:kjh2064DEPLOY_HOST:178.104.200.7DEPLOY_SSH_KEY: SSH 개인키 (줄바꿈 포함)
-
배포 워크플로우는 자동으로 실행:
master 브랜치 push → build → publish → restart
수동 배포는 사용하지 않습니다. 배포 이슈는 Gitea Actions 로그로 해결합니다.
마이그레이션 자동 실행
애플리케이션 시작시 자동으로 마이그레이션이 실행됩니다:
schema_migrations테이블 생성 (없으면)- 실행된 마이그레이션 확인
- 미실행 마이그레이션 순서대로 실행
로그 확인:
journalctl -u taxbaik -n 50
검증
E2E 테스트
# 공개 사이트 접근
curl -I http://178.104.200.7/taxbaik/
# 관리자 로그인 페이지
curl -I http://178.104.200.7/taxbaik/admin/login
# 로그인 API 확인
curl -X POST http://178.104.200.7/taxbaik/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# 문의 폼 제출 테스트
curl -X POST http://178.104.200.7/taxbaik/contact \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "name=테스트&phone=010-1234-5678&service_type=사업자세무&message=테스트"
# DB에서 확인
ssh kjh2064@178.104.200.7
psql -U taxbaik -d taxbaikdb -c "SELECT * FROM inquiries ORDER BY created_at DESC LIMIT 1;"
블로그 포스트 확인
# 초기 5개 포스트 확인
curl http://178.104.200.7/taxbaik/blog
# 첫 번째 포스트 상세 (slug: accountant-mistakes-5)
curl http://178.104.200.7/taxbaik/blog/accountant-mistakes-5
롤백
# 이전 버전으로 복귀
ssh kjh2064@178.104.200.7
# 이전 배포 디렉토리 확인
ls -la ~/deployments/ | grep taxbaik
# 심링크 변경 (예: 이전 버전이 taxbaik_20260626_140000)
ln -sfn ~/deployments/taxbaik_20260626_140000 ~/taxbaik_active
sudo systemctl restart taxbaik
모니터링
서비스 상태 확인
ssh kjh2064@178.104.200.7
# 서비스 상태
systemctl status taxbaik
# 포트 확인
netstat -tlnp | grep -E '5001'
# 프로세스 확인
ps aux | grep TaxBaik
성능 모니터링
# Nginx 프록시 로그
tail -f /var/log/nginx/access.log | grep taxbaik
# 애플리케이션 로그
journalctl -u taxbaik -f
journalctl -u taxbaik -f
트러블슈팅
| 증상 | 원인 | 해결 |
|---|---|---|
| 404 /taxbaik | Nginx 설정 미적용 | sudo nginx -t && sudo systemctl reload nginx |
| DB 연결 오류 | 환경 변수 미설정 | systemd service 파일의 ConnectionStrings__Default 확인 |
| 503 Service Unavailable | 앱 미시작 | sudo systemctl restart taxbaik |
| 마이그레이션 실패 | DB 권한 문제 | GRANT ALL PRIVILEGES ON DATABASE taxbaikdb TO taxbaik; |
초기 데이터
관리자 계정
- username:
admin - password:
admin123(bcrypt 해시됨) - 초기 로그인 후 비밀번호 변경 권장
블로그 포스트
V003 마이그레이션에서 5개 포스트 자동 생성:
- 사업자 기장 시 자주 하는 실수 5가지
- 부동산 양도세 계산하기
- 프리랜서를 위한 종합소득세 신고
- 부가가치세 간이과세 vs 일반과세
- 가족 자산 증여세 절세 방법
차후 작업
- SSL 인증서 적용 (Let's Encrypt)
- 도메인 연결 (현재는 IP 기반)
- 관리자 인증 로직 구현 (현재는 플레이스홀더)
- 블로그 포스트 CRUD 기능 완성
- Naver/Google Search Console 등록