본문 바로가기
OS/Linux

#04 Oracle Cloud Free Tier - Service

by domsam 2025. 9. 25.
반응형

root 비밀번호 변경

$ sudo passwd

 

OS 시간대 변경

시간 확인

$ date

한국 시간으로 변경

$ sudo cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

패키지 목록 업데이트

현재 source와 비교하여 버전정보 업데이트

$ sudo apt update

버전정보에 맞게 업그레이드 -y 는 yes 라는 의미이며 중간에 yes/no 물어보는 상황에서 모두 Yes처리를 한다는 의미이다.
$ sudo apt upgrade -y

 

자바 설치

$ sudo apt install openjdk-17-jdk-headless -y

 

이슈 발생

깃 설치 및 Gradle 설치 및 gradlew로 빌드하기의 내용은 접은글에 정리되어 있지만 사용하지 않는다. 일단 gradlew를 사용하기 때문에 gradle은 설치 및 사용할 필요가 없고 인스턴스에서 빌드를 하면 서버가 정지되는 이슈가 발생하여 jar파일을 FTP를 이용하여 올리는 방식으로 우회한다.

더보기

깃 설치

$ sudo apt install git

 

깃 클론

$ git clone {Git Repository URL} {폴더명}

 

어차피 gradlew 로 빌드를 할 것이기 때문에 gradle 설치는 생략 가능

gradle 다운로드 및 설치

gradle 최신버전 확인

https://services.gradle.org/distributions/

$ wget https://services.gradle.org/distributions/gradle-9.1.0-bin.zip -P /tmp

 

gradle 압축 해제를 위한 unzip 설치

$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install unzip

 

압축 해제

$ sudo unzip -d /opt/gradle /tmp/gradle-9.1.0-bin.zip

$ ls /opt/gradle/gradle-9.1.0

 

환경변수 설정

nano 설치

$ sudo apt-get update
$ sudo apt-get install nano

gradle.sh 파일 오픈

$ sudo nano /etc/profile.d/gradle.sh

아래 내용을 복사하고 nano창에 마우스 우측 버튼을 눌러 붙여넣기 하고 Ctrl + S(저장), Ctrl + X(끄기)

export GRADLE_HOME=/opt/gradle/gradle-9.1.0
export PATH=${GRADLE_HOME}/bin:${PATH}

 

gradle.sh 권한 설정

$ sudo chmod +x /etc/profile.d/gradle.sh

시스템 환경 설정 스크립트를 현재 셸에 반영

$ source /etc/profile.d/gradle.sh

 

Gradle 버전 확인

$ gradle -version

 

build 빌드 (gradlew)

해당 프로젝트 디렉토리로 이동

실행파일 권한 설정
$  sudo chmod +x gradlew 

빌드 실행 (기존 빌드된 파일이 있으면 삭제하고 빌드)
$ ./gradlew clean build

 

 

방화벽 허용

포트 3306을 열었더라도, REJECT가 기본 차단 역할을 하고 있어서 VCN 내부 접근이 막히는 상황입니다.

문제되는 규칙 제거

$ sudo iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited

 

3306 포트 허용 규칙 추가

$ sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT

 

OS 재부팅 되어도 iptables 데이터 유지시키기

$ sudo apt install iptables-persistent -y
$ sudo netfilter-persistent save

 

Spring Boot Yaml

prod 프로파일로 실행할 예정이니 prod 설정파일을 생성한다.

application-prod.yaml 파일을 생성
application-prod.yaml 파일을 생성

 

파일 업로드 경로는 /home/ubuntu 아래에 생성이 되도록 한다.

i.g. /home/ubuntu/upload 

constants:
  file:
    upload-directory: /home/ubuntu/upload
    

spring:
  datasource:
    url: jdbc:mariadb://${DB인스턴스 퍼블릭IP}/${DB 이름}
    username: ${생성한 유저명}
    password: ${생성한 유저 비밀번호}
    driver-class-name: org.mariadb.jdbc.Driver

 

FileZilla(FTP) jar파일 업로드

파일질라 설치 및 사용법 정리

프로토콜: SFTP - SSH File Transfer Protocol
호스트: 퍼블릭IP
포트: (빈칸)
로그온 유형: 키 파일
사용자: ubuntu
키 파일: 해당 인스턴스 키파일 경로, [ 찾아보기... ] 버튼 클릭하여 파일 선택

키 파일 [ 찾아보기... ] 버튼 클릭시 나타난 대화창에서 우측 아래 파일 형식을 "모든 파일(*.*)"로 변경
키 파일 [ 찾아보기... ] 버튼 클릭시 나타난 대화창에서 우측 아래 파일 형식을 "모든 파일(*.*)"로 변경

 

접속이 되면 jar파일을 업로드한다.
접속이 되면 jar파일을 업로드한다.

 

 

자바 실행

아래 명령어는 cmd창을 끄면 서버도 함께 꺼지게 된다. 그래서 백그라운드에서 실행되도록 하자.

i.g. java -jar -Duser.timezone=Asia/Seoul ${jar파일 경로} --spring.profiles.active=prod

$ java -jar -Duser.timezone=Asia/Seoul /home/greengram/lib/app.jar --spring.profiles.active=prod

 

백그라운드 실행 및 로그파일 생성

i.g. nohup java -jar -Duser.timezone=Asia/Seoul ${jar파일 경로} --spring.profiles.active=prod > ${로그 파일명.log} 2>&1 &

$ nohup java -jar -Duser.timezone=Asia/Seoul /home/greengram/build/lib/app.jar --spring.profiles.active=prod > app.log 2>&1 &

 

실시간 로그 확인

$ tail -f app.log

 

백그라운드 종료

jar파일을 변경하여 실행하려면 기존에 실행되는 jar 파일을 중단해야 한다.

// 실행중인 jar 프로세스 (pid) 확인
$ ps -ef | grep jar

3655, 3807 숫자 라인이 pid 컬럼이다.

$ kill -15 ${pid} // 정상종료
$ kill -9 ${pid} // 강제종료

 

 



반응형