티스토리 뷰

[원격 서버에 배포하기]


1. AWS EC2 Linux 인스턴스 생성https://jojoldu.tistory.com/259?category=635883

- 이 부분은 크게 차이가 없다.


2. EC2에 MySql 설치하기

- $ sudo yum install mysql

- $ mysql -u 계정 -p -h Host주소  : 계정은 모두 소문자이고 Host 주소는 AWS RDS 대쉬보드에서 확인하기

- $ show databases; : 이것을 치고 들어가면 내가 생성한 데이터베이스가 보여야 성공


3. Java, Git 설치하기


현재(2018.01.14) EC2가 Java7이 기본버전이라 Java8로 버전업하겠습니다.

AWS EC2에 접속하셔서 아래 명령어를 실행 합니다.

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

설치가 완료되셨으면 인스턴스의 Java 버전을 8로 변경하겠습니다.

sudo /usr/sbin/alternatives --config java

java1

버전이 변경되셨으면 사용하지 않는 Java7을 삭제합니다.

sudo yum remove java-1.7.0-openjdk

현재 버전이 Java8이 되었는지 확인합니다.

java -version

Git 설치 및 Clone

Java8 설치가 끝나셨으면 다음으로 Git을 설치하겠습니다. 
EC2 인스턴스로 ssh 접속하신뒤, yum패키지 매니저를 통해 아래 명령어를 실행하신뒤 진행중 나오는 질문에는 y를 입력하시면 됩니다.

sudo yum install git

설치가 완료되셨으면 아래 명령어로 설치 상태도 확인합니다.

git --version


4. Git clone 하여 프로젝트 저장할 폴더 생성

mkdir app
mkdir app/git

생성된 git디렉토리로 이동하고,

cd ~/app/git

본인의 github 웹페이지에서 ssh 주소를 복사합니다.

git1

복사한 ssh 주소를 통해 git clone을 진행합니다.

git clone https://github.com/프로젝트주소.git

git2

git clone이 끝나셨으면 clone된 프로젝트로 이동(cd 프로젝트명) 해서 ll 혹은 ls -al로 파일들이 잘 복사되었는지 확인합니다.


5. deploy 스크립트 생성

EC2 인스턴스의 ~/app/git/에 deploy.sh 파일을 하나 생성합니다.

vim ~/app/git/deploy.sh

그리고 다음의 코드를 추가합니다.

#!/bin/bash

REPOSITORY=/home/ec2-user/app/git

cd $REPOSITORY/InHouseKitchen/

echo "> Git Pull"

git pull

echo "> 프로젝트 Build 시작"

./gradlew build

echo "> Build 파일 복사"

cp ./build/libs/*.jar $REPOSITORY/

echo "> 현재 구동중인 애플리케이션 pid 확인"

CURRENT_PID=$(pgrep -f InHouseKitchen)
echo "$CURRENT_PID" if [ -z $CURRENT_PID ]; then echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." else echo "> kill -2 $CURRENT_PID" kill -9 $CURRENT_PID sleep 5 fi echo "> 새 어플리케이션 배포" JAR_NAME=$(ls $REPOSITORY/ |grep 'InHouseKitchen' | tail -n 1)
echo "> JAR Name: $JAR_NAME" nohup java -jar $REPOSITORY/$JAR_NAME &


6. build/libs 폴더 생성 (이 부분이 jojoldu와 다른점이다)

- Clone된 프로젝트 폴더 안에 /build/libs 폴더를 만든다. 즉 InHouseKitchen 폴더 안에 다음과 같이 build, libs 폴더를 생성한다

- $ mkdir build

- $ cd build

- $ mkdir libs



7. deploy.sh 스크립트에 실행 권한 주기

- 주의 : gradlew 파일이 있는 곳에서 명령어를 입력해야 한다. gradlew는 InHouseKitchen 폴더 안에 있으니 그곳에서 명령어를 실행시켜야한다. 그리고 git 폴더로 나가서 deploy.sh 파일에 대한 권한도 주어야함

- $ cd InHouseKitchen : 프로젝트 폴더로 이동

- $ chmod +x gradlew : 쉘 스크립트에 실행권한을 주는 명령어

- [ec2-user@ip-123-123-123-123 git]$ chmod +x ./deploy.sh : git 폴더에서 deploy.sh에도 권한을 부여해야 한다.




8. deploy.sh 스크립트 실행하여 빌드 및 배포하기.

- 주의 : 빌드된 jar 파일이 git 폴더와 /build/libs 폴더 2 곳에 존재한다. 그래서 둘 중 어느 것을 배포해도 괜찮다. 대신 버전을 확인하여 최신 버전의 jar 파일을 배포하기

- $ [ec2-user@ip-123-12-12-12 git]$ ./deploy.sh : 배포 스크립트 실행하면 jar 파일로 빌드가 된다


[빌드를 성공적으로 마치면 다음과 같은 문구가 뜬다]




[git 폴더에 있는 jar 파일]


[InHouseKitchen/build/libs/ 안에 있는 jar 파일]


이렇게 jar 파일이 2군데에 빌드가 되어 저장이된다.


9. 배포하기

- $ java -jar inhouse ~~  & : 명령어 입력하면 배포가 된다.

- AWS 보안그룹에서 사용자 TCP 9090, 위치무관으로 설정하는 것도 잊지 말기





















댓글