🚀 자동 배포 시스템 설정
- Prisma Client darwin-arm64 바이너리 타겟 추가 - 웹훅 기반 자동 배포 스크립트 추가 - PM2 설정 파일들 추가 - 배포 가이드 문서 추가
This commit is contained in:
171
DEPLOYMENT.md
Normal file
171
DEPLOYMENT.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# 🚀 자동 배포 설정 가이드
|
||||
|
||||
## 서버 설정 단계
|
||||
|
||||
### 1. 서버에 프로젝트 클론
|
||||
|
||||
```bash
|
||||
# 서버에서 실행
|
||||
cd /var/www/music/
|
||||
git clone https://git.poptong.net/poptong/music-admin.git
|
||||
cd music-admin
|
||||
```
|
||||
|
||||
### 2. 환경 변수 설정
|
||||
|
||||
```bash
|
||||
# .env 파일 생성
|
||||
nano .env
|
||||
```
|
||||
|
||||
다음 내용 추가:
|
||||
|
||||
```env
|
||||
DATABASE_URL="postgresql://username:password@localhost:5432/music_admin?schema=public"
|
||||
JWT_SECRET="your-secure-jwt-secret-key"
|
||||
NODE_ENV="production"
|
||||
```
|
||||
|
||||
### 3. 의존성 설치 및 빌드
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npx prisma generate
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 4. PM2 설치 및 설정
|
||||
|
||||
```bash
|
||||
# PM2 전역 설치
|
||||
npm install -g pm2
|
||||
|
||||
# 웹훅 서버 시작
|
||||
pm2 start webhook-ecosystem.config.js
|
||||
|
||||
# 메인 앱 시작
|
||||
pm2 start ecosystem.config.js
|
||||
|
||||
# PM2 자동 시작 설정
|
||||
pm2 startup
|
||||
pm2 save
|
||||
```
|
||||
|
||||
### 5. 웹훅 서버 포트 열기
|
||||
|
||||
```bash
|
||||
# UFW 사용 시
|
||||
sudo ufw allow 9000
|
||||
|
||||
# 또는 iptables 사용 시
|
||||
sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
|
||||
```
|
||||
|
||||
### 6. Nginx 설정 (선택사항)
|
||||
|
||||
```nginx
|
||||
# /etc/nginx/sites-available/music-admin
|
||||
server {
|
||||
listen 80;
|
||||
server_name youtooplay.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Gitea 웹훅 설정
|
||||
|
||||
### 1. Gitea 저장소 설정
|
||||
|
||||
1. https://git.poptong.net/ 접속
|
||||
2. music-admin 저장소로 이동
|
||||
3. Settings → Webhooks 클릭
|
||||
4. "Add Webhook" → "Gitea" 선택
|
||||
|
||||
### 2. 웹훅 설정
|
||||
|
||||
- **Payload URL**: `http://youtooplay.com:9000/webhook`
|
||||
- **Content Type**: `application/json`
|
||||
- **Secret**: `your-webhook-secret-key` (webhook-server.js의 SECRET과 동일)
|
||||
- **Events**: `Push` 체크
|
||||
- **Branch**: `main` 선택
|
||||
|
||||
### 3. 웹훅 테스트
|
||||
|
||||
- "Test Delivery" 버튼으로 테스트
|
||||
- 서버 로그 확인: `pm2 logs music-admin-webhook`
|
||||
|
||||
## 배포 테스트
|
||||
|
||||
### 1. 코드 변경 후 push
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "테스트 배포"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### 2. 배포 로그 확인
|
||||
|
||||
```bash
|
||||
# 웹훅 서버 로그
|
||||
pm2 logs music-admin-webhook
|
||||
|
||||
# 메인 앱 로그
|
||||
pm2 logs music-admin
|
||||
|
||||
# 배포 스크립트 로그
|
||||
tail -f /var/log/music-admin-deploy.log
|
||||
```
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### 1. 권한 문제
|
||||
|
||||
```bash
|
||||
# 배포 스크립트 실행 권한
|
||||
chmod +x deploy.sh
|
||||
|
||||
# 프로젝트 디렉토리 권한
|
||||
sudo chown -R $USER:$USER /var/www/music/music-admin
|
||||
```
|
||||
|
||||
### 2. PM2 프로세스 관리
|
||||
|
||||
```bash
|
||||
# 프로세스 상태 확인
|
||||
pm2 status
|
||||
|
||||
# 프로세스 재시작
|
||||
pm2 restart music-admin
|
||||
pm2 restart music-admin-webhook
|
||||
|
||||
# 프로세스 중지
|
||||
pm2 stop music-admin
|
||||
pm2 stop music-admin-webhook
|
||||
```
|
||||
|
||||
### 3. 포트 확인
|
||||
|
||||
```bash
|
||||
# 포트 사용 확인
|
||||
netstat -tlnp | grep :3000
|
||||
netstat -tlnp | grep :9000
|
||||
```
|
||||
|
||||
## 보안 고려사항
|
||||
|
||||
1. **웹훅 시크릿**: 강력한 시크릿 키 사용
|
||||
2. **방화벽**: 필요한 포트만 열기
|
||||
3. **SSL**: HTTPS 사용 권장
|
||||
4. **환경 변수**: 민감한 정보는 환경 변수로 관리
|
||||
Reference in New Issue
Block a user