먼저 배포할 프로젝트를 올려둔 github에서 clone 받아오기 위해서 EC2 인스턴스에 git을 설치해줘야 한다.
터미널을 통해 EC2에 접속한다.
# git 설치
sudo yum install -y git
위 명령어를 실행하면 git이 자동으로 설치된다.
# git version 확인
git --version
이렇게 버전 정보가 뜬다.
# git clone으로 프로젝트를 저장할 디렉토리 생성
mkdir ~/app && mkdir ~/app/test
# test 폴더로 이동
cd ~/app/test
# 프로젝트 clone
git clone (github프로젝트주소)
git clone (github프로젝트주소)를 하면 우리가 만든 test 폴더에 프로젝트가 clone된다.
클론이 완료된 모습.
# 프로젝트 폴더로 이동.
cd 프로젝트명
# 폴더 안에 파일 확인
ls
현재 프로젝트 폴더 안에 파일명들을 나열해준 화면.(필자의 경우 미리 빌드하고 실행했어서 target폴더에서 꺼내온 jar파일이 존재함.
프로젝트를 빌드하기 위해서 먼저 EC2 환경에 Maven을 설치해줘야 한다.
Maven 설치하기
먼저 헷갈릴 수 있으니 최상위 폴더로 이동한다.
최상위 폴더로 이동하는 명령어는 아래와 같다.
# 최상위 경로로 이동
cd
여기서 maven이라는 폴더를 만들고 그 경로로 이동한다.
# maven 폴더 생성
mkdir ./maven
# maven 폴더로 이동
cd maven
그리고 maven 파일을 받는다. 아래 코드를 실행해주자.
# wget maven 다운링크
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
코드를 실행한 후에 ls로 파일을 확인해보면 gz 파일이 잘 받아진 것을 확인할 수 있다. gz파일은 윈도우의 zip파일이라고 생각하면 된다.
# gz파일 압축 풀기
tar xvfs apache-maven-3.6.3-bin.tar.gz
위 명령어를 실행하면 아래와 같이 파일 두 개가 maven폴더에 존재하게 된다.
이제 환경변수를 설정해주자.
먼저 계정의 home으로 돌아온 후에 bash_profile을 연다.
# home으로 이동
cd ~
# bash_profile open
vi bash_profile
그리고 뜨는 창에 다음과 같이 입력해준다.
MAVEN_HOME=/home/ec2-user/maven/apache-maven-3.6.3
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME
vi 편집기 기본 사용법은 다음에 정리하겠다. 우선 지금 쓰는 간단한 사용법은
vi bash_profile로 들어간 상태에서 i를 누르면 글을 작성할 수 있다.
거기에 위 코드를 작성해주고, esc를 누르면 다시 작성모드가 종료된다.
그 상태에서 :wq를 작성하면 변경된 내용을 저장하고 종료한다.
# 변경한 .bash_profile 파일을 반영
source. bash_profile
# maven 버전 확인
mvn -version
이제 위 코드를 실행해서 반영해주고 버전확인으로 maven 설치가 잘 되었는지 확인 해주자.
이렇게 설치가 잘 된 것을 볼 수 있다.
이제 다시 ls와 cd 명령어를 통해서 프로젝트 폴더로 이동해준다.
### maven ###
# mvnw 파일 접근 권한 변경
chmod +x mvnw
# maven 컴파일 + 빌드(pom.xml이 존재하는 폴더 안에서 실행)
mvn package
### gradle의 경우 ###
# gradle의 경우 파일 접근 권한 변경
chmod +x gradlelw
# 테스트 진행
./gradlew test
# 빌드
./gradlew build
이렇게 빌드를 하고 익숙하게 봐온 스프링 부트 화면도 나온다.
완료 후에 다시 ls로 파일명들을 보면 target 이라는 폴더가 생성된 것을 볼 수 있다.
# target 폴더로 이동
cd target
target 폴더 안에 *.jar 또는 *.war 파일이 만들어졌는지 확인한다.
정상적으로 빌드 됐다면 이렇게 .jar 파일이 생긴다.
이 파일을 실행해야 하는데 파일을 target폴더 안에서 실행시키지 말고 아래 명령어를 통해 jar파일을 한 경로 위로 가지고 온다.
# jar 파일 경로 옮기기
mv (jar파일명) ../
잘 옮겨진 것을 확인할 수 있다.
이렇게 해주는 이유는 target에서 실행할경우 경로 문제가 발생하여 제대로 열리지 않는 경우가 있기 때문이다.
이제 jar 파일을 실행해주자.
# jar 파일 실행
java -jar (jar파일명)
에러가 없다면 이렇게 잘 실행된 것을 확인 할 수 있을 것이다.
이제 우리가 만든 프로젝트를 웹으로 열어보자.
주소는 EC2 인스턴스에 걸어둔 탄력적 IP 주소와 프로젝트에서 설정한 포트번호이다. 필자의 경우 8080. 주소창에 아래 주소를 적는다.
(EC2에 적용된 탄력적 IP주소):8080
드디어 배포가 완료되었다~~~
여기서 ec2를 접속한 터미널을 그냥 끄게 되면 서버가 닫힌다.
그렇다면 ssh 연결을 끊어도 프로젝트를 배포상태로 두고 싶다면 어떻게 해야할까?
위의 jar파일 실행상태에서는 어떤 버튼을 눌러도 반응하지 않는 상태이다.
여기서
ctrl + z
를 누르면 터미널을 다시 사용할 수 있는 화면이 된다.
# bg 입력, 만약 bg로 되지 않는 다면 bg 1 입력
# bg는 백그라운드에서 작업을 실행하는 것이다.
bg
# disown 은 프로세스를 shell의 job control 에서 벗어나게 해준다.
disown
exit
위 명령어를 실행 한 후에는 EC2 접속을 끊고 터미널을 종료해도 언제 어디서든 내가 만든 프로젝트에 접속이 가능해진다.
이렇게 AWS를 이용한 24시간 무중단 배포를 완료하였다.
만약 다시 EC2에 접속해서 프로젝트 배포를 멈추고 싶다면
# 실행중인 포트가 사용중인 Process 확인
netstat -lnp | grep (포트번호)
# 실행 종료 시키기
kill -9 (확인한 Process번호)
이렇게 종료할 수 있다.
이상으로 AWS로 프로젝트 배포 포스팅을 마치겠다.👏
'Programming > AWS' 카테고리의 다른 글
AWS로 프로젝트(Spring boot, Maven, Jpa, mariaDB) 배포하기(2) - RDS(Maria DB) 생성 및 설정 (2) | 2021.07.27 |
---|---|
AWS로 프로젝트(Spring boot, Maven, Jpa, mariaDB) 배포하기(1) - EC2(Linux) 생성 및 설정 (0) | 2021.07.14 |