ec2 spring 배포 쉘파일 만들기
새 EC2 인스턴스를 이용하면서 쉘스크립트가 없어졌기에 새로 만들었다.
깃에서 최신화하고 현재 구동중인 앱이 있다면 종료하고 JAVA로 실행하는 코드이다.
사전에 /home/ec2-user/app/step1/프로젝트 폴더 구조로 만든다.
#!/bin/bash
REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=Board_spring
cd $REPOSITORY/$PROJECT_NAME/
echo "> Git Pull"
git pull
echo "> 프로젝트 빌드 시작"
./gradlew build
echo ">step1 디렉터리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/demo5-0.0.1-SNAPSHOT.jar $REPOSITORY/
echo "> 현재 구동중인 App id 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
echo "현재 구동중인 App pid : $CURRENT_PID"
if [ -z "$CURRENT_PID"]; then
echo "> 현재 구동중인 어플리케이션이 없으므로 종료하지 않습니다. "
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo ">새 어플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)
echo "JAR Name: $JAR_NAME "
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
'''
real과 구분을 위해서는 아래와 같이 할 수도 있다.
'''
nohup java -jar \
Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties,classpath:/application-real.properties \ -Dspring.profiles.active=real \
$REPOSITORY/%JAR_NAME 2>&1 &
에러가 발생했다.
:qa로 종료 시
no write since last change 에러
:wq로 종료 시
Can't open file for writing 에러
-> 권한 문제 sudo vim으로 파일 실행
-> 같은 오류 알트 제트로 강제종료
-> chmod 권한 수정 -> 파일이 없음 -> touch or vim으로 생성 자체가 안됨 -> sudo touch로 생성 -> 생성됨
-> sudo chmod 777로 권한 변경
-> vim 파일명으로 수정 wq로 저장
해결
Author And Source
이 문제에 관하여(ec2 spring 배포 쉘파일 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ds257873/ec2-spring-배포-쉘파일-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)