명령어
sdp agent
포그라운드에서 에이전트를 실행합니다. 테스트/디버깅용.
# 기본 설정 파일 사용
sdp agent
# 설정 파일 경로 지정
sdp agent -c C:\path\to\agent.yaml
Ctrl + C로 종료합니다.
sdp agent install
Windows 서비스로 등록하고 시작합니다.
sdp agent install
관리자 권한이 필요합니다. PowerShell을 관리자로 실행하세요.
sdp agent uninstall
서비스를 중지하고 등록을 해제합니다.
sdp agent uninstall
서비스 관리
설치 절차
- 서버에
sdp.exe복사 (예:C:\SDP\sdp.exe) - 설정 파일 작성:
C:\ProgramData\SDP\agent.yaml - 관리자 PowerShell에서 설치:
cd C:\SDP .\sdp.exe agent install
서비스 상태 확인
# PowerShell
Get-Service SaigeDeployAgent
# 또는 sc 명령어
sc query SaigeDeployAgent
서비스 수동 제어
# 시작
Start-Service SaigeDeployAgent
# 중지
Stop-Service SaigeDeployAgent
# 재시작
Restart-Service SaigeDeployAgent
서비스는 시스템 시작 시 자동으로 실행됩니다.
설정 파일
기본 경로: C:\ProgramData\SDP\agent.yaml
# gRPC 서버 설정
server:
host: 0.0.0.0 # 모든 인터페이스에서 수신
port: 50051 # gRPC 포트
# 인증
auth:
api_key: "your-secret-api-key-here"
# 허용된 배포 경로 (보안)
allowed_paths:
- C:\Saige
# 허용된 서비스 목록 (보안)
allowed_services:
- saige-vims-server
- saige-vims-server
- saige-vims-server
# 임시 파일 저장 경로
temp_dir: C:\ProgramData\SDP\temp
# 롤백 설정
rollback:
enabled: true
max_backups: 5
backup_dir: C:\ProgramData\SDP\backups
skip_on_low_disk: true
min_free_disk_gb: 10
# 데이터베이스 (SQLite)
database:
dir: C:\ProgramData\SDP\db
# 로그 설정
log:
level: info
dir: C:\ProgramData\SDP\logs
max_size_mb: 100
max_files: 10
설정 필드 설명
server
| 필드 | 기본값 | 설명 |
|---|---|---|
host | 0.0.0.0 | 바인딩할 IP (0.0.0.0 = 모든 인터페이스) |
port | 50051 | gRPC 포트 |
rollback
| 필드 | 기본값 | 설명 |
|---|---|---|
enabled | true | 백업 활성화 여부 |
max_backups | 5 | 경로별 최대 백업 수 |
backup_dir | - | 백업 저장 경로 |
skip_on_low_disk | true | 디스크 부족 시 백업 스킵 |
min_free_disk_gb | 10 | 최소 여유 공간 (GB) |
log
| 필드 | 기본값 | 설명 |
|---|---|---|
level | info | 로그 레벨 (trace, debug, info, warn, error) |
dir | - | 로그 파일 경로 |
max_size_mb | 100 | 파일당 최대 크기 |
max_files | 10 | 보관할 파일 수 |
디렉터리 구조
C:\ProgramData\SDP\
├── agent.yaml # 서버 설정
├── db\
│ ├── history.db # 배포 이력 DB
│ └── backups.db # 백업 메타데이터 DB
├── temp\ # 임시 파일 (전송 중)
├── backups\ # 롤백용 백업
│ ├── 1\ # backup_id = 1
│ ├── 2\ # backup_id = 2
│ └── ...
└── logs\
├── sdp-agent.2024-01-15.log
├── sdp-agent.2024-01-16.log
└── ...
백업 폴더 이름은 backups.db의 PRIMARY KEY (backup_id)를 사용합니다.
보안 설정
허용된 경로 (allowed_paths)
지정된 경로의 하위 폴더에만 배포 및 로그 조회를 허용합니다. 클라이언트의 sdp push 배포 경로와 sdp logs 로그 파일 경로 모두 이 범위 안에 있어야 합니다.
allowed_paths:
- C:\Saige
- D:\Deploy
| 요청 경로 | 용도 | 결과 |
|---|---|---|
C:\Saige\SaigeVIMS\bin | 배포 | ✓ 허용 |
C:\Saige\SaigeVIMS\logs\server.log | 로그 | ✓ 허용 |
D:\Deploy\api | 배포 | ✓ 허용 |
C:\Windows\System32 | - | ✗ 거부 |
E:\Other\app.log | 로그 | ✗ 거부 |
허용된 서비스 (allowed_services)
지정된 서비스만 재시작을 허용합니다.
allowed_services:
- saige-vims-server
- saige-vims-server
- saige-vims-server
| 서비스 이름 | 결과 |
|---|---|
saige-vims-server | ✓ 허용 |
saige-vims-server | ✓ 허용 |
nginx | ✗ 거부 |
MySQL | ✗ 거부 |
API Key 인증
모든 요청에 API Key가 필요합니다. 클라이언트와 서버의 키가 일치해야 합니다.
# 서버 (agent.yaml)
auth:
api_key: "your-secret-api-key"
# 클라이언트 (.sdp/config.yaml)
server:
api_key: "your-secret-api-key"
API Key는 외부에 노출되지 않도록 주의하세요. 설정 파일을 git에 커밋하지 마세요.