[Spring Boot] AWS 우분투 서버에 배포하기

DANI·2023년 10월 23일
1
post-thumbnail

💻 AWS 라이트세일 홈페이지 : https://lightsail.aws.amazon.com


1. 회원 가입 후 인스턴스 생성

  • 플랫폼 : Linux/Unix
  • 블루프린트 : Ubuntu

💻 인스턴스 생성 완료! (내 서버가 생성됨)





2. 서버 접속을 위해 고정IP 생성

  • 네트워킹 > 고정 IP생성

    💻 내 서버 고정IP 생성 완료!


3. 8080포트의 방화벽 해제!

SBB 서비스의 기본 포트 번호는 8080이다. 그래서 외부에서 8080번 포트로 접속하려면 '방화벽 해제 작업'을 해야 한다.

  • 네트워킹 > 규칙추가 : 사용자 지정/8080 입력 후 추가!



4. 계정 > 프라이빗 키 다운로드

.pem파일이 다운로드 된다!

5. 서버 접속 프로그램

  • SSH : 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템(서버)의 명령을 수행하기 위한 프로토콜 (기본포트: 22번)
  • SFTP : SSH의 파일 전송을 담당하는 역할, 서버에 파일을 업로드하거나 다운로드 할 수 있는 프로토콜 (기본포트: 22번)

SSH에서 서버IP로 세션 생성하기

💻 session 생성하기




📩 서버 시간 설정하기

🔴 date 명령 시 UTC시간이 출력됨

ubuntu@jumpto:~$ date
Mon Mar 21 03:32:36 UTC 2022

🔴 sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime : 한국 시간으로 설정

ubuntu@jumpto:~$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

🔵 date 명령 시 한국 시간으로 나옴

ubuntu@jumpto:~$ date
Mon Mar 21 12:33:30 KST 2022


📩 자바 설치

🔴 java 명령 : 서버에 자바가 설치되어 있는지

ubuntu@jumpto:~$ java

Command 'java' not found, but can be installed with:

sudo apt install default-jre              # version 2:1.11-72, or
sudo apt install openjdk-11-jre-headless  # version 11.0.7+10-3ubuntu1
sudo apt install openjdk-13-jre-headless  # version 13.0.3+3-1ubuntu2
sudo apt install openjdk-14-jre-headless  # version 14.0.1+7-1ubuntu1
sudo apt install openjdk-8-jre-headless   # version 8u252-b09-1ubuntu1

🔴 sudo apt update 우분투 업그레이드 명령

ubuntu@jumpto:~$ sudo apt update
Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:4 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu focal/universe amd64 Packages [8628 kB]
Get:5 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
(... 생략 ...)

🔴 sudo apt install openjdk-17-jdk 자바 설치 명령

ubuntu@jumpto:~$ sudo apt install openjdk-17-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
(... 생략 ...)

🔵 java -version 자바 버전 확인

ubuntu@jumpto:~$ java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu118.04)
OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu118.04, mixed mode, sharing)


📩 프로젝트 디렉터리 생성

🔴 mkdir sbb : sbb 디렉터리 생성

ubuntu@jumpto:~$ mkdir sbb
ubuntu@jumpto:~$ ls
sbb

디렉터리까지 생성 완료!




SFTP에서 서버로 sbb.jar파일 업로드

  • 파일질라 홈페이지: https://filezilla-project.org/

    💻 사이트 생성하기


    ✅ 찾아보기 클릭 후 파일종류 변경하기!!

    ✅ 서버에 파일을 업로드 할 수 있다.



STS에서 sbb.jar파일 생성하기


✅ 우클릭 후 Run Configurations.. 클릭

✅ sbb.jar파일 생성

✅ 프로젝트 위치의 > build폴더 > libs폴더 : 생성된 .jar파일이 있다!

✨ 해당 파일을 끌어 당겨 파일질라에서 서버로 업로드 하자!




SSH에서 배포하기

🔴 cd sbb : sbb 디렉터리로 이동

ubuntu@jumpto:~$ cd sbb
ubuntu@jumpto:~/sbb$

🔴 java -jar sbb-0.0.1-SNAPSHOT.jar : jar파일 설치

🚫 에러 발생

localhost에 연결할 수 없다는 에러가 출력된다.


🔑 해결 방안

✅ 수정 전 :
✅ 수정 후 :

사실 그동안 서버모드로 h2 db에 연결해왔다...
당연히 서버에서는 로컬호스트를 찾을 수가 없지...
경로를 ~/ 루트로 바꾸어 저장해준다!



💻 http://15.165.25.170:8080/

내 게시판이 오픈되었다...! 후후 차차 수정해보자!



6. 백그라운드로 서비스를 시작하는 스크립트(shell script)와 서비스를 중지하는 스크립트만들기

📩 백그라운드로 서비스를 시작하는 스크립트 생성

🔴 nano start.sh

ubuntu@jumpto:~/sbb$ nano start.sh

✅ 편집기 화면에 다음을 입력하자

#!/bin/bash

JAR=sbb-0.0.1-SNAPSHOT.jar
LOG=/home/ubuntu/sbb/sbb.log

nohup java -jar $JAR > $LOG 2>&1 &
  • JAR 변수 : 배포파일명이고
  • LOG 변수 : 로그를 출력할 파일명
  • nohup 명령어 : 프로세스를 실행한 터미널의 연결이 끊어지더라도 프로세스가 지속적으로 동작 할 수 있게 해주는 명령어
    • > $LOG : 프로세스의 출력을 로그파일에 저장하라는 의미
    • 2>&1 : 오류(stderr) 출력을 일반(stdout) 출력으로 전달하라는 의미(일반 로그와 오류 로그가 모두 sbb.log 파일에 저장될 것이다)
    • & : 백그라운드로 명령을 실행하라는 의미

로그 파일에는 STS에서 로컬 서버 실행시 콘솔창에 표시되던 것과 동일한 로그들이 출력된다.

🔴 chmod +x start.sh -> 실행 권한 부여 / ./start.sh -> 파일 실행

ubuntu@jumpto:~/sbb$ chmod +x start.sh
ubuntu@jumpto:~/sbb$ ./start.sh


📩 서비스를 중지하는 스크립트만들기

🔴 nano stop.sh

ubuntu@jumpto:~/sbb$ nano stop.sh

✅ 편집기 화면에 다음을 입력하자

#!/bin/bash

SBB_PID=$(ps -ef | grep java | grep sbb | awk '{print $2}')

if [ -z "$SBB_PID" ];
then
    echo "SBB is not running"
else
    kill -9 $SBB_PID
    echo "SBB stopped."
fi
  • SBB_PID : 현재 실행중인 SBB 서비스의 프로세스 아이디

만약 SBB 서비스의 프로세스가 없다면 "SBB is not running" 이라는 메시지를 출력하고 프로세스가 있다면 kill -9로 해당 프로세스를 강제로 종료한다.

🔴 chmod +x stop.sh -> 실행 권한 부여 / ./stop.sh -> 파일 실행

ubuntu@jumpto:~/sbb$ chmod +x stop.sh
ubuntu@jumpto:~/sbb$ ./stop.sh





✨ 이번 챕터에서 배운 부분

✅ 배포 시 db url 연결 확인 / 배포 시 따로 설정 파일 두는 법

📝 공부할 부분

✅ 배포 시 따로 설정 파일 두는 법
✅ h2 db 말고 mysql등 다른 db 연결해보기
✅ 우분투란 무엇인가.. https://story.pxd.co.kr/732
✅ 서버 접속이란? https://library.gabia.com/contents/infrahosting/9002
✅ 개념 공부하기

0개의 댓글