Ubuntu 서버 위에 인프라 구축하기 1단계 : Local DB 연결

이숭늉·2024년 12월 28일
0

DevOps

목록 보기
1/19
post-thumbnail

📢 Ubuntu 서버 위에 인프라 구축하기 1단계

이전에 프로젝트를 진행할 때 어플리케이션 api를 개발하면서 받은 스트레스보다 인프라 구축하면서 받은 스트레스가 더 컸다. 내가 인프라 관련 지식이 정말 부족하구나, 체득이 잘 안됐구나를 정말 뼈저리게 느꼈다. 결국에 성공을 하긴 했지만 다른 분들의 도움이 없었으면 지금까지 못했을 수도 있다.... 그런 의미에서 나 혼자 다시 구축 과정을 진행하고 깔끔하게 기록을 남겨보려 한다!

어플리케이션 배포란?

작성한 코드를 빌드하고, 빌드가 완성된 실행가능 파일을 사용자가 접근할 수 있는 환경에 배치하는 과정을 의미한다.

보통 어플리케이션을 배포한다는 말을 많이 쓰는데 내가 하는 과정은 진정한 의미의 배포는 아니고, 로컬 환경에서 어플리케이션을 구축하는 과정이다. 로컬의 우분투 서버가 아닌 AWS EC2 서버를 활용해서 진행한다면 진정한 의미의 배포가 이루어질 것이다. 우선 나는 로컬만으로의 배포를 진행해보겠다.

1단계 : jar 파일 만들어서 localhost로 mysql 연결하여 Ubuntu 서버 위에만 올리기
2단계 : Docker 컨테이너를 통해 구축하기
3단계 : docker-compose를 통해 구축하기

이 글은 1단계 진행에 대해서만 작성할 것이다.


✅ 흐름

1. jar 파일 빌드
2. jar 파일 실행


진행 과정

1. JAR 파일 빌드

우선 어플리케이션 프로젝트 파일을 우분투 서버 내의 디렉터리로 옮긴다.
나는 for-app-deploy라는 디렉터리를 새로 만들어서 아래로 옮겨주었다.

이제 서버 내에서 JAR 파일을 빌드하기 위한 도구가 필요하다. 빌드 관리 도구와 java를 설치해주어야 한다.
나는 gradle를 사용했으므로 gradle과 java를 설치한다.

# apt 업데이트
sudo apt update

# gradle 설치
sudo add-apt-repository ppa:cwchien/gradle
sudo apt install -y gradle

# 설치 확인
gradle --version

---
# java 설치
sudo apt install -y openjdk-17-jdk

# 설치 확인
java --version

java를 설치한 뒤 java 경로를 찾을 수 있도록 JAVA_HOME 환경변수 설정을 해준다.

# 환경변수 확인
echo $JAVA_HOME

# 아무것도 나오지 않는다면
sudo vi /etc/environment
# JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" 추가
# 적용
source /etc/environment

gradle로 빌드한다. 이때 그냥 빌드하면 권한이 없다고 하니 실행 gradle에 대한 실행 권한을 추가한 후 빌드해야 한다.

# 실행 권한 추가
chmod +x ./gradlew

# 테스트 없이 빌드
./gradlew clean build -x test

무슨 fileHashes.lock파일에 대한 권한이 없다고 빌드가 실패했다.

이전에 내가 root 권한으로 gradlew을 사용한 적이 있었던건가 전에 다른 ubuntu 서버로 실행할 때는 발생하지 않았던 권한 문제가 많이 발생했다.

프로젝트 루트 디렉터리에 대한 소유권과 권한을 확인한 뒤, 소유권을 ubuntu 계정으로 바꾸고, 쓰기 및 실행을 추가해준다.

# 소유권 및 권한 확인
ls -ld /home/ubuntu/for-app-deploy/cicd-test

# 소유권
sudo chown -R ubuntu:ubuntu /home/ubuntu/for-app-deploy/cicd-test

# 권한
chmod -R u+w /home/ubuntu/for-app-deploy/cicd-test

내가 현재 ubuntu 계정을 사용 중이니 권한에 대한 결과는 다음과 같아야 한다.

권한 문제와 씨름하다 빌드에 성공했다.

루트 디렉터리 하위 build/libs 디렉터리에 jar 파일이 생성된 것을 확인할 수 있다!

2. jar 파일 실행

이제 jar 파일이 잘 생성되었으니 어플리케이션 실행을 해보자!

java -jar demo-0.0.1-SNAPSHOT.jar

DB로 쿼리가 잘 날아간다

실행이 잘됐으니 실제로 작동을 잘 하고 있는지 확인하기 위해 api 요청을 보내본다. 이전에 포트포워딩 규칙을 8081 -> 8080으로 설정해두었기 때문에,
http://localhost:8081/api/students로 요청을 보내면 결과를 확인할 수 있다. 로컬의 8081 포트로 요청이 오면 우분투 서버의 8080 포트로 전달해주는 것이다.

작동이 잘 된다.


우분투 서버에서 로컬의 db와 연결해주는 과정은 어렵지 않게 끝났다. 이제 다음 글에서 도커 컨테이너를 활용한 2단계를 진행해볼 것이다!

profile
부지런히 살자

0개의 댓글