diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index fbcc1ba..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,76 +0,0 @@ -# Ubuntu 서버 nginx 설정 자동 배포 워크플로우 -# -# 성공 조건: -# - Ubuntu 서버 SSH 접속 가능 -# - admin 사용자 sudo NOPASSWD 설정 완료 -# - nginx 서비스 실행 중 -# -# 실패 조건: -# - SSH 키 인증 실패 -# - sudo 권한 없음 -# - nginx 설정 문법 오류 -# - 시스템 서비스 오류 -# -# 주요 작업: -# 1. SSH 키 설정 -# 2. 소스 파일 전송 (~/robeing-nginx) -# 3. nginx 설정 적용 (/etc/nginx/sites-available/default) -# 4. nginx 서비스 reload -# 5. Docker 컨테이너 정리 - -name: Deploy to Ubuntu Server - -on: - push: - branches: - - main - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout source - uses: actions/checkout@v4 - - - name: Setup SSH key - run: | - mkdir -p ~/.ssh - echo "${{ secrets.NAS_SSH_KEY_ADMIN }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - - - name: Deploy files via SCP - env: - HOST: ${{ secrets.NAS_HOST }} - PORT: ${{ secrets.NAS_PORT }} - USER: ${{ secrets.NAS_USER }} - run: | - # 기존 배포 파일 정리 및 디렉토리 준비 - ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "rm -rf ~/robeing-nginx/* || true; mkdir -p ~/robeing-nginx" - - # 소스 파일 전송 (.git 제외) - tar --exclude='.git' -czf - . | ssh -o StrictHostKeyChecking=no -p $PORT $USER@$HOST "cd ~/robeing-nginx && tar -xzf -" - - - name: Apply nginx config via SSH - env: - HOST: ${{ secrets.NAS_HOST }} - PORT: ${{ secrets.NAS_PORT }} - USER: ${{ secrets.NAS_USER }} - run: | - ssh -o StrictHostKeyChecking=no -o RequestTTY=no -p $PORT $USER@$HOST << 'EOF' - cd ~/robeing-nginx - - echo "📋 Applying nginx configuration..." - sudo -n /usr/bin/cp server-nginx-default /etc/nginx/sites-available/default - - echo "🔍 Testing nginx configuration..." - sudo -n /usr/sbin/nginx -t - - echo "🔄 Reloading nginx service..." - sudo -n /bin/systemctl reload nginx - - echo "🧹 Cleaning up Docker containers..." - docker compose down || true - - echo "✅ Deployment completed successfully!" - EOF - diff --git a/README.md b/README.md index 6527757..ac5548f 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,38 @@ -# Nginx Deploy - Robeing Project +# Nginx 배포 설정 -Ubuntu 서버용 Nginx 리버스 프록시 배포 저장소입니다. +로빙 프로젝트의 웹 서버 설정을 관리하는 저장소입니다. -## 구조 +## 개요 + +웹사이트 접속 시 올바른 서버로 연결해주는 리버스 프록시 설정을 관리합니다. + +## 파일 구조 ``` -nginx-infra/ -├── .gitea/workflows/deploy.yml # Gitea Actions 배포 스크립트 -├── .github/workflows/deploy.yml # GitHub Actions 배포 스크립트 (legacy) -├── default.conf # Docker nginx 설정 (legacy) -├── server-nginx-default # 서버 nginx 설정 파일 -├── docker-compose.yml # Docker Compose 정의 (cleanup용) +nginx-deploy/ +├── .gitea/workflows/deploy.yml # 자동 배포 스크립트 +├── server-nginx-default # 실제 서버 설정 파일 +├── default.conf # Docker용 nginx 설정 +├── docker-compose.yml # 테스트용 Docker 설정 +├── static/ # 정적 파일 └── README.md # 이 파일 ``` -## 배포 플로우 (Gitea Actions) +## 배포 방식 -1. **main 브랜치에 push** -2. **Gitea Actions** 자동 실행 (로컬 서버) -3. **nginx 설정 백업** (자동 백업) -4. **설정 검증** (nginx -t) -5. **nginx 설정 적용** (/etc/nginx/sites-available/default) -6. **nginx 서비스 reload** (무중단 적용) -7. **배포 검증** (자동 롤백 포함) +1. main 브랜치에 코드 변경 후 push +2. Gitea Actions가 자동으로 서버에 배포 +3. 설정 오류 발생 시 자동 롤백 -## 서버 설정 +## 웹사이트 경로 -### Gitea Actions 요구사항 -- Ubuntu 22.04 LTS -- Gitea Actions 활성화 -- admin 사용자 sudo NOPASSWD 권한 -- nginx 서비스 실행 중 +- `https://ro-being.com/` → 메인 페이지 (5173 포트) +- `https://ro-being.com/api/` → API 서버 (8000 포트) +- `https://ro-being.com/rb10508/` → 테스트 서버 (10508 포트) -### sudo 권한 설정 -```bash -# /etc/sudoers.d/admin 파일 생성 -sudo visudo -f /etc/sudoers.d/admin - -# 다음 내용 추가: -admin ALL=(ALL) NOPASSWD: /usr/bin/cp, /usr/sbin/nginx, /bin/systemctl -``` - -## 프록시 라우팅 - -- `https://ro-being.com/` → 192.168.219.45:5173 (메인 프론트엔드) -- `https://ro-being.com/api/` → 192.168.219.45:8000 (frontend/backend) -- `https://ro-being.com/rb10508/` → 192.168.219.45:10508 (test_api) - -## SSL 설정 - -서버 자체에 SSL 설정 완료: -- Ubuntu 서버에서 certbot으로 SSL 인증서 관리 -- Docker 컨테이너는 8080 포트에서 HTTP만 처리 -- 서버 nginx가 HTTPS → HTTP(8080) 프록시 - -## 로컬 테스트 +## 상태 확인 ```bash -# 서버에서 직접 실행 -cd ~/robeing-nginx -docker compose up -d - -# 로그 확인 -docker compose logs -f nginx - -# 내부 서비스 확인 -curl http://localhost:8080 -``` - -## 배포 상태 확인 - -```bash -# 서비스 상태 확인 +# 서버 상태 확인 curl -I https://ro-being.com - -# 컨테이너 상태 확인 -docker compose ps -```# Test Actions trigger - 2025. 07. 14. (월) 17:20:43 KST +```