티스토리 뷰
[원격 서버에 배포하기]
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
버전이 변경되셨으면 사용하지 않는 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 주소를 복사합니다.
복사한 ssh 주소를 통해 git clone
을 진행합니다.
git clone https://github.com/프로젝트주소.git
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, 위치무관으로 설정하는 것도 잊지 말기
'Back-end' 카테고리의 다른 글
[C++] Vector에 대해서 (0) | 2018.09.26 |
---|---|
[JPA] 1대1 관계 (0) | 2018.09.23 |
[SpringBoot] 코드 리팩토링 (0) | 2018.09.18 |
[SpringBoot] 자기 자신에 한해 개인정보 수정 (0) | 2018.09.18 |
[SpringBoot] 로그인 상태에 따른 메뉴처리, 로그아웃 (0) | 2018.09.18 |
- Total
- Today
- Yesterday
- 월부닷컴
- 파라메터
- 항해플러스백엔드
- resize
- github
- 재테크공부
- 항해플러스후기
- 폭포수
- 월급쟁이부자들
- front
- docker
- Spring boot
- 열반스쿨기초반
- 인셉션
- 부동산공부
- GIT
- 깃허브
- Use case
- 관계대수
- push_back
- pop_back
- Inception
- 유즈케이스
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 2023년
- 항해솔직후기
- 도커
- 내년은 빡세게!!
- 개발자 회고
- 깃
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |