들어가며
이전 글에서 Oracle Cloud 인스턴스를 생성했다.
이번에는 생성한 인스턴스에 Comehaer 앱을 배포해보도록 한다.
참고로 Comehear는 spring boot + gradle 를 활용한 앱이다.
우선 설치한 인스턴스에 SSH를 이용하여 접속한다.
JDK 설치
1. 루트권한 전환
sudo -s
2. jdk 11 버전 다운
Comehear의 환경이 자바 11이었기 때문에 동일하게 맞춰주었다.
wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
3. 압축 해제, 설치, 이동
tar xvf openjdk-11.0.2_linux-x64_bin.tar.gz
sudo mv jdk-11.0.2/ /opt/jdk-11/
4. vim 설치
환경변수 설정을 위해 vim을 설치한다.
sudo apt-get update
sudo apt-get install vim
5. 환경변수 설정
vim ~/.bashrc
bashrc 파일을 열어 파일 끝으로 가서 아래 두줄을 추가해준다.
export JAVA_HOME=/opt/jdk-11
export PATH=$PATH:$JAVA_HOME/bin
6. 변경 적용
source ~/.bashrc
7. 설치 확인
제대로 설치됐는지 확인해본다.
echo $JAVA_HOME
java --version
배포
jdk를 설치했다면 배포할 준비가 되었다.
배포하는데는 여러 방법들이 있다.
git이나 docker를 활용할 수도 있고, 로컬에서 빌드하여 직접 빌드파일을 올릴수도 있다.
이번 글에서는 로컬에서 빌드한 파일을 올려서 배포해보려고 한다.
Java는 jar와 war 배포 방식이 있는데
간단히 비교하자면
jar는 JDK에 포함되어있는 JRE만 있어도 실행이 가능하고,
war는 tomcat같은 웹 서버나 웹 컨테이너를 필요로 한다.
좀더 깊숙히 살펴보면
jar와 war의 압축 파일 구조, jsp와 같은 webapp 관련 파일, 내/외장 톰캣 등 알아볼게 많기때문에
자세한 것은 따로 포스팅하기로 하고
본 글에서는 간단히 jar 배포로 진행한다.
빌드
intellij 기준 오른쪽 상단을 보면 gradle 탭이 있는데
Tasks > build > bootJar 를 오른쪽 클릭하여 빌드를 진행한다.
빌드에 성공하면
프로젝트 > build > libs에 jar 파일이 생성된다.
업로드
빌드한 jar파일을 이전글에서 사용한 mobaxterm을 활용하여 인스턴스에 올려본다.
왼쪽 탭에 마우스 우클릭을 하여 upload to current folder를 누르고
jar파일을 올려준다.
방화벽 허용
comehear의 포트는 5000번이기 때문에
5000번 포트를 허용해주었다.
// sudo iptables -I INPUT 1 -p tcp --dport `포트번호` -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT
실행
올려준 jar파일을 명령어로 실행한다.
// java -jar `파일명`.jar
java -jar comehear-0.0.1-SNAPSHOT.jar
해당 명령어를 실행하면 정상적으로 기동되는것을 볼 수 있다.
접속 확인
정상적으로 접속이 되는 것을 확인할 수 있다.
Jasypt (Java Simplified Encryption)
여기서 하나
comehear의 환경설정(yaml) 파일은 jasypt (Java Simplified Encryption) 라이브러리를 사용하여 암호화되어있다.
로컬에서 빌드할 때는 Intellij 기준 run configurations 에서
Build and run > VM options 에다가
암호화한 비밀번호를 아래 그림처럼 넣으면 됐었다.
인스턴스에 jar 파일로 배포할때에는 아래처럼 추가해주면 된다.
//java -Djasypt.encryptor.password=`비밀번호` -jar `파일명`.jar
java -Djasypt.encryptor.password=12341234 -jar comehear-0.0.1-SNAPSHOT.jar
백그라운드 실행
또 하나,
위 명령어로 실행 시, 세션이 종료되면 프로그램도 종료된다.
백그라운드로 실행하려면 아래처럼 하면 된다.
// nohup java -jar `파일명`.jar
nohup java -Djasypt.encryptor.password=12341234 -jar comehear-0.0.1-SNAPSHOT.jar
nohup 은 no hang up의 약자로, hang up(프로세스 중단) 을 하지 않도록(no) 하는 명령어다.
로그 확인
일반 실행이 아닌 백그라운드 실행 시, 로그를 확인하기 위해서
아래와 같이 명령어를 추가할 수 있다.
// nohup java -jar `파일명`.jar > `로그파일명`.log 2>&1 &
nohup java -Djasypt.encryptor.password=12341234 -jar comehear-0.0.1-SNAPSHOT.jar > comehear.log 2>&1 &
2>&1은 표준에러(2)도 표준 출력(1)이 쓰여지는 파일(comehear.log)에 같이 남긴다는 뜻이다.
`> comehear.log` 를 입력하지 않으면 nohup.out 파일이 자동 생성된다.
실시간 로그 확인
로컬에서 디버깅할때처럼
생성된 로그를 실시간으로 확인하려면 tail 명령어를 사용하면 된다.
// tail -f `파일명`
tail -f comehear.log
tail -f 는 파일 마지막 10줄을 계속해서 출력한다.
해당 명령어를 입력하고 웹에서 조작 시, 실시간으로 로그가 쌓이는걸 볼 수 있다.
프로그램 종료
백그라운드로 실행한 프로그램을 종료할 때는 kill명령어를 사용한다.
// 실행중인 jar 프로세스 확인
ps -ef | grep jar
pid(26915) 를 확인 후 종료시켜준다.
// kill -15 `pid`
// 정상종료
kill -15 26915
// 강제종료
kill -9 26915
-15 는정상적인 방식으로 종료를 의미한다.
해당 명령어로 종료되지 않을 때는 -9(강제종료)를 사용한다.
마치며
Oracle cloud에서 서버를 생성하여 접속까지 해보았다.
다음 글부터는 aws 에서 사용하던 RDS와 S3를
Oracle cloud에 맞게 옮기고
옮기면서 생겼던 버그들을 수정한 내용을 작성해보기로 한다.
** 참조
'사이드 프로젝트 > 2022 관광데이터 활용 공모전' 카테고리의 다른 글
[Oracle Cloud] Comehear Cloud 이전기(AWS > OCI) - (2) (0) | 2023.07.03 |
---|---|
[Oracle Cloud] Spring boot 배포(gradle, jar) - (1) (0) | 2023.06.22 |
[Oracle Cloud] Comehear Cloud 이전기(AWS -> OCI) (0) | 2023.06.22 |
2022 관광데이터 활용 공모전 - Come Hear (0) | 2022.10.19 |