서버 배포[aws] - EC2 - Session Manager 연결

wish17·2023년 3월 29일
0
post-thumbnail

EC2 Instance 연결

인스턴스 탭에서 연결하고자 하는 인스턴스를 선택한 후 연결 버튼을 클릭하면 인스턴스에 연결하는 방법을 확인할 수 있다.

Session Manager 연결
(주황색 연결 버튼 누르면 아래와 같이 터미널이 열림)

$ bash

bash 쉘로 변경

$ cd ~

홈 경로로 이동

EC2 인스턴스 상에서 서버 실행

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

EC2 인스턴스와 연결한 터미널에서 아래 명령어 입력

// 패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트
$ sudo apt update
//  java 설치
$ sudo apt install openjdk-11-jre-headless

아래와 같은 창이 나오면 "Y" 입력

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libasound2 libasound2-data libgraphite2-3 libharfbuzz0b
Suggested packages:
  libasound2-plugins alsa-utils libnss-mdns fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei
  | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  libasound2 libasound2-data libgraphite2-3 libharfbuzz0b openjdk-11-jre-headless
0 upgraded, 5 newly installed, 0 to remove and 70 not upgraded.
Need to get 37.9 MB of archives.
After this operation, 173 MB of additional disk space will be used.
Do you want to continue? [Y/n]

2. git을 통해 실습 코드 클론 받기

  • SSH등록하고 git clone 하면 됨

    • 기본 경로가 아닌 홈 경로(~)로 이동하여 clone해야함!
  • clone 다 하면 ls로 확인하고 cd 사용해서 서버 프로젝트 파일로 이동

    • ex. cd be-sprint-deployment/DeployServer
  • 이후 빌드작업을 진행

    • ./gradlew build

인텔리제이 gradle텝에서 build눌러서 빌드하는거랑 같은거임.
(우리가 아마존한테 빌린 컴퓨터에는 인텔리제이 없으니 터미널로 하는거)

빌드 완료되면 cd build/libs로 빌드된 파일 실행 파일로 이동

ls로 실행파일명 확인 (위의 경우 DeployServer-0.0.1-SNAPSHOT.jar)

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

// 빌드된 파일 위치 가서 빌드된 파일 실행
java -jar 파일명

// 예시
java -jar DeployServer-0.0.1-SNAPSHOT.jar

// 빌드 파일 백그라운드에서 실행
java -jar 파일명 &

// 백그라운드 예시
java -jar DeployServer-0.0.1-SNAPSHOT.jar &

해당 명령어를 이용하여, 빌드된 파일을 실행

실행 완료.

IP주소 확인

인스턴스 ID 클릭

퍼블릭 IPv4 주소:8080을 브라우저에 입력해서 접근 되는지 확인 가능

빌드 파일 백그라운드에서 실행, 조회, 종료

// 빌드 파일 백그라운드에서 실행
java -jar 파일명 &

// 백그라운드 예시
java -jar DeployServer-0.0.1-SNAPSHOT.jar &
  • 기존 명령어 뒤에 & 하나만 붙이면 백그라운드에서 실행할 수 있다.

  • 위와 같이 실행하면 빌드 파일이 백그라운드에서 실행되며, 터미널 창에서 다른 작업을 할 수 있다.

  • 기존 방법은 컨트롤+C 입력하면 바로 종료되는데 위의 방법처럼 하면 종료되는 것처럼 보이더라도 백그라운드에서 실행되고 있다.

근데 이렇게 하면 컨트롤+C로 종료를 못하게 된다.
그렇기 때문에 아래와 같은 명령어를 이용해서 PID를 조회하고
PID를 명시해서 종료 시켜야한다.

// PID 조회방법
ps -ef | grep 실행파일명

//예시
ps -ef | grep DeployServer-0.0.1-SNAPSHOT.jar
//종료 시키기
kill [PID]

정확히는 kill PID다 아래 캠쳐본 확인

cf.참고로 빨간줄 두줄인건 실행파일을 검색하는 실행동작이 검색되는거다.
고로.. 아래 줄은 무시하면 된다.

ssm-user   19037   19008  0 06:45 pts/0    00:00:00 grep --color=auto DeployServer-0.0.1-SNAPSHOT.jar

Security Group

보안그룹(Security Group)

  • 인스턴스로 들어가고 인스턴스에서 나가는 트래픽에 대한 가상 방화벽
  • 들어가는거 = 인바운드
  • 나오는거 = 아웃바운드

aws 좌측에 있는 텝에서 보안그룹으로 이동해 인바운드, 아웃바운드 규칙을 설정할 수 있다.


Shell Script

  • 명령어를 간편하게 실행시켜주는 스크립트다.

  • 제대로 실행 되고 있는지 체크할 수 있음

Shell Script 사용법

  1. .sh 파일형태로 파일을 생성한다.
  2. 명령어를 작성한다. (nano 사용법 참고)
  3. ./파일명.sh 명령어를 통해 실행할 수 있다.
// restart.sh 파일 생성
nano 파일명.sh

//예시
nano restart.sh

------------------------------------------------------------------------------------------------------

// 명령어 작성

#!/bin/bash

# DeployServer-0.0.1-SNAPSHOT.jar가 실행중이라면 프로세스를 종료합니다.
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 Rebuild!"
./gradlew build

# DeployServer-0.0.1-SNAPSHOT.jar를 다시 실행하기 위한 과정을 진행합니다.
echo "my-application Restart!"
echo $1

# nohup 명령어를 통해 백그라운드에서 DeployServer-0.0.1-SNAPSHOT.jar를 실행합니다.
nohup java -jar build/libs/DeployServer-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev > /dev/null 2>&1 &

------------------------------------------------------------------------------------------------------

// 작성한 Shell Script 실행 권한 부여
chmod +x 파일명.sh

//예시
chmod +x restart.sh

------------------------------------------------------------------------------------------------------

// 작성한 Shell Script 실행
./파일명.sh

//예시
./restart.sh

실행권한 부여하면 파일명이 초록색으로 바뀐다!!

0개의 댓글