배포 이후 정리

한솔·2025년 9월 29일

목적

내가 이번에 할 시나리오는 임시 레포를 CICD를 이용하여 서버에 배포하는 법을 익힐 것이다.
지난 시간에 기존 팀프로젝트를 AWS에 EC2를 이용하여 수동으로 배포해본 적이 있다.
성공적이었고 이제 CICD으로 전환해 주면 되는데 이건 내가 배운 적이 없어서 test용으로 할 생각이다.


새로운 인스턴스 생성하면 보안그룹을 추가해야한다.

보안그룹 & SSH 접근

  • SSH (22): 기본 열려 있음 (터미널 접속)
  • HTTP (80): 웹 요청
  • 사용자 정의 TCP (8080): 스프링 서버 실행 시

접근 시 명령어는

ssh -i "C:\Users\user\Desktop\.ssh\hansolKey.pem" ec2-user@퍼블릭IP

이제 배포할 프로젝트에 맞게 세팅을 해줘야 한다.

1. Java 설치

sudo dnf install -y java-17-amazon-corretto

AL2023에선 amazon-corretto 패키지 사용해야 한다.

// 출력예시
openjdk version "17.0.16" 2025-07-15 LTS
OpenJDK Runtime Environment Corretto-17.0.16.8.1 (build 17.0.16+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.16.8.1 (build 17.0.16+8-LTS, mixed mode, sharing)

버전을 확인해 주면 위 코드와 같이 나온다.

2. MySQL

내가 사용한 DB는 MySQL이다.

먼저 OS 확인해 줘야 한다.

 cat /etc/os-release

다음으로 해줘야 할 건 MySQL 저장소 등록이다.

 sudo rpm -Uvh https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm

이제 설치 및 실행을 진행하면 된다.

sudo dnf install -y mysql-community-server
sudo systemctl enable --now mysqld
systemctl status mysqld --no-pager
 -u root -p

이때 비밀번호를 넣으면 된다.
입력 시 아무것도 안 보이는 게 당연하다.

그러나 에러가 났다.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

임시 비밀번호를 받자

 sudo grep -n "temporary password" /var/log/mysqld.log | tail -1

이렇게 치면 코드가 한 줄 나오는데, 맨 끝에 코드를 암기하자.

r!Lwso-f70PU

나같은 경우 위처럼 생긴 임시 비밀번호를 받았다.

mysql -u root -p

다시 이 명령어를 쳐서 임시 비밀번호를 넣으면 MySQL에 접근이 가능해진다.
접근 성공했으니 비밀번호를 반드시 변경하자.

ALTER USER 'root'@'localhost' IDENTIFIED BY '새비밀번호';
FLUSH PRIVILEGES;

변경을 완료했으면 정상적으로 변경 했는지 확인해야한다.

MySQL에서 빠져나와서 다시

mysql -u root -p

를 입력하여 변경한 비밀번호를 입력하면 된다.

다음으로 할 건 스키마 생성이다.

내 프로젝트의 스키마 이름은 awsTest니까 그대로 진행하겠다.

CREATE DATABASE IF NOT EXISTS awsTest
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

생성된 걸 확인하려면 아래 명령어를 치면된다.

SHOW DATABASES;

3. redis

우리 프로젝트는 redis를 사용하였으니 아마존 리눅스 역시 똑같이 설치해주면 된다.

어째서인지 설치가 너무 간단했다.

설치 명령어

sudo dnf install -y redis6
sudo systemctl enable --now redis6

상태 확인

systemctl status redis6 --no-pager

Ping 테스트

redis6-cli ping

했더니 PONG
정상 설치 완료하였다..

4. git

깃을 설치해야 한다는 걸 빼먹어서 뒤늦게라도 설치했다.

# 1) git 설치
sudo dnf install -y git

# 2) 리포 내려받기 (홈에 awsTest 폴더로)
git clone https://github.com/hansolChoi29/awsTest.git ~/awsTest

cd ~/awsTest
# gradlew에 실행권한 (안 돼도 true로 무시)
chmod +x gradlew || true

# 빌드 (빠르게 하려면 테스트 생략)
./gradlew clean bootJar -x test

빌드 (Gradle Wrapper 사용)

chmod +x gradlew || true
./gradlew clean bootJar -x test

JAR 실행

# 만들어진 JAR 확인
ls -al build/libs

# plain 제외한 실제 JAR 선택
JAR=$(ls build/libs/*.jar | grep -v 'plain' | head -n 1)
echo "JAR=$JAR"

# 기존 프로세스 종료(있으면) 후 실행
pkill -f "java.*$(basename "$JAR")" || true
nohup java -jar "$JAR" --spring.profiles.active=prod > app.log 2>&1 &

# 기동 확인 + 로그 보기
sleep 3
pgrep -f "$(basename "$JAR")" && echo "App RUNNING" || echo "App NOT running"
tail -n 200 app.log

잘 설치가 되었는지 최종확인

  1. 자바
java -version
출력예시
penjdk version "17.0.16" 2025-07-15 LTS
OpenJDK Runtime Environment Corretto-17.0.16.8.1 (build 17.0.16+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.16.8.1 (build 17.0.16+8-LTS, mixed mode, sharing)
  1. MySQL
systemctl status mysqld --no-pager
출력예시 - 마지막 줄만 보면 됨
Started mysqld.service - MySQL Server.
mysql --version
출력예시

mysql  Ver 8.0.43 for Linux on x86_64 (MySQL Community Server - GPL)

로그인확인

mysql -u root -p

비밀번호 입력 후 데이터베이스 확인

SHOW DATABASES;
출력 예시
+--------------------+
| Database           |
+--------------------+
| awsTest            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.05 sec)
  1. redis 확인
systemctl status redis6 --no-pager
출력예시 - 아래 키워드만 체크해 주면 됨
- Active: active (running) → 현재 실행 중
- Status: "Ready to accept connections" → 클라이언트 연결 받을 준비 완료
- Main PID: 30252 (redis6-server)Redis 서버 프로세스 번호
- 포트: `127.0.0.1:6379` → 로컬호스트에서 6379 포트로 대기 중
redis6-cli ping
출력 예시
PONG

CICD : git Action

0개의 댓글