본문
[Gitlab] Gitlab-CE 설치하기
프로그래밍/CICD 2025. 12. 18. 21:02
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
댓글