본문

[Gitlab] Gitlab-CE 설치하기

gitlab-run.sh (m5.large 기준 설정)

중요:

  • 이미 gitlab 컨테이너가 실행 중이라면 먼저 docker stop gitlab && docker rm gitlab로 제거 후 재실행하세요
  • Volume 데이터는 /srv/gitlab/ 경로에 보존되므로 데이터 손실 없이 재시작 가능합니다
# 1. 기존 GitLab 컨테이너 중지 및 삭제 (실행 중인 경우)
sudo docker stop gitlab 2>/dev/null || true
sudo docker rm gitlab 2>/dev/null || true

# 2. GitLab 데이터 완전 삭제
sudo rm -rf /srv/gitlab/config
sudo rm -rf /srv/gitlab/logs  
sudo rm -rf /srv/gitlab/data

# 3. GitLab 데이터 저장용 디렉토리 생성
sudo mkdir -p /srv/gitlab/config
sudo mkdir -p /srv/gitlab/logs
sudo mkdir -p /srv/gitlab/data

# 4. GitLab 컨테이너 실행
sudo docker run --detach \
  --hostname 52.79.152.198 \
  --publish 443:443 --publish 80:80 --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --shm-size 1g \
  --memory 6g \
  -e EXTERNAL_URL="http://52.79.152.198:80" \
  104871657422.dkr.ecr.ap-northeast-2.amazonaws.com/ks2-kai-dev-kabie/kbsec-ai/gitlab:latest

# 5. GitLab 기동 상태 확인
echo "GitLab 기동 중... 5-10분 정도 소요됩니다."
sudo docker logs -f gitlab

 

 

gitlab-run.sh (c6i.2xlarge 기준 설정)

#!/bin/bash

# GitLab 실행 스크립트 (c6i.2xlarge 최적화)
# c6i.2xlarge: 8 vCPU, 16GB RAM, 네트워크 최적화

# 1. 기존 GitLab 컨테이너 중지 및 삭제 (실행 중인 경우)
echo "기존 GitLab 컨테이너 정리 중..."
sudo docker stop gitlab 2>/dev/null || true
sudo docker rm gitlab 2>/dev/null || true

# 2. GitLab 데이터 완전 삭제
echo "기존 GitLab 데이터 삭제 중..."
sudo rm -rf /srv/gitlab/config
sudo rm -rf /srv/gitlab/logs
sudo rm -rf /srv/gitlab/data

# 3. GitLab 데이터 저장용 디렉토리 생성
겐echo "GitLab 데이터 디렉토리 생성 중..."
sudo mkdir -p /srv/gitlab/config
sudo mkdir -p /srv/gitlab/logs
sudo mkdir -p /srv/gitlab/data

# 4. GitLab 컨테이너 실행 (c6i.2xlarge 최적화 설정)
echo "GitLab 컨테이너 실행 중..."
sudo docker run --detach \
  --hostname 52.79.152.198 \
  --publish 443:443 --publish 80:80 --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --shm-size 2g \
  --memory 14g \
  --memory-swap 16g \
  --cpus="7.5" \
  --ulimit nofile=65536:65536 \
  --ulimit nproc=65536:65536 \
  -e EXTERNAL_URL="http://52.79.152.198:80" \
  -e GITLAB_OMNIBUS_CONFIG="
    # PostgreSQL 설정 (c6i.2xlarge 최적화)
    postgresql['shared_buffers'] = '4GB'
    postgresql['effective_cache_size'] = '12GB'
    postgresql['work_mem'] = '64MB'
    postgresql['maintenance_work_mem'] = '512MB'
    postgresql['max_connections'] = 300
    postgresql['checkpoint_segments'] = 32
    postgresql['checkpoint_completion_target'] = 0.9
    postgresql['wal_buffers'] = '64MB'
    postgresql['random_page_cost'] = 1.1
    
    # Redis 설정
    redis['maxmemory'] = '1GB'
    redis['maxmemory_policy'] = 'allkeys-lru'
    
    # Puma 웹 서버 설정 (8 vCPU 활용)
    puma['worker_processes'] = 6
    puma['worker_timeout'] = 60
    puma['min_threads'] = 4
    puma['max_threads'] = 8
    
    # Sidekiq 백그라운드 작업 설정
    sidekiq['max_concurrency'] = 20
    sidekiq['queue_selector'] = true
    
    # Git 설정
    git['timeout'] = 300
    gitaly['ruby_max_rss'] = 1000000000
    gitaly['concurrency'] = [
      {
        'rpc' => '/gitaly.SmartHTTPService/PostReceivePack',
        'max_per_repo' => 20
      },
      {
        'rpc' => '/gitaly.SSHService/SSHUploadPack',
        'max_per_repo' => 20
      }
    ]
    
    # Nginx 설정
    nginx['worker_processes'] = 8
    nginx['worker_connections'] = 2048
    nginx['keepalive_timeout'] = 65
    nginx['client_max_body_size'] = '1024m'
    nginx['gzip'] = 'on'
    nginx['gzip_types'] = 'text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript'
    
    # 모니터링 설정
    prometheus_monitoring['enable'] = true
    grafana['enable'] = true
    
    # 보안 설정
    gitlab_rails['rack_attack_git_basic_auth'] = {
      'enabled' => true,
      'maxretry' => 10,
      'findtime' => 60,
      'bantime' => 3600
    }
    
    # 캐시 설정
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    gitlab_rails['time_zone'] = 'Asia/Seoul'
    
    # 백업 설정
    gitlab_rails['backup_keep_time'] = 604800
    gitlab_rails['backup_archive_permissions'] = 0644
  " \
  104871657422.dkr.ecr.ap-northeast-2.amazonaws.com/ks2-kai-dev-kabie/kbsec-ai/gitlab:latest

# 5. GitLab 기동 상태 확인
echo "======================================"
echo "GitLab 기동 중... 5-10분 정도 소요됩니다."
echo "c6i.2xlarge 최적화 설정 적용됨:"
echo "- 메모리: 14GB (16GB 중)"
echo "- CPU: 7.5 cores (8 vCPU 중)"
echo "- 공유 메모리: 2GB"
echo "- PostgreSQL 최적화 설정"
echo "- Puma 워커 6개 프로세스"
echo "- Sidekiq 동시성 20"
echo "======================================"

# 6. GitLab 로그 실시간 모니터링
echo "GitLab 로그를 실시간으로 확인합니다..."
echo "Ctrl+C로 로그 모니터링을 중단할 수 있습니다."
sudo docker logs -f gitlab

 

 

 

p.s. 명령어

# GitLab 로그 실시간 확인
sudo docker logs -f gitlab

# 상태 확인 (Ctrl+C로 로그 모니터링 중단 후)
sudo docker exec -it gitlab gitlab-ctl status

설치 완료

 

 

 

회원가입 자동 승인 설정

Admin Area → Settings → General → Sign-up restrictions 
→ "Require admin approval for new sign-ups" 체크 해제

 

 

 

p.s. 개별 사용자 승인

Admin Area (렌치 아이콘) → Users → Pending approval 탭 → 해당 사용자 → Approve

 

공유

댓글