이것저것 해보기🌼
Linux(Ubuntu) EC2에서 Spring Boot 배포 스크립트 작성하기 (bash 오류 해결방법) 본문
1. 내 github repository 클론 및 빌드
서버 ssh 접속 후 아래와 같이 진행한다.
//git 설치
sudo apt-get install git
git --version
//배포할 디렉토리 만들기
mkdir ~/app/step1
cd app/step1/
//리파지토리 clone
git clone https://github.com/{my project}.git
//gradlew 가 있는 폴더로 접근 후
./gradlew test
//실행권한 없다고 나오는 경우 (-bash: ./gradlew: Permission denied)
chmod +x ./gradlew
Spring Boot 빌드 >>
2. 배포 스크립트 만들기
ec2 배포 스크립트에서 해줄일 :
- git clone, pull 로 새 버전 받고
- gradle/maven 으로 테스트, 빌드 후
- 해당 프로젝트 실행
스크립트를 만드는 이유는 위 일련의 과정들을 매번 직접 명령어를 실행할 필요없이 자동화 하기 위해서다.
스크립트
#!/usr/bin/env bash
echo start
REPOSITORY=/home/ubuntu/app/step1
PROJECT_NAME=figstudy
cd ${REPOSITORY}/${PROJECT_NAME}/backend/
echo git pull
git pull
./gradlew build
cd ${REPOSITORY}
cp ${REPOSITORY}/${PROJECT_NAME}/backend/build/libs/*.jar ${REPOSITORY}/
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
if [ -z "${CURRENT_PID}" ]
then
echo no process
else
echo kill -15 ${CURRENT_PID}
kill -15 ${CURRENT_PID}
sleep 5
fi
JAR_NAME=$(ls -tr ${REPOSITORY}/ | grep jar | tail -n 1)
echo ${JAR_NAME}
java -jar ${JAR_NAME} &
원래 보통 첫줄에 #!bin/bash 로 하고
마지막줄에 nohub java -jar ~~.jar & 로 해서 nohub.out 파일에 출력하는데
왜인지 둘다 제대로 안되었다.
에러메세지는 이런식으로 떴는데
-bash: ./deploy2.sh: No such file or directory
찾아보니 64비트, 32비트 안맞을때 발생하기도 하고
내 경우에는 bash 가 있는 경로 자체가 /bin/bash 가 아니어서였다.
참고 : https://askubuntu.com/questions/420981/how-do-i-save-terminal-output-to-a-file
Permisson denied 라는 오류가 발생하는 경우에는 실행 권한을 추가해줘야한다.
스크립트 실행권한 추가하는 명령어는 다음과 같다.
chmod +x ./deploy.sh
실행결과
아무튼 이런식으로 빌드 및 실행이 잘되는것을 확인했다.
지금은 application-oauth.properties 파일이 없는 상태라 오류가 안뜨는데 이 경우엔 서버에 해당 파일을 추가하고 java 실행시 옵션으로 넣어주어야한다.
'AWS' 카테고리의 다른 글
Docker Jenkins 버전 jdk 17로 바꾸기 (jenkins/jenkins:lts-jdk17) (0) | 2024.04.30 |
---|---|
EC2 환경에서 Docker를 이용해 Jenkins 설치하기 (0) | 2024.04.29 |
클라우드 컴퓨팅과 Azure (0) | 2021.11.01 |
[AWS SageMaker]M/L Data Wrangler 핸즈온 (0) | 2021.05.11 |