Skip to content

2025Chungnamthon/2025_CHUNGNAM_TEAM_3_INFRA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš— DaeCar Infrastructure

λŒ€μΉ΄(DaeCar) ν”„λ‘œμ νŠΈμ˜ 인프라 μ„€μ • 및 배포λ₯Ό μœ„ν•œ λ ˆν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€.

πŸ“‹ κ°œμš”

이 λ ˆν¬μ§€ν† λ¦¬λŠ” λ‹€μŒμ„ ν¬ν•¨ν•©λ‹ˆλ‹€:

  • 개발 ν™˜κ²½: HTTP 기반 둜컬 개발 ν™˜κ²½
  • 배포 ν™˜κ²½: Let's Encrypt HTTPS 기반 ν”„λ‘œλ•μ…˜ ν™˜κ²½
  • CI/CD: Jenkins νŒŒμ΄ν”„λΌμΈ
  • 인프라: MySQL, Redis, RabbitMQ, Nginx

πŸ— μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      │────│    Nginx     │────│   Backend       β”‚
β”‚                 β”‚    β”‚  (Reverse    β”‚    β”‚   (Spring Boot) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚   Proxy)     β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚         β”‚         β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
            β”‚   MySQL   β”‚ β”‚ Redis β”‚ β”‚ RabbitMQ β”‚
            β”‚           β”‚ β”‚       β”‚ β”‚          β”‚
            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ λΉ λ₯Έ μ‹œμž‘

개발 ν™˜κ²½ (HTTP)

# 1. λ ˆν¬μ§€ν† λ¦¬ 클둠
git clone <repository-url>
cd DaeCar_INFRA

# 2. 개발 ν™˜κ²½ μ‹œμž‘
cd docker-compose
docker-compose up -d

# 3. 접속 확인
curl http://localhost

개발 ν™˜κ²½ 접속 μ£Όμ†Œ:

배포 ν™˜κ²½ (HTTPS)

# 1. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp .env.example .env
# .env νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ μ‹€μ œ 도메인과 νŒ¨μŠ€μ›Œλ“œ μ„€μ •

# 2. SSL μΈμ¦μ„œ λ°œκΈ‰ 및 배포
./scripts/deploy-ssl.sh

# 3. μ„œλΉ„μŠ€ μƒνƒœ 확인
cd docker-compose
docker-compose -f docker-compose.prod.yml ps

πŸ“ 디렉토리 ꡬ쑰

DaeCar_INFRA/
β”œβ”€β”€ docker-compose/
β”‚   β”œβ”€β”€ docker-compose.yml      # 개발 ν™˜κ²½
β”‚   └── docker-compose.prod.yml # 배포 ν™˜κ²½
β”œβ”€β”€ nginx/
β”‚   β”œβ”€β”€ nginx.dev.conf          # 개발용 μ„€μ • (HTTP)
β”‚   β”œβ”€β”€ nginx.prod.conf         # 배포용 μ„€μ • (HTTPS)
β”‚   └── index.html              # 메인 νŽ˜μ΄μ§€
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ generate-ssl-cert.sh    # 자체 μ„œλͺ… μΈμ¦μ„œ 생성
β”‚   └── deploy-ssl.sh           # Let's Encrypt 배포
β”œβ”€β”€ ssl/                        # SSL μΈμ¦μ„œ μ €μž₯μ†Œ
β”œβ”€β”€ jenkins/
β”‚   └── deploy-jenkinsfile      # CI/CD νŒŒμ΄ν”„λΌμΈ
β”œβ”€β”€ .env.example                # ν™˜κ²½ λ³€μˆ˜ 예제
└── README.md

πŸ”§ μ„œλΉ„μŠ€ ꡬ성

개발 ν™˜κ²½

  • Nginx: HTTP λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ (포트 80)
  • MySQL: 8.0 (포트 3306, root/rootpassword)
  • Redis: 7-alpine (포트 6379, νŒ¨μŠ€μ›Œλ“œ μ—†μŒ)
  • RabbitMQ: 3-management (포트 5672, 15672)

배포 ν™˜κ²½

  • Nginx: HTTPS λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ (포트 80 β†’ 443)
  • MySQL: 8.0 (ν™˜κ²½λ³€μˆ˜ 기반 νŒ¨μŠ€μ›Œλ“œ)
  • Redis: 7-alpine (νŒ¨μŠ€μ›Œλ“œ 보호)
  • RabbitMQ: 3-management (νŒ¨μŠ€μ›Œλ“œ 보호)
  • Certbot: Let's Encrypt μžλ™ κ°±μ‹ 

πŸ›‘ λ³΄μ•ˆ μ„€μ •

개발 ν™˜κ²½

  • HTTP μ „μš© (SSL μ—†μŒ)
  • κΈ°λ³Έ νŒ¨μŠ€μ›Œλ“œ μ‚¬μš©
  • λͺ¨λ“  포트 λ…ΈμΆœ

배포 ν™˜κ²½

  • HTTPS κ°•μ œ: HTTP β†’ HTTPS λ¦¬λ‹€μ΄λ ‰νŠΈ
  • SSL/TLS: Let's Encrypt μΈμ¦μ„œ, TLS 1.2/1.3
  • λ³΄μ•ˆ 헀더: HSTS, CSP, X-Frame-Options λ“±
  • Rate Limiting: API 호좜 μ œν•œ (10req/s)
  • νŒ¨μŠ€μ›Œλ“œ 보호: λͺ¨λ“  μ„œλΉ„μŠ€ κ°•λ ₯ν•œ νŒ¨μŠ€μ›Œλ“œ
  • 둜그 관리: κ΅¬μ‘°ν™”λœ JSON 둜그

πŸ“ ν™˜κ²½ λ³€μˆ˜

.env νŒŒμΌμ—μ„œ λ‹€μŒ λ³€μˆ˜λ“€μ„ μ„€μ •ν•˜μ„Έμš”:

# 도메인 μ„€μ •
DOMAIN=your-domain.com
SSL_EMAIL=admin@your-domain.com

# λ°μ΄ν„°λ² μ΄μŠ€
MYSQL_ROOT_PASSWORD=secure_password
MYSQL_PASSWORD=user_password

# Redis
REDIS_PASSWORD=redis_password

# RabbitMQ
RABBITMQ_USER=admin
RABBITMQ_PASSWORD=rabbitmq_password

πŸ”„ SSL μΈμ¦μ„œ 관리

초기 λ°œκΈ‰

./scripts/deploy-ssl.sh

μˆ˜λ™ κ°±μ‹ 

cd docker-compose
docker-compose -f docker-compose.prod.yml run --rm certbot-renew
docker-compose -f docker-compose.prod.yml restart nginx

μžλ™ κ°±μ‹  (Cron)

# crontab -e에 μΆ”κ°€
0 2 * * * cd /path/to/DaeCar_INFRA/docker-compose && docker-compose -f docker-compose.prod.yml run --rm certbot-renew && docker-compose -f docker-compose.prod.yml restart nginx

🚦 μƒνƒœ 확인

ν—¬μŠ€μ²΄ν¬

# 개발 ν™˜κ²½
curl http://localhost/health

# 배포 ν™˜κ²½
curl https://your-domain.com/health

μ„œλΉ„μŠ€ μƒνƒœ

# 개발 ν™˜κ²½
docker-compose ps

# 배포 ν™˜κ²½
docker-compose -f docker-compose.prod.yml ps

둜그 확인

# νŠΉμ • μ„œλΉ„μŠ€ 둜그
docker-compose logs -f nginx

# λͺ¨λ“  μ„œλΉ„μŠ€ 둜그
docker-compose logs -f

πŸ›  νŠΈλŸ¬λΈ”μŠˆνŒ…

SSL μΈμ¦μ„œ 문제

# μΈμ¦μ„œ μƒνƒœ 확인
openssl x509 -in ssl/letsencrypt/live/your-domain.com/fullchain.pem -text -noout

# μΈμ¦μ„œ 만료일 확인
openssl x509 -enddate -noout -in ssl/letsencrypt/live/your-domain.com/fullchain.pem

λ„€νŠΈμ›Œν¬ μ—°κ²° 문제

# 포트 확인
netstat -tlnp | grep -E ':80|:443'

# DNS 확인
nslookup your-domain.com

μ»¨ν…Œμ΄λ„ˆ 문제

# μ»¨ν…Œμ΄λ„ˆ μž¬μ‹œμž‘
docker-compose restart nginx

# 둜그 확인
docker-compose logs nginx

πŸ“ž 지원

λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”:

  1. ν™˜κ²½ λ³€μˆ˜: .env 파일 μ„€μ • 확인
  2. DNS μ„€μ •: 도메인이 μ„œλ²„ IPλ₯Ό κ°€λ¦¬ν‚€λŠ”μ§€ 확인
  3. λ°©ν™”λ²½: 80, 443 포트 개방 확인
  4. 둜그: docker-compose logs 둜 μ—λŸ¬ λ©”μ‹œμ§€ 확인

Team 3rd - 2025 좩남 해컀톀 πŸš—πŸ’¨

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published