프로젝트/[어플리케이션] 토닥

[토닥] 경계선 지능인을 위한 앱 서비스 서버 초기 세팅 및 Redis 설정

마달랭 2025. 5. 27. 16:20

개요

프로젝트 배포를 위한 Ubuntu 서버의 초기 환경 설정과 Redis 컨테이너 구성에 대해 다룬다.
서버 초기 세팅은 시스템 업데이트, 필수 패키지 설치, 보안 설정, Docker 및 GitLab Runner 설치를 포함한다.
Redis는 프로필 서비스의 토큰 관리와 관계 서비스의 세션 관리를 위해 사용되며, Docker 컨테이너로 구성하여 다른 마이크로서비스들과 동일한 네트워크에서 통신할 수 있도록 설정한다.
전체 시스템은 마이크로서비스 아키텍처로 구성되어 있으며, 각 서비스는 독립적인 컨테이너로 실행되면서 공통 네트워크를 통해 연결된다.

 

 

init.sh

# 패키지 목록 업데이트
sudo apt update

# 설치된 패키지 업그레이드
sudo apt upgrade -y

# 불필요한 패키지 제거
sudo apt autoremove -y
sudo apt autoclean

# 기본 유틸리티
sudo apt install -y \
    curl \
    wget \
    vim \
    nano \
    git \
    htop \
    tree \
    unzip \
    zip \
    software-properties-common \
    apt-transport-https \
    ca-certificates \
    gnupg \
    lsb-release

# 네트워크 도구
sudo apt install -y \
    net-tools \
    netstat-nat \
    nmap \
    telnet \
    dnsutils \
    iputils-ping

# 시스템 모니터링
sudo apt install -y \
    iotop \
    iftop \
    tcpdump \
    strace \
    lsof

# UFW 방화벽 활성화
sudo ufw enable

# SSH 포트 허용 (기본 22번)
sudo ufw allow ssh
sudo ufw allow 22/tcp

# HTTP/HTTPS 허용 (웹서버용)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp

# 현재 방화벽 상태 확인
sudo ufw status verbose

# NTP 설치 및 설정
sudo apt install -y ntp
sudo systemctl start ntp
sudo systemctl enable ntp

# 시간대 설정
sudo timedatectl set-timezone Asia/Seoul

 

Ubuntu 서버의 기본 환경을 구성하는 쉘 스크립트다.
시스템 패키지 업데이트, 필수 유틸리티 설치, 네트워크 및 모니터링 도구 설치를 수행한다.
보안을 위해 UFW 방화벽을 설정하고 필요한 포트만 개방하며, 시간 동기화를 위해 NTP를 설정한다.
한국 시간대로 설정하여 로그 및 시스템 시간을 현지화한다.

 

docker-gitlab.sh

# 이전 버전의 Docker 제거 (있는 경우)
sudo apt-get remove docker docker-engine docker.io containerd runc

# 필요한 패키지 설치
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

# Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Docker 저장소 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# Docker 서비스 시작 및 부팅 시 자동 실행 설정
sudo systemctl start docker
sudo systemctl enable docker

# 현재 사용자를 docker 그룹에 추가 (sudo 없이 docker 명령어 실행 가능)
sudo usermod -aG docker $USER

# Docker-Compose 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 심볼릭 링크 생성
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 설치 확인
docker-compose --version

# GitLab Runner 저장소 추가
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

# GitLab Runner 설치
sudo apt-get install gitlab-runner

# GitLab Runner 서비스 시작 및 부팅 시 자동 실행 설정
sudo systemctl start gitlab-runner
sudo systemctl enable gitlab-runner

 

Docker와 Docker-Compose를 설치하고 GitLab CI/CD를 위한 Runner를 설정하는 쉘 스크립트다.
기존 Docker 제거 후 공식 저장소에서 최신 버전을 설치하며, 사용자를 docker 그룹에 추가하여 sudo 없이 Docker 명령어를 실행할 수 있도록 한다.
GitLab Runner는 지속적 통합/배포(CI/CD) 파이프라인을 실행하기 위해 설치된다.

 

redis-init/docker-compose.yml

version: '3.8'

services:
  redis-server:
    image: redis:latest
    container_name: redis-server
    restart: unless-stopped
    networks:
      - app-network

volumes:
  redis_data:
    driver: local

networks:
  app-network:
    external: true
    name: app-network

 

Redis 컨테이너를 구성하는 Docker Compose 설정이다.
최소한의 설정으로 Redis를 실행하며, 외부 네트워크(app-network)를 사용하여 다른 마이크로서비스들과 통신할 수 있도록 구성한다.
포트는 기본값(6379)을 사용하고, 컨테이너 내부에서만 접근 가능하도록 설정하여 보안을 유지한다.

 

서비스별 Redis 연동 설정

spring:
  data:
    redis:
      host: redis-server
      port: 6379

 

간단한 설정으로 Redis에 연결할 수 있다. Docker 네트워크 내부에서는 컨테이너 이름(redis-server)으로 호스트를 지정하고, 기본 포트(6379)를 사용한다.

 

컨테이너 실행 및 관리

# Redis 컨테이너 시작
docker-compose up -d

# 컨테이너 상태 확인
docker ps | grep redis

# Redis 로그 확인
docker logs redis-server -f

# Redis CLI 접속
docker exec -it redis-server redis-cli

# 컨테이너 재시작
docker-compose restart redis-server

# 컨테이너 중지
docker-compose down

 

해당 명령어로 redis-init 디렉토리에서 docker-compose를 통해 컨테이너를 실행 및 모니터링을 진행할 수 있다. 

728x90