일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- Project
- 공유DB
- 코테
- Java
- 팀프로젝트
- 코딩테스트
- spring boot
- 취준생
- JDK
- jdk11
- IntelliJ
- 입출력
- 백준
- Controller
- javascript
- gradle
- 스프링
- JPA
- ps
- spring
- coding test
- SpringBoot
- MariaDB
- 프로젝트
- 자바
- 자취
- React
- AWS
- MVC
- 디자인패턴
Archives
- Today
- Total
Tech Collection
[AWS] 서버에 프로젝트 배포하기 - 무중단 배포 3 본문
728x90
반응형
putty 를 통해 ec2에 접속한 후 진행한다.
sudo yum install -y git
- git 설치
git --version
- git 버전 확인
mkdir ~/app && mkdir ~/app/step1
- git clone 으로 프로젝트를 저장할 디렉토리 생성
cd ~/app/step1
- step1 폴더로 이동
git clone 프로젝트깃헙주소
- 프로젝트 clone
cd 프로젝트명
ll
- 내려받은 프로젝트명으로 폴더가 생겼을 것이니, 그 폴더로 이동해서
폴더 안의 파일 목록들을 확인한다. (소문자 엘 두개)
1. Maven
위 사이트를 통해 먼저 컴퓨터에 maven 을 설치한다.
! 여기는 mvnw 파일이 없을 때 하면 된다.
cd 프로젝트가 존재하고 있는 폴더 경로
- 프로젝트가 있는 폴더경로로 들어가서 maven wrapper를 설치해줄 계획이다.
mvn -N io.takari:maven:0.7.7:wrapper
- maven wrapper 설치
프로젝트 ide 에서 github에 commit & push
다시 ec2로 돌아와서 실행
git pull
- github에 변경된 사항 다시 내려받기
chmod +x mvnw
- mvnw 파일 접근 권한 변경
./mvnw clean package
- maven 컴파일 + 빌드
- package 통해서 빌드할때 pom.xml에 아래 코드 들어가있는가 확인,,,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>[버전]</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>[메인 클래스]</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
ls -al
- target 이라고 새로 생긴 폴더가 생겼는지 확인
cd target
ll
*.jar 파일 또는 *.war 파일이 만들어 졌는지 확인
java -jar jar또는war파일
- 실행
2. Gradle
./gradlew test
- 코드들이 잘 수행되는지 테스트하기
vim ~/app/step1/deploy.sh
- 쉘 스크립트 통해 명령어 한줄로 프로젝트 빌드 해결하기
#!/bin/bash
REPOSITORY=/home/ec2-user/app/step1
PROJECT_NAME=프로젝트이름
cd $REPOSIROTY/$PROJECT_NAME/
echo "> Git Pull"
git pull
echo "> 프로젝트 build 시작"
./gradlew build --exclude-task test
echo "> step1 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
echo "현재 구동중인 애플리케이션 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 &
chmod +x ./deploy.sh
- 스크립트에 실행 권한 추가
./deploy.sh
- 스크립트 실행
vim nohup.out
- 애플리케이션에서 출력되는 모든 내용 갖고 있음
배포완료 ㅠㅠ
혹시 JDK 버전이 11이라 안된다면 밑의 포스팅을 참고하면 된다.
728x90
반응형
'Build > AWS 배포' 카테고리의 다른 글
[Linux] JDK 11 Install (0) | 2021.03.10 |
---|---|
[AWS RDS] 데이터베이스 환경 만들기 - 무중단 배포 2 (0) | 2021.03.10 |
[AWS EC2] 서버 환경 만들기 - 무중단 배포 1 (0) | 2021.03.10 |
[AWS RDS] 공유DB 설정하기 (0) | 2021.01.21 |
[AWS] 공유 DB 연결 (0) | 2020.12.22 |