배포 구성

배포 순서

aws 배포용 인스턴스 생성

유동 IP

aws 고정 IP 설정 (엘라스틱 IP 설정)


탄력적 IP 주소 할당 - 할당




자바 다운
sudo apt update
// apt 메뉴리스트 업데이트
sudo apt-cache search jdk | grep jdk | grep openjdk-11
// jdk 11 버전 리스트 찾기
sudo apt install openjdk-11-jdk
// apt 리스트에서 jdk 11 다운
git 연결


git clone (주소)
// 프로젝트 다운

git으로 다운받은 폴더에 들어가면 gradle로 되어있고, gradlew을 실행시켜 프로젝트를 jar파일로 변경시킬 수 있습니다. = 빌드
gradlew 권한을 보면, 실행권한이 없는걸 확인 할 수 있는데, 실행권한을 ubuntu에게 부여합니다.

chmod u+x gradlew
// 실행 권한 유저에게 부여

./gradlew build
// gradlew는 환경변수가 아니기 때문에,
// ./gradlew 현재폴더내에 있는 걸 선택하여 빌드


java -jar v1-0.0.1-SNAPSHOT.jar
// 실행 명령어


gradle tip

nohup?
nohup 백그라운드 배포 실행




nohup java -jar v1-0.0.1-SNAPSHOT.jar
// 포그라운드 실행 - nohup 실행하여도 터미널 종료시 함께 종료
nohup java -jar v1-0.0.1-SNAPSHOT.jar &
// 백그라운드에서 실행
백그라운드 실행하면 터미널에서 log가 보이지는 않습니다.
log는 nohup.out에 저장됩니다.

tail -f (파일) 로 실시간으로 볼 수 있습니다.
nohup.out이 아니라 임의로 만든 파일에 로그를 넣도록 하겠습니다.

nohup java -jar v1-0.0.1-SNAPSHOT.jar > mylog.out &


nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
// 1은 표준 출력
// 2는 에러 출력
ubuntu 시간 변경

timedatectl

timedatectl list-timezones | grep Seoul
// 바꿀 수 있는 시간에서 서울 찾기
sudo timedatectl set-timezone Asia/Seoul
// 시간을 서울로 변경
종료 스크립트 생성

pgrep -f v1-0.0.1-SNAPSHOT.jar
//현재 실행한 jar 파일의 pid를 가져옵니다.
vi spring-stop.sh
// spring-stop.sh 파일 생성
chmod u+x spring-stop.sh
// spring-stop.sh 파일의 실행권한을 부여합니다.
---
echo "Springboot Stop..."
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
echo SPRING_PID
kill -9 $SPRING_PID
---
// 프로세스 종료 스크립트

cron 주기적 실행 명령어


crontab -e
// 크론 탭 설정 화면이 뜹니다.
// 처음 명령어를 입력하면, vi 에디터를 사용하도록 합니다.


(* * * * *)의 의미는 분, 시간, 일, 월, 요일을 의미합니다.
위 명령어의 의미는 모든 요일, 월, 일, 시간의 매분에 ls -l 1>>cron.log를 실행한다는 의미입니다.
여기 >>의 의미는 파일에 append 하는걸 의미합니다.

vi myScript.sh
vi job.sh
chmod u+x myScript
chmod u+x job.sh
--- myScript.sh
crontab -l 1>crontab_new
// crontab의 내용을 crontab_new 파일을 생성하여 붙입니다.
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new
// crontab_new 파일에 출력한 내용을 붙여줍니다.
crontab crontab_new
// crontab_new 크론을 실행해줍니다.
--- job.sh
ls -l > /home/ubuntu/cron.log
// /home/ubuntu/cron.log 파일을 생성하여 ls -l 로그를 값을 넣어줍니다.


스프링 실행 확인 스크립트

SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
SPRING_PATH="/home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar"
echo $SPRING_PID
echo $SPRING_PATH
if [ -z "$SPRING_PID" ]; then
echo "스프링 종료된 상태"
echo "스프링 재시작$(date) " 1>> /home/ubuntu/spring-restart.log
nohup java -jar $SPRING_PATH 1>/home/ubuntu/log.out 2>/home/ubuntu/err.out &
else
echo "스프링 실행된 상태"
kill -9 $SPRING_PID
echo "스프링 종료"
fi