# 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