관리 메뉴

제뉴어리의 모든것

[Section 4] [Spring Security] 운영환경 구성 - 2 ( 실습 ) [추후 정리] 본문

코드스테이츠/정리 블로깅

[Section 4] [Spring Security] 운영환경 구성 - 2 ( 실습 ) [추후 정리]

제뉴어리맨 2022. 10. 5. 00:49

전체 항목

  • EC2에 서버 배포
  • S3에 클라이언트 배포
  • RDS 연결

본 내용은 항목에 대한 모든 내용을 서술하지 않았고,

전체적인 맥락에서의 설명을 담은 내용이다.


EC2에 서버 배포

  • 전체 흐름
    EC2 생성 -> EC2 인바운드, 아웃바운드 규칙 설정 (보안그룹) -> EC2에 (백엔드) 서버 배포

 

  • 상세 흐름 (EC2 생성 과정과 인바운드, 아웃바운드 규칠 설정 부부은 생략한다)
    1. EC2 콘솔창에서 인스턴스를 선택 한다 (리전을 잘 확인할것)
      - EC2를 서울 리전에서 만들었었는데, 다음에 콘솔창에 들어왔을때 현재 보고있는 콘솔창의 리전이 도쿄일 수 있다. 그러니까 만약 만들었던 인스턴스가 보이지 않는다면 리전을 잘 확인해볼것!


    2. 상단에 연결 버튼이 존재할것이다. 
      - 해당 버튼을 누른다.

3. Session Manager를 누른뒤 연결 버튼을 누른다

4. 검정 화면의 터미널이 열리고, 해당 터미널은 내가 사용하는 EC2의 터미널이다.

- bash 쉘 형태로 변환하고 싶다면 bash 를 입력하고 엔터를 누른다.

 

 

 

현재까지의 내용이 생성한 EC2에 터미널로 연결한 것이다. 

이렇게 AWS 에서 직접 터미널로 접속할 수도 있지만,

내 로컬에서 EC2로 접속하는 방법은 다양하니 본인이 원하는 방식으로 접속하면된다.

아래부터는 EC2에 접속된 터미널에서의 상황이다.

 

5. $ sudo apt update 

- 관리자 권한으로 패키지 매니저의 패키지 정보를 최신으로 업데이트

 

6. $ sudo apt install openjdk-11-jre-headless

- jdk 설치

  백엔드 서버가 java로 만들어진 spring boot 프로젝트이기 때문에 구동되기 위해선 설치가 필수다.

 

7. git clone [레포지토리 clone 경로]

- github에 있는 레포지토리를 git으로 clone 받는다.

  당연히 git이 설치되어 있어야한다.

 

8. cd [gradlew 이 있는 경로로]

- clone 받은 프로젝트 디렉토리 내에 gradlew가 있는 경로로 이동한다.

 

9. ./gradlew build

- 해당 명령어로 프로젝트의 빌드를 진행한다.

  빌드가 완료되면 build 폴더가 생성된다.

 

10. java -jar build/libs/DeployServer-0.0.1-SNAPSHOT.jar

- 빌드된 jar 파일을 실행.

  앱을 실행시키는 부분이다.

  앞서서 jdk를 설치했기때문에 java 명령어가 사용 가능하다.

 

 

위에 내용까지만 진행하면 서버를 구동중인 상태이다.

 

11. 서버 접속 확인

- 인스턴스 정보중에 퍼블릭 IPv4 주소, 퍼블릭 IPv4 DNS

중 아무거나 복사한뒤 백엔드앱의 사용 port를 붙여서, 브라우저에서 접속이 가능한지 확인한다.예시 : [퍼블릭 IPv4 주소 OR 퍼블릭 IPv4 DNS]:8080

 

 

+ 쉘 스크립트를 이용한 서버 실행

 

우선 $ vi restart.sh 명령어를 사용하여 스크립트를 생성하고 편집모드로 들어간다.

 

- 스크립트 내용

#!/bin/bash

ps -ef | grep "jar파일명.jar" | grep -v grep | awk '{print $2}' | xargs kill -9 2> /dev/null

if [ $? -eq 0 ];then
    echo "my-application Stop Success"
else
    echo "my-application Not Running"
fi

echo "my-application Restart!"
echo $1
nohup java -jar jar파일 경로/jar파일명.jar --spring.profiles.active=dev > /dev/null 2>&1 &

 

위와 같은 스크립트 생성 후

 

chmod 755 restart.sh 명령어로 실행 권한 부여

 

./restart.sh 명령어로 스크립트 실행

 

 

 

진행중 안되는게 있다면 sudo 명령와 함께 써볼것!

 

 

S3에 클라이언트 배포

  • 전체 흐름
    로컬에 있는 클라이언트 프로젝트를 빌드 -> 빌드로 생성된 파일 및 폴더 S3 서버에 올림

 

1. nvm 설치

로컬 ubuntu 환경에서

터미널로 ubuntu에 접속 한뒤 아래 내용중 아무거나 하나 선택하여 터미널에 입력

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

(wsl 사용) nvm 설치

 

만일 Command 'wget' not found 메세지와 함께 설치가 진행되지 않는 경우, Package Manager를 이용해 wget을 설치

sudo apt update
sudo apt install wget

 

 

+ nvm 이란?

Node Version Manager 로 

즉, node.js 의 버전을 관리해주는 도구.

 

nvm 설치가 잘 되었다면

nvm --version

 명령어로 확인

 

2. node.js 설치

nvm install --lts

버전 확인은 아래 방법으로

node -v

 

 

현재까지의 상황은

로컬 ubuntu 환경에서 빌드를 할 수있는 환경이 갖춰진 것이다.

이후 진행은 흐름은

 

정적 페이지 빌드 -> 버킷 생성 및 정적 웹사이트 호스팅 용으로 구성 -> 빌드된 정적 웹페이지 업로드 -> 퍼블릭 액세스 차단 및 정책 생성