개발

우분투 서버에 프로젝트를 배포해보자

brobro332 2025. 1. 4. 20:12
반응형

필요한 것들

  • 스프링 애플리케이션을 구동시키기 위해 서버에 설치해야 할 것들 목록은 일반적으로 다음과 같다.
    • JDK
    • 톰캣
    • 데이터베이스
  • 필요할 경우 Node.js나 젠킨스 등을 설치하면 된다.
  • 일단 수동 배포할 거니깐 필수로 필요한 목록만 설치할 것이다.
  • 본인은 스프링 부트를 통해 JAR 파일을 배포할 예정이므로 내장 톰캣이 포함되어 있기 때문에 JDK와 데이터베이스만 설치할 것이다

 

JDK 설치

# 우분투 저장소 내 패키지 목록 갱신
sudo apt update

# JDK 설치
sudo apt install openjdk-17-jdk

# JDK 환경설정 등록
sudo vi /etc/environment
JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"

# 수정된 환경설정 반영
source /etc/environment

# 정상적으로 설치됐는지 확인
java -version

 

  • 정상적으로 설치된 경우 버전이 콘솔에 출력된다.
  • 프로젝트를 배포하기 전에 리눅스 기본 명령어나 동작 원리는 간략하게라도 공부하시는 걸 추천드린다.
    안 하는 것보단 낫지만 무작정 따라 하기만 하면 남는 게 없다.

 

데이터베이스 설치 및 설정

 

XE Prior Release Archive

Getting Started: Support Oracle Database Express Edition (XE) is a community supported edition of the Oracle Database family. Please go to the Oracle Database XE Community Support Forum for help, feedback, and enhancement requests. Note: Oracle Support Ser

www.oracle.com

  • 일단 위 사이트에 접속한다.

 

  • 우분투는 리눅스 계열이므로 해당되는 파일을 설치한다.
  • 설치를 위해서는 오라클 계정 로그인이 필요하다.

 

  • 설치를 하고 압축을 풀면 Disk1 폴더 내에 rpm 파일이 있다.

 

  • 해당 파일을 파일질라를 통해 본인 서버의 home/계정 폴더에 전송해 준다.
  • 본 포스팅에서는 파일질라 파일 전송 과정은 생략한다.

 

# 우분투 저장소 내 패키지 갱신
sudo apt-get update

# deb 파일 변환 및 설치를 위한 패키지 설치
sudo apt-get install alien

# deb 파일 변환
sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

# 변환된 deb 파일 설치
sudo dpkg -i oracle-xe_11.2.0-1.0_amd64.deb

# 오라클 데이터베이스 환경설정 등록
sudo /etc/init.d/oracle-xe configure
  • 여기서 가장 중요한 것. deb 파일 변환 시 콘솔 창에 아무것도 출력이 안되는데 중단하지 말고 계속 기다려야 한다.
     
  • 본인은 몇 분 가량 화면이 출력되질 않아서 챗지피티에 Ctrl + C로 복붙 해서 물어보는 과정에서 문제가 생겼다.
  • 리눅스나 일반적인 CLI 환경에서 Ctrl + C 명령어는 작업을 중단하기 때문에 변환이 제대로 되질 않았고, 제대로 변환되지 않은 파일을 통해서 오라클 환경을 구성하려다가 데이터베이스가 제대로 초기화되질 않아서 데이터베이스 접속이 안 되는 문제로 며칠을 삽질했다.
     
  • 설치만 하면 다 정상적으로 가동할까?
  • 오라클은 그렇게 호락호락하지 않다.
  • 정상적으로 애플리케이션을 실행시키기 위해서는 다음 사항들을 고려해야 한다.

 

리스너와 TNS의 메타데이터 통일성

  • 서비스나 호스트명이 다르면 오라클이 인식을 못한다. 인식을 못할 경우 접속이 안 될 수 있다.

 

control_files

  • 데이터베이스에 등록되어 있는 정보와 실제 컨트롤 파일들이 저장되는 경로가 일치하는지 확인해야 한다.
  • 여기서 컨트롤 파일은 실제 DB의 물리적인 정보를 의미한다.

 

select value from v$spparameter where name = 'control_files';
  • 데이터베이스에 등록되어 있는 정보는 관리자로 접속해서 위 쿼리를 통해 확인하면 된다.

 

환경설정

  • 전역 환경설정 ~/.bashrc나 유저별 환경설정 ~/.bash_profile을 고려해야 한다.
  • 유저별 환경설정은 서버에 접속할 때마다 source ~/.bash_profile 명령어를 통해 환경설정을 적용해주어야 한다.
  • 다시 말해 번거로운 작업을 피하고 싶은 환경설정은 ~/.bashrc에 포함시키면 된다.

 

데이터베이스 가동 여부

  • sqlplus / as sysdba 따위의 명령어를 통해 sysdba 계정으로 데이터베이스를 가동해야 한다.
  • 가동할 때 직전까지의 목록들이 지켜지지 않는다면 마운트가 안 되었다는 둥, control_files 경로가 틀리다는 둥의 오류 메시지가 출력된다.
  • 데이터베이스 가동은 관리자 계정에 접속해서 STARTUP 명령어를 입력하면 된다.

 

리스너 가동 여부

  • lsnrctl start를 통해 리스너를 가동하는 것을 의미한다.
  • 데이터베이스를 설치 및 설정 작업을 처리하다 보면 리스너를 끄고, 키고, 상태를 확인하는 등의 작업이 필요하다.
  • 다음 명령어들을 활용하자.

 

#리스너 가동
rsnlctl start

#리스너 중지
rsnlctl stop

#리스너 상태 확인
rsnlctl status

#리스너 서비스(인스턴스) 확인
rsnlctl services
  • 참고로 $ORACLE_HOME/network/admin 경로의 Listener.ora 파일이나 Tnsname.ora 파일을 수정하고 적용하려면 리스너를 중지하고 가동하는 작업이 필요하다. 
  • 상기 고려사항들이 지켜지지 않으면, 다음 명령어를 통한 오라클 접속이 불가능하다.
sqlplus 데이터베이스_ID/데이터베이스_PW@서비스명 

 

JAR 파일 실행

java -D환경설정_키_값='환경설정_값' -jar jar_파일명 --server.port=포트번호

# 예시
# java -DENV='jdbc:oracle:thin:@localhost:1521:xe' -jar jar_파일명 --server.port=8081
  • 먼저 스프링부트를 빌드하면 application.yml 따위의 환경설정 값이 함께 적용되는데, 데이터베이스 URL을 localhost로 설정할 경우 빌드한 PC의 IP 값이 들어가게 된다.
  • 즉 JAR 파일을 실행하는 시점에 AP의 IP를 주입해야 한다는 것이다.
     
  • 또한 오라클 포트번호 기본 값이 8080이므로 포트번호도 JAR 파일을 실행하는 시점에서 다른 값으로 세팅해 주는 것이 적절하다.
본인은 application.yml 파일 내 localhost 설정이 실행 PC의 IP가 세팅되는 줄 알았기 때문에 또 오랜 시간 삽질하였다. 😰

 

테스트

  • 포스트맨 따위를 통해 애플리케이션의 API를 요청해 보면 된다.

 

마치며

이미 AWS 배포를 한 번 해보아서 금방 할 줄 알았다. 
이전에 배포했던 WAR 파일보다 고려해야 될 부분이 적을 줄 알았는데 오라클 데이터베이스가 문제였다.
MySQL에 비해 설치과정도 복잡하고, 초기화도 수동으로 해야 되는 부분이 많다.
 
사실 본인은 도커 컨테이너 환경에서 서버단과 프론트단을 분리할 예정이기 때문에 서버 자체에 데이터베이스를 설치할 필요는 없었는데, JAR 파일 배포는 처음이어서 그래도 해보았다.
 
이제 도커 컨테이너 환경으로 전환하고, 젠킨스 파이프라인 구축해서 CI/CD 환경을 구성하면 된다.
말은 간단한데 이것도 2주 정도 걸리지 않을까 싶다.. 🥶

 

이미지 출처

 

[Linux] Windows10에 우분투(Ubuntu) 18.04 설치하기

참고 사이트 부팅 USB 만들기, 부팅 USB 만들기 부팅 및 우분투 설치 우분투 설치 검은 화면 해결방법 1. 부팅하기 1) 컴퓨터가 꺼진 상태로 USB 연결 2) 전원 버튼을 누름과 동시에 [F11]을 계속 클릭

velog.io