일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 클라우드
- package
- process.env
- github
- netlify
- Solid
- 캡슐화
- 다형성
- PostgreSQL
- 메모이제이션
- MariaDB
- git
- 서브셋폰트
- 상속
- 객체지향
- 디자인 패턴
- azure
- dfs
- DP
- Secret
- CSS
- GOF
- npm
- dotenv
- mock
- 동적계획법
- bfs
- 추상화
- AOP
- Java
Archives
- Today
- Total
이것저것 해보기🌼
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' 카테고리의 다른 글
[AWS TechCamp] AWS 핵심 서비스로 웹 애플리케이션 구축하기 ① - 네트워크 구성하기 (0) | 2024.06.25 |
---|---|
AWS Cloud 기본 개념 정리 (리전, AZ, VPC, EC2, ELB, 서브넷 등등) (0) | 2024.06.25 |
Docker Jenkins 버전 jdk 17로 바꾸기 (jenkins/jenkins:lts-jdk17) (0) | 2024.04.30 |
EC2 환경에서 Docker를 이용해 Jenkins 설치하기 (0) | 2024.04.29 |
클라우드 컴퓨팅과 Azure (0) | 2021.11.01 |