# AgentC 다중 사이트 관리 시스템 배포 가이드

## 개요

이 문서는 AgentC 다중 사이트 관리 시스템의 배포 및 운영을 위한 종합 가이드입니다.

## 시스템 아키텍처

### 핵심 구성 요소

1. **다중 테넌트 아키텍처**

   - 사이트별 데이터 격리
   - 도메인 기반 라우팅
   - 템플릿 시스템

2. **관리자 인터페이스**

   - 사이트 생성 및 관리
   - 템플릿 할당
   - 도메인 설정

3. **API 레이어**
   - RESTful API 엔드포인트
   - 인증 및 권한 관리
   - 데이터 검증

## 배포 전 체크리스트

### 환경 설정

- [ ] Node.js 18+ 설치 확인
- [ ] 데이터베이스 설정 (SQLite/PostgreSQL)
- [ ] 환경 변수 설정
- [ ] SSL 인증서 준비

### 필수 환경 변수

```bash
# 데이터베이스
DATABASE_URL="your_database_url"

# 인증
NEXTAUTH_SECRET="your_secret_key"
NEXTAUTH_URL="https://your-domain.com"

# 이메일 (선택사항)
EMAIL_SERVER_HOST="smtp.example.com"
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER="your_email"
EMAIL_SERVER_PASSWORD="your_password"
EMAIL_FROM="noreply@your-domain.com"
```

## 단계별 배포 프로세스

### 1단계: 코드 배포

```bash
# 저장소 클론
git clone <repository-url>
cd agentc-starter-kit

# 의존성 설치
npm install

# 환경 변수 설정
cp .env.example .env.local
# .env.local 파일 편집

# 데이터베이스 마이그레이션
npm run db:migrate

# 프로덕션 빌드
npm run build
```

### 2단계: 데이터베이스 초기화

```bash
# 초기 데이터 시드
npm run db:seed

# 관리자 계정 생성
npm run create-admin
```

### 3단계: 서버 시작

```bash
# 프로덕션 모드로 시작
npm start

# 또는 PM2 사용
pm2 start ecosystem.config.js
```

## 시스템 검증

### 기능 테스트

1. **관리자 로그인**

   - `/admin/login` 접속
   - 관리자 계정으로 로그인 확인

2. **사이트 생성 테스트**

   - `/admin/sites/create` 접속
   - 새 사이트 생성 프로세스 완료
   - 생성된 사이트 접속 확인

3. **템플릿 적용 테스트**

   - 비즈니스 템플릿 적용
   - 포트폴리오 템플릿 적용
   - 템플릿 전환 기능 확인

4. **도메인 설정 테스트**
   - 서브도메인 설정
   - 커스텀 도메인 연결
   - SSL 인증서 적용

### 성능 테스트

```bash
# 로드 테스트 (선택사항)
npm run test:load

# 보안 스캔 (선택사항)
npm run test:security
```

## 운영 가이드

### 일상 관리 작업

1. **사이트 모니터링**

   - 사이트 상태 확인
   - 성능 메트릭 검토
   - 오류 로그 모니터링

2. **백업 관리**

   - 데이터베이스 정기 백업
   - 파일 시스템 백업
   - 백업 복원 테스트

3. **보안 관리**
   - 정기 보안 업데이트
   - 액세스 로그 검토
   - 권한 관리

### 문제 해결

#### 일반적인 문제

1. **사이트 접속 불가**

   ```bash
   # DNS 설정 확인
   nslookup your-domain.com

   # 서버 상태 확인
   pm2 status

   # 로그 확인
   pm2 logs
   ```

2. **데이터베이스 연결 오류**

   ```bash
   # 연결 테스트
   npm run db:test

   # 마이그레이션 상태 확인
   npm run db:status
   ```

3. **템플릿 로딩 오류**
   - 템플릿 파일 존재 확인
   - 권한 설정 검토
   - 캐시 클리어

## 확장 및 업그레이드

### 새 템플릿 추가

1. 템플릿 파일 생성
2. 데이터베이스에 템플릿 정보 추가
3. 관리자 인터페이스에서 확인

### 시스템 업그레이드

1. 백업 생성
2. 새 버전 배포
3. 데이터베이스 마이그레이션
4. 기능 테스트

## 지원 및 연락처

- **기술 지원**: tech-support@agentc.com
- **문서**: https://docs.agentc.com
- **이슈 트래킹**: https://github.com/agentc/issues

## 부록

### A. API 엔드포인트 목록

- `GET /api/sites` - 사이트 목록 조회
- `POST /api/sites` - 새 사이트 생성
- `GET /api/sites/[id]` - 특정 사이트 조회
- `PUT /api/sites/[id]` - 사이트 정보 수정
- `DELETE /api/sites/[id]` - 사이트 삭제

### B. 데이터베이스 스키마

```sql
-- 사이트 테이블
CREATE TABLE sites (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  slug TEXT UNIQUE NOT NULL,
  description TEXT,
  template TEXT NOT NULL,
  status TEXT DEFAULT 'draft',
  subdomain TEXT,
  custom_domain TEXT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
```

### C. 환경별 설정

#### 개발 환경

```bash
NODE_ENV=development
DATABASE_URL="file:./dev.db"
```

#### 스테이징 환경

```bash
NODE_ENV=staging
DATABASE_URL="postgresql://user:pass@staging-db:5432/agentc"
```

#### 프로덕션 환경

```bash
NODE_ENV=production
DATABASE_URL="postgresql://user:pass@prod-db:5432/agentc"
```
