CI/CD를 적용하기 전, 배포를 직접 해보고 CD의 필요성을 느껴보기로 했다.
방법 1. EC2에 git clone으로 레포지터리 복사
git 명령어만 사용하면 되서 매우 편리
EC2를 free tier로 사용하게 될 경우, t2.micro의 Ram이 1G밖에 되지 않아서, node나 spring만 띄우더라도 메모리가 부족
이 방법을 사용하려면 Swap Memory를 적용해야 됨
방법 2. Local에서 jar 파일 만들어서 EC2로 보내기
복잡할 거 없이 그냥 Local에서 만들고 올리면 됨
수정할 때마다 EC2에 다시 올려야 됨
나는 방법 1로 진행해보기로 했다.
스왑 메모리 설정은 링크를 참조해서 진행했다.
# 메모리 용량 체크
free -h

# 디스크 용량 체크
df -h

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile

sudo swapon /swapfile

sudo vi /etc/fstab

i 눌러서 insert 모드로 변경
/swapfile swap swap defaults 0 0
위 내용을 추가 후, esc를 누르고 :wq 입력

sudo 권한으로 apt 업데이트하고 openjdk v17을 설치한다
sudo apt update
sudo apt install openjdk-17-jdk -y
자바 버전 확인
java -version
javac -version
자바 설치 경로 확인
update-alternatives --list java
내 경로는 다음과 같다
JAVA_HOME 설정을 전역적으로 하기 위해서 root 계정 프로필을 수정
sudo vim /etc/profile
i를 눌러서 insert 모드로 변경
가장 아래로 이동해서 아래 내용을 추가
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 //본인 자바 설치 경로
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

설정한 환경변수를 적용하기 위해서, 아래 코드를 실행
source /etc/profile
환경 변수를 확인하기 위해서는 아래 코드를 실행
echo $JAVA_HOME

git --version

git이 설치되어 있지 않다면 git을 먼저 설치한다.
sudo apt-get install git
cd ~/.ssh
ssh-keygen -t rsa -C github계정 메일(example@github.com)

cat id_rsa.pub
위 명령어를 입력하면 id_rsa.pub 파일 내용을 가져올 수 있다.

프로필 -> Settings -> SSH and GPT Keys


/home 디렉토리 하위에 있는 ubuntu 폴더에 들어감
그 후 ubuntu 폴더 내에 project 폴더 생성
# 폴더 생성
mkdir project
# project 폴더 내로 이동
cd project

git repository에서 ssh 주소를 복사

git clone ssh주소
yes/no를 입력하라는 창이 나온다면 yes를 선택하면 clone이 진행됨
clone이 다 됐다면 ls 명령어로 확인

만약 특정 branch를 clone 하고 싶다면 아래 코드를 실행한다.
git clone -b 브랜치이름 ssh 주소
예를 들어 내가 feature/cache라는 branch를 clone하고 싶다면
git clone -b feature/cache git@github.com:HwangSeungHyeon/buysell.git
라고 입력한다.
.bashrc 파일에 필요한 환경변수를 선언하여 shell이 시작될 때마다 실행되도록 만든다.
vi ~/.bashrc
맨 아래에 환경 변수 내용을 입력한다.

esc를 누르고 :wq를 입력해서 저장한다.
설정한 환경 변수를 사용할 수 있도록 아래 코드를 실행한다.
source ~/.bashrc
환경 변수를 확인하고 싶다면 아래 코드를 사용한다.
echo $환경변수
./gradlew build
만약 Permission Denied 에러가 발생한다면 아래 명령어를 실행한다.
chmod +x ./gradlew
그 후 다시 빌드를 진행한다.
./gradlew build
혹시 실패했다면 빌드된 파일 지웠다가 다시 빌드 실행
./gradlew clean build
테스트를 제외하고 싶다면 아래 내용으로 빌드를 진행한다.
./gradlew clean build -x test
빌드가 성공했다면 jar 파일 위치로 이동한다.
jar 파일은 프로젝트명/build/libs 경로에 있다.

jar 파일을 실행하려면 java -jar 어플이름-0.0.1-SNAPSHOT.jar을 입력한다.
나는 아래처럼 입력했다.
java -jar buysell-0.0.1-SNAPSHOT.jar
에러가 발생하지 않았다면 public ip 주소:8080/swagger-ui/index.html 에 접속해서 테스트한다.
퍼블릭 ip 주소는 EC2 인스턴스에서 확인할 수 있다.

만약 Swagger 화면으로 접속이 안 된다면 EC2 인스턴스의 인바운드 규칙을 수정한다.
