*모든 내용은 책에 있는 내용을 기반으로 작성하였습니다.
8장 ----
깃허브 코드를 받아오게 EC2에 git 설치하기
sudo yum install git
설치가 완료되면 설치 상태 확인하기
git -- version
깃이 성공적으로 설치되면 git clone으로 프로젝트를 저장할 디렉토리를 생성하기
mkdir ~/app && mkdir ~/app/step1
방금 생성한디렉토리로 이동하고
git clone 복사한 깃 주소
잘 수행되는지 테스트로 검증
./gradlew test
Gradle을 EC2에 설치하지 않아도 Gradle을 설치할 수 있는 이유는 프로젝트 내부에 있는 gradlew 파일 때문이다. 이것은 해당 프로젝트에 한해서 그레이들이 설치 되어 있지 않은 환경에서도 그레이들을 쓸 수 있도록 지원하는 Wrapper 파일이다.
배포는 아래의 과정을 모두 포괄하는 의미이다.
- git clone 혹은 git pull을 통해 새 버전의 프로젝트를 받음
- Gradle이나 Maven을 통해 프로젝트 테스트와 빌드
- EC2 서버에서 해당 프로젝트 실행 및 재실행
앞선 과정을 배포할 때마다 개발자가 하나하나 명열ㅇ어를 실행하는 것은 불편함이 많다.
그래서 이를 쉘 스크립트로 작성해 스크립트만 실행하면 앞의 과정이 차례로 진행되도록 한다.
쉘 스크립트는 .sh 라는 파일 확장자를 가진 파일이다. 리눅스에서 기본적으로 사용할 수 있는 스크립트 파일의 한 종류이다.
vim은 리눅스 환경과 같이 GUI가 아닌 환경에서 사용할 수 있는 편집 도구이다.
~/app/step1/에 deploy.sh 파일 하나를 생성한다.
#!/bin/bash
REPOSITORY=/home/ec2-user/app/step1 //(1)
PROJECT_NAME=freelec-springboot2-webservice
cd $REPOSITORY/$PROJECT_NAME/ //(2)
echo "> Git Pull" //(3)
git pull
echo "> 프로젝트 Build 시작"
./gradlew build //(4)
echo ">step1 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/ //(5)
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar) //(6)
echo "현재 구동중인 애플리케이션 pid 확인"
if [ -z "$CURRENT_PID" ]; then //(7)
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) //(8)
echo "> JAR Name: $JAR_NAME"
nohup java -jar - Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties $REPOSITORY/$JAR_NAME 2>&1 &
//(9)
이렇게 생성한 스크립트에 실행 권한을 추가한다.
chmod +x ./deploy.sh
아래 명령어로 실행한다.
./deploy.sh
아래 명령어로 로그를 확인한다. (애플리케이션에서 출력되는 모든 내용을 가지고 있다.)
vim nohup.out
서버에서 application-oauth.properties의 정보를 가직 ㅗ잇어야 한다.
vim /home/ec2-user/app/application-oauth.properties
그리고 실제 application-oauth.properties의 값을 복사한다.
deploy.sh에서
/home/ec2-user/app/application-oauth.properties 이부분 추가
(1) -Dsrping.config.location
MariaDB에서 스프링부트 프로젝트를 실행하기 위해서는 몇가지 작업이 필요하다.
스프링 세션 테이블은 schema-mysql.sql 파일에서 확인할 수 있다.
compile("org.mariadb.jdbc:mariadb-java-client")
등록한다.
서버에서 구동될 환경을 하나 구성한다.
spring.profiles.include=oauth,real-db
spring.jpa.properties.hibernate.dialect=org.hibernate
dialect.MySQL5InnoDBDialect
spring.session.store-type=jdbc
profile = real인 환경이 구성된다.
실제 운영도리 환경이기 때문에 보안, 로그상 이슈가 될만한 설정들을 모두 제거하며
RDS 환경 profile들이 추가된다.
vim ~/app/application-real-db.properties
로 파일 생성
spring.jpa.hiberante.ddl-auto=none
spring.datasource.url=jdbc:mariadb://rds주소:포트명/database이름
spring.datasource.useraname = db계정
spring.datasource.password = db계정 비밀번호
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
책에 있는 내용을 보며 똑같이 진행했습니다.
외부 Security 파일 등록한 후에 구동 되시던가요?? ㅠㅠ