인스턴스 탭에서 연결하고자 하는 인스턴스를 선택한 후 연결 버튼을 클릭하면 인스턴스에 연결하는 방법을 확인할 수 있다.
Session Manager 연결
(주황색 연결 버튼 누르면 아래와 같이 터미널이 열림)
$ bash
bash 쉘로 변경
$ cd ~
홈 경로로 이동
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]
SSH등록하고 git clone
하면 됨
clone 다 하면 ls
로 확인하고 cd
사용해서 서버 프로젝트 파일로 이동
cd be-sprint-deployment/DeployServer
이후 빌드작업을 진행
./gradlew build
인텔리제이 gradle텝에서 build눌러서 빌드하는거랑 같은거임.
(우리가 아마존한테 빌린 컴퓨터에는 인텔리제이 없으니 터미널로 하는거)
빌드 완료되면 cd build/libs
로 빌드된 파일 실행 파일로 이동
ls
로 실행파일명 확인 (위의 경우 DeployServer-0.0.1-SNAPSHOT.jar
)
// 빌드된 파일 위치 가서 빌드된 파일 실행
java -jar 파일명
// 예시
java -jar DeployServer-0.0.1-SNAPSHOT.jar
// 빌드 파일 백그라운드에서 실행
java -jar 파일명 &
// 백그라운드 예시
java -jar DeployServer-0.0.1-SNAPSHOT.jar &
해당 명령어를 이용하여, 빌드된 파일을 실행
실행 완료.
인스턴스 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)
- 인스턴스로 들어가고 인스턴스에서 나가는 트래픽에 대한 가상 방화벽
- 들어가는거 = 인바운드
- 나오는거 = 아웃바운드
aws 좌측에 있는 텝에서 보안그룹으로 이동해 인바운드, 아웃바운드 규칙을 설정할 수 있다.
명령어를 간편하게 실행시켜주는 스크립트다.
제대로 실행 되고 있는지 체크할 수 있음
.sh
파일형태로 파일을 생성한다../파일명.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
실행권한 부여하면 파일명이 초록색으로 바뀐다!!