AWS EC2 - zsh 설치 및 docker 설치 (+Nginx, MySQL), Springboot 배포하기

ubiies·2023년 5월 16일
0

AWS

목록 보기
2/3

Ubuntu AMI로 생성한 EC2 인스턴스에 zsh와 docker를 설치해보자!


zsh 설치

sudo apt install zsh
chsh -s /usr/bin/zsh

zsh 설치 후, 기본 쉘을 zsh로 변경해준다.

echo $SHELL

zsh가 잘 설치되었는지 확인한다.

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

oh my zsh까지 설치해준다.
기본 셸을 사용하는 것보다 사용성이 향상되고 개발자에게 유용한 기능을 제공하기 때문에 설치하는 것을 추천한다.

docker 설치

인바운드 보안 규칙 수정

설치하기 전에 생성한 인스턴스 보안 그룹 인바운드 규칙에 사용자 TCP 80포트를 꼭 추가해준다. 그래야 외부에서 AWS의 해당 포트로 접근이 가능하다.

root 권한으로 바꿔주기

sudo su -

먼저 root 권한으로 변경해준다.

$ sudo su -
일반 사용자 계정에서 슈퍼 유저 계정으로 변하는 명령어이다. 보통 Linux나 Unix 계열 운영체제에서는 보안상의 이유로 root 계정으로 로그인하는 것을 금지하고 있지만, 애플리케이션 설치 같이 root 권한이 필요한 경우가 있다.


docker 설치

git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install
cd docker_minikube_kubectl_install
sh docker_install.sh

docker 설치 스크립트 다운로드 및 docker 설치를 실행하는 명령어이다.

docker -v

docker가 잘 설치되었는지 확인해준다.

sudo usermod -aG docker $USER

docker 명령어를 사용하기 위해서는 root 권한이 필요하다. 일반 유저가 도커를 실행하기 위해서는 docker 그룹에 추가해주어야 한다.

Nginx 설치

docker run -p 80:80 nginx

Docker에서 Nginx 이미지를 실행하고 호스트의 포트 80과 컨테이너 포트 80을 매핑한다는 의미이다.
인스턴스 퍼블릭 IPv4 DNS로 접근하면 nginx가 잘 실행되고 있는 것을 확인할 수 있다.

MySQL 설치

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql

docker Container 출력

docker ps

현재 실행 중인 컨테이너가 출력된다.
nginx, mySQL이 정상적으로 잘 실행되고 있다.

Springboot 프로젝트 생성

  • dependency는 spring web만 추가해준다.
localhost:8080

build.gradle 빌드 후 페이지 확인

최상단에 cmd+n -> Dockerfile 추가하기

FROM openjdk:17-jdk-slim
ADD /build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

코드 수정해준다.


git init, git add

- build.gradle
- gradlew
- gradlew.bat
- settings.gradle

이 4가지 파일은 반드시 추가해야한다.


EC2 서버에 자바 설치

sudo update
sudo apt install openjdk-17-jdk
java -version // 잘 설치되었는지 확인

Github Repository를 EC2 서버에 띄우기

sudo su -
git clone <your Repository URL>
ls // git repository 폴더 확인

프로젝트 빌드

sh gradlew 
sh gradlew build 

SpringBoot 앱 실행 테스트

cd build 
cd libs
ll // .jar 파일 2개 확인
java -jar <Repository Title>-0.0.1-SNAPSHOT.jar

해당 JAR 파일이 JVM에서 실행되며, JAR 파일에 포함된 애플리케이션 시작된다.


8080 보안 규칙 추가

0개의 댓글