1. 인스턴스에 개발 환경 구축하기

  • EC2 인스턴스를 생성하는 것은 가상 PC 한 대를 임대하는 것과 같다
  • 컴퓨터를 처음 구입하면 필요한 프로그램을 설치하듯이, EC2 인스턴스에 처음 접속하면 서버를 구동하는 데 필요한 개발 환경을 구축해야 한다
  • EC2 인스턴스 연결에서 진행한 것과 같이 인스턴스를 연결한 터미널에 아래 명령어를 입력한다
  • 패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트하기 위해서 아래 명령어를 사용한다
  • 터미널에 연결되면 bash 와 cd ~ 명령으로 디렉토리를 변경한 후에 진행한다
$ sudo apt update
  • 명령을 실행하면 업데이트가 진행된다

  • 업데이트가 끝나면 JAVA를 설치하는 명령을 입력하고 실행한다
$ sudo apt install openjdk-11-jre-headless
  • 함께 실습 중인 페어가 JAVA를 설치해 놓아서 이미 설치가 되었다는 안내가 나온다

  • 정상적으로 설치를 하게 되면 나오는 출력이다
  • 확인창이 나오면 'yes'를 입력한다

  • 설치가 완료되면 java -version 명령으로 java 라이브러리 버젼과 완료여부를 확인한다

 

2. git을 통해 서버 코드 클론 받기

  • 스프린트 코드가 저장된 깃헙 레포지토리 주소를 복사한다
    - 실습에서는 운영진에서 만들어 놓은 레포지토리의 주소를 복사한다

  • git clone 명령어를 통해 EC2 인스턴스에 스프린트 코드를 클론 받는다
    - 페어가 미리 생성해 놓아서 에러가 발생한다

  • 정상적으로 진행되는 출력은 아래와 같다

  • clone을 위해 설정하셨던것과 같이, SSH등록이 필요하다

※ SSH등록이 필요하므로 참조한다

 ▶ SSH 키 생성

  • ssh 키는 비대칭키로 구성되며, 그 이름에서 유추할 수 있듯이 두 개의 키가 서로 대칭이 되지 않는 형태로 존재한다
  • 다음의 명령어를 프롬프트에 입력하고, ssh 키 페어(쌍)을 생성한다
  • 명령어를 입력 후 Enter 키를 몇 번 입력하면, ssh 키 페어가 생성된다
ssh-keygen

  • ssh-keygen 명령어는 경로 ~/.ssh./ 에 두 파일 id_rsa 와 id_rsa.pub 를 생성한다
  • 두 파일은 ssh 키 페어라고 한다
  • id_rsa.pub는 누구에게나 공개해도 되는 공개키(Public Key) 라고 한다
  • id_rsa는 공개되면 안 되는 키라고 하여 개인키(Private Key) 또는 비밀키(Secret Key) 라고 한다
  • ssh 키 페어를 생성하였으므로, 생성된 키 페어 중 공개키를 복사하여 github에 등록한다

  • 정상적으로 클론했는지 확인하기 위해 터미널에 ls 명령어를 입력한다
  • 스프린트 코드 폴더명이 보이면 정상적으로 다운로드가 완료된 것이다

  • 터미널을 통해 스프린트 코드 안의 DeployServer 디렉토리로 이동한다
cd be-sprint-deployment/DeployServer

  • 빌드작업을 진행합니다.
./gradlew build
  • 진행율이 표시되면서 빌드가 진행된다

  • 터미널에 ls명령어를 입력하여 빌드 여부를 확인한다
  • 정상적으로 빌드가 완료되었으면 build폴더를 확인할 수 있다

  • 아래 명령어를 이용하여 빌드된 파일을 실행한다
java -jar build/libs/DeployServer-0.0.1-SNAPSHOT.jar
  • 아래와 같은 출력되면 정상적으로 서버가 실행되었음을 확인할 수 있다

 

 

3. EC2 인스턴스에서 서버 실행하기

  • 다음은 EC2 인스턴스의 IP 주소로 접근해서 테스트를 진행한다
  • IP 주소는 EC2 대시보드에서 생성한 EC2 인스턴스를 클릭하면 확인할 수 있다
  • 두 가지 형태의 주소가 존재하는 것을 확인할 수 있다
  • 퍼블릭 IPv4 주소와 퍼블릭 IPv4 DNS는 형태만 다를 뿐 같은 주소이다
  • 둘 중 어떤 주소를 사용해도 상관없다
  • 실습에서는 퍼블릭 IPv4 DNS 주소를 이용하여 접속 테스트를 진행한다

  • EC2 인스턴스의 IP 주소로 접속하면 오류가 발생한다
  • 오류 메세지가 보이는 이유는  '보안 그룹' 설정을 하지 않았기 때문이다

 

  • 웹 애플리케이션에 IP주소를 입력하면 접속되는 것을 확인할 수 있다


4. Spring Boot 백 그라운드 실행

  • EC2 인스턴스에서 서버 실행 시 java -jar로 시작하는 명령어로 실행하였을 때 foreground에서 동작을 해서 실행시킨 창을 항상 열어놔야 하는 단점이 있다
  • 향후 사용하게 될 수 있는 Jenkins 같은 곳에서 배포된 jar파일을 실행했을 경우에도 문제가 될 수 있다
  • 어플리케이션이 background에서 실행도 가능해야하고 어플리케이션이 제대로 실행 되고 있는지 체크를 해야한다면 이를 편하게 하기 위한 실행 스크립트인  "Shell Script" 를 만들어야 한다
  • 셀 스크립트는 셀이나 명령 중 인터프리터에서 돌아가도록 작성된 스크립트이다
    -  인터프리터는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경이다
  • 운영체제를 위한 스크립트이다
  • 셀 스크립트는 대략적 구조만 파악을 하고 필요에 따라 검색을 통해 필요한 셀 스크립트를 가져다 조합하면 된다
  • 셸 스크립트는 한 번 작성하면 재작성 하는 경우가 매우 적다
  • 여러 경우의 스크립트를 모아두어 상황에 맞게 사용하는 방법이 효율적이다

 1) 셀스크립트(Shell Script) 작성

  • 셸 스크립트는 실행 명령을 미리 작성해 둔 것이다
  • .sh 라는 파일 형태로 저장된다

  • 파일을 생성한다
$ nano restart.sh // 에디터로 파일을 생성한다

  • 아래 코드를 작성 후 저장한다
#!/bin/bash

ps -ef | grep "DeployServer-0.0.1-SNAPSHOT.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 build/libs/DeployServer-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev > /dev/null 2>&1 &

  • 아래 명령어를 통해 실행 권한을 부여한다
chmod 755 restart.sh
  • 아래 명령어를 통해 실행이 가능하다
    - 경우에 따라 권한 이슈로 실행이 되지 않을 경우에는 sudo를 붙여 실행하면 오류없이 실행된다
 ./restart.sh

출력되는 결과가 맞는지는 확인이 필요하다....ㅠㅠ

'클라우드' 카테고리의 다른 글

Cloud - AWS 실습 - 클라이언트 배포  (0) 2022.08.04
Cloud - AWS 실습 - Security Group  (0) 2022.08.03
Cloud - AWS 실습 - EC2 인스턴스 생성/연결  (0) 2022.08.02
Cloud - AWS(Amzon Web Service)  (0) 2022.08.02
Cloud - 기본  (0) 2022.08.02

+ Recent posts