seong
리눅스 간단한 배포 script 작성 본문
() 와 {}의 차이점
() 는 변수에 명령어의 리턴이 필요할 경우
{} 는 변수의 값
스프링 부트 종료 script - spring-stop.sh
파일명 뒤에 .sh를 붙이면 쉘 스크립트 파일이 된다.
echo "Springboot Stop......"
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
echo ${SPRING_PID}
kill -9 ${SPRING_PID}
update할때 뜨는쓸데 없는 로그들 없애기 - 1>dev/null
sudo apt-get update 1>/dev/null
배포 스크립트 작성
작성시 주의사항
- 변수화를 시켜서 사용
- 다운로드, 업데이트할때 나오는 로그들은 없애주자 - 1>dev>null
- 무언가를 실행할때 자기 폴더에서 실행 - ${HOME}
echo "Deploy Start"
echo "prepare var setting"
PROJECT_NAME="aws-v2"
GITHUB_ID="codingspecialist"
PROJECT_VERSION="0.0.1"
PROJECT_PID="$(pgrep -f ${PROJECT_NAME}-${PROJECT_VERSION}.jar)"
JAR_PATH="${HOME}/${PROJECT_NAME}/build/libs/${PROJECT_NAME}-${PROJECT_VERSION}.jar"
echo "1. sudo apt-get update"
sudo apt-get update 1>/dev/null
echo "2. jdk install"
sudo apt-get -y install openjdk-11-jdk 1>/dev/null
echo "3. timezone setting"
sudo timedatectl set-timezone Asia/Seoul
echo "4. git folder delete"
rm -rf ${HOME}/${PROJECT_NAME}
echo "5. git clone"
cd ${HOME}
git clone https://github.com/${GITHUB_ID}/${PROJECT_NAME}.git
echo "6. gradlew u+x"
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew
echo "7. build"
cd ${HOME}/${PROJECT_NAME}
./gradlew clean build
echo "8. spring-stop"
if [ -n "${PROJECT_PID}" ]; then
kill -9 ${PROJECT_PID}
echo "9. start server -> jar"
nohup java -jar -Dspring.profiles.active=prod ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &
짜잘한 팁
1. 배포할 때 프로젝트 명 = git repository 이름과 똑같이 맞추어 줘야한다.
2. yml에 prod, dev가 있는 이유
- 개발할때 yml 설정이 -dev로 설정되어있다.
- 배포할 때 prod가 있다면 굳이 yml에서 -prod로 바꿔줄 필요 없다,배포 스크립트에 넣어주면 된다.
3. ${HOME}은 전역변수
참고
'AWS > AWS에 필요한 리눅스 기본기' 카테고리의 다른 글
리눅스 환경 변수 등록하기 ,PATH변수 등록하기 (0) | 2022.11.04 |
---|---|
리눅스 ubuntu 리다이렉션 > (0) | 2022.11.03 |
리눅스 vi 기본기 (0) | 2022.11.02 |
리눅스 명령어 root, 권한(rwx) (0) | 2022.11.02 |
리눅스 명령어 시스템, 프로세스 (0) | 2022.11.02 |