반응형
작업한 프로젝트를 AWS EC2에 배포하기 위해서 다음과 같은 절차로 진행합니다.
- EC2 서버로 Github에서 코드를 가져옵니다.
- build하여 jar 파일을 생성합니다.
물론 로컬에서 build하여 jar 파일을 생성한 후 EC2 서버로 보내는 방법도 가능합니다.
1. 환경셋팅: Java 설치 / Git 설치
1-1) Git 설치
$ sudo yum install git
1-2) Java 설치 (JDK 11)
yum은 jdk 1.8 까지만 설치가 가능합니다.
때문에 다음과 같은 방식으로 jdk11를 설치해주어야 합니다.
참고
yum 사용: CentOS, Red Hat 계열
apt-get 사용: Debian, Ubuntu
# Amazon Corretto를 이용한 jdk 11 파일 다운로드
# -o 옵션으로 파일명 지정
$ sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm
# jdk 11 설치
sudo yum localinstall jdk11.rpm
# java version 확인
java -version
# jdk version 수정
sudo /usr/sbin/alternatives --config java
# 다운로드 받은 jdk 파일 삭제
rm -rf jdk11.rpm
# 설치되어 있는 jdk 확인하기
$ yum list installed | grep "java"
java-11-amazon-corretto-devel.x86_64 1:11.0.18.10-1 installed
# 설치한 jdk 제거
sudo yum remove java-11-amazon-corretto-devel.x86_64
1-3) Time Zone 변경
# Time Zone 확인하기, UTC(세계 표준시)로 되어있음
$ sudo cat /etc/localtime
TZif2UTCTZif2▒UTC
UTC0
$ date
Wed Mar 22 11:06:21 UTC 2023
# 기존 로컬타임 삭제
$ sudo rm /etc/localtime
# KST(한국 표준시)를 로컬타임으로 설정
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
1-4) Hostname 변경
여러 서버를 관리 중일 경우 IP만을 보고 어떤 서비스 서버인지 확인하기가 어렵습니다. 때문에 해당 서버가 어떤 서비스인지 명시하기 위해 Hostname을 변경해겠습니다.
Amazon Linux 인스턴스에서 호스트 이름 변경라는 Amazon Docs에 자세히 설명되어 있습니다.
호스트 이름을 변경한 후에 이를 유지하기 위해서는 preserve_hostname이 true로 되어 있어야 합니다.
다음 명령어를 통해 이 설정을 할 수 있습니다.
$ sudo vi /etc/cloud/cloud.cfg
만약 preserve_hostname 설정이 없다면 파일 끝에 true로 설정해주면 됩니다.
preserve_hostname: true
호스트 이름을 설정하여 원하는 시스템 호스트 이름을 반영해줍니다.
$ sudo hostnamectl set-hostname {원하는 시스템 호스트 이름}
/etc/hosts 파일을 열고 127.0.0.1로 시작되는 항목을 다음과 같이 변경해줍니다.
127.0.0.1 {원하는호스트이름}.localdomain {원하는호스트이름} localhost4 localhost4.localdomain4
인스턴스를 재부팅 해줍니다.
- sudo reboot 로 인스턴스를 재부팅하는 방법
- Amazon EC2 콘솔을 사용하여 재부팅하는 방법
- [인스턴스 상태] > [인스턴스 재부팅]
2. EC2 서버에 프로젝트 Clone하기
2-1) 디렉터리 생성
프로젝트를 clone할 디렉터리를 생성하여 이동해줍니다.
$ mkdir ~/app
$ mkdir ~/app/{폴더명}
$ cd ~/app/{폴더명}
2-2) 프로젝트 clone하기
$ git clone {원격저장소주소}
2-3) 코드들 정상적으로 clone 됐는지 확인
# 프로젝트로 이동하여 목록 살펴보기
$ cd {프로젝트명}
$ ll
# 코드 테스트
./gradlew test
# ./gradlew: Permission denied라면 아래와 같이 실행 권한 추가해주고 다시 테스트해본다.
$ chmod +x ./gradlew
3. 빌드 후 실행
3-1) 프로젝트를 빌드
$ sudo ./gradlew build
3-2) 프로젝트 실행
빌드가 완료되면 build/libs/ 경로에 jar 파일이 생성됩니다.
# 빌드한 jar 파일이 있는 곳으로 이동
$ cd build/libs
# jar 파일 실행
# &을 붙여 백그라운드 실행
$ java -jar {jar.파일} &
# 실행 후 열려있는 포트 확인
$ netstat -ntlp
# 실행 중인 프로세스를 보고 삭제
$ ps
$ kill -9 {PID}
반응형
'AWS' 카테고리의 다른 글
AWS EC2 Swap File로 메모리 부족 대처(feat. EC2 Build 멈춤 해결) (0) | 2023.03.25 |
---|---|
AWS Amazon RDS DBeaver에 연결 (+ EC2에서 접속) (0) | 2023.03.23 |
AWS Amazon RDS (feat. MariaDB) (0) | 2023.03.23 |
AWS Window 환경에서 EC2 인스턴스에 접속하기 (feat. PuTTY) (0) | 2023.03.21 |
AWS EC2 개념 및 인스턴스 생성 (0) | 2023.03.10 |