📌자바 버전을 바꿔주려하니 ubuntu 비밀번호를 요구한다 근데 난 ubuntu 비밀번호 설정해준적이 없는데? 맨날 키페어로 들어왔는데??

 

EC2를 만들면 아래 명령어들로 root비밀번호와 ubuntu 비밀번호를 생성할 수 있다. 

 

📍root 비밀번호 생성

sudo passwd root

 

 

📍ubuntu 비밀번호 생성

sudo su -
passwd ubuntu

 

'DevOps > AWS' 카테고리의 다른 글

EC2] 서버 시간 변경하는 법  (2) 2022.12.29
EC2 + RDS] Spring Boot AWS 배포 과정  (0) 2022.12.18

 

프로젝트를 진행하는 와중에 댓글을 달면 9시간 전 시간으로 달리는 트러블이 일어났다.

원인은 EC2 서버 시간으로 기본 UTC 기준으로 시간이 설정되어 있어서 서버 시간을 기준으로 댓글이 달렸던 것!

이를 해결하기 위해 서버 시간을 Korean 타임인 KST로 바꾸는 방법을 정리해 본다. 

 

1. EC2에 접속해서 현재 서버의 기준 시간을 확인한다.

// 1번째 명령어
cat /etc/timezone

// 2번째 명령어
more /etc/timezone

둘다 Etc/UTC (협정 세계시)로 나오는 걸 볼 수 있다. 

 

 


2. 서버 시간 변경

명령어는 아래와 같다

sudo dpkg-reconfigure tzdata

+ 명령어 설명

- sudo : super user do의 약자로 root 사용자가 아닌 사용자가 root사용자에 준하는 능력으로 명령을 실행하게 한다

- dpkg-reconfigure : dpkg는 Debian package의 약자로 우분투 및 데비안에 설치된 패키지를 재구성하는 도구

- tzdata : Timezone data

 

 

위 명령어를 실행하면 아래처럼 화면이 나오는데 Asia > Seoul을 선택하고 tap으로 Ok로 이동해 Enter를 누른다

 

 

 


3. 확인

다시 한번 아래 명령어로 쳐서 확인하면 시간이 KST 기준으로 나오는 걸 확인할 수 있다.

만약 변경이 안되었다면 인스턴스를 재부팅해봐야 한다고 한다!

// 1번째 명령어
cat /etc/timezone

// 2번째 명령어
more /etc/timezone

 

 

 


 

참고자료:

 

EC2 서버 시간이 달라요

서버 시간이 달라서 조회가 안돼요!

velog.io

 

'DevOps > AWS' 카테고리의 다른 글

EC2] root비밀번호와 ubuntu비밀번호 생성  (0) 2023.01.20
EC2 + RDS] Spring Boot AWS 배포 과정  (0) 2022.12.18

 

AWS 배포 과정

 

AWS RDS 데이터베이스 설정

  • 서비스에서 RDS 검색 
 

https://ap-northeast-2.console.aws.amazon.com/rds/home

 

ap-northeast-2.console.aws.amazon.com

 

 ********** 서버는 꼭 서울로 할 것 (서버 선택은 오른쪽 상단에 있음) 

 


  • 데이터베이스 생성

아래 이미지에서 별도 선택하는 부분을 제외하고는 모두 기본 선택된 사항을 따른다

 

1)  

 

 

2)  

방식은 MySQL

 

 

3)  

무료 사용을 위해 프리티어 선택

전에 지운게 남아 인스턴스 식별자 는 rt-database로 변경

 

4)  

가용 영역은 어떤 걸 선택해도 된다고 한다

 

 

5)  

아래 추가 구성은 모니터링 아래 토글로 접혀있음

사용할 데이터 베이스 이름 결정

 

 

6)  

데이터 베이스 생성

 

 

 


  • 포트 설정 

1)  

RDS 페이지에서 데이터베이스 메뉴를 선택

(참고로 데이터베이스 생성이후 EC2 대시보드로 이동하니 다시 서비스에서 RDS검색해 이동해서 찾아야한다)

전에 지운게 남아 인스턴스 식별자는 rt-database로 변경됨

 

2)  

연결 & 보안 탭 

 

 

3)  

인바운드 규칙을 편집해 포트를 오픈

 

 


EC2 서버의 포트 오픈

 

  • EC2 보안그룹

 

 

  • 인바운드 규칙 편집

 

 

  • 자바 기본 포트인 8080으로 두가지 포트 오픈

 

 


Project에 DB를 RDS의 MySQL로 연결해주기 위한 설정

1)  

RDS 창에서 엔드포인트 토큰을 복사해온다 

 

 

2)  

IntelliJ 에서 작성한 프로젝트의 오른쪽 탭 메뉴에서 Database 선택

 

 

3)  

Host에 RDS에서 복사해 온 엔드포인트를 입력하고 User에는 데이터베이스 생성 당시에 설정해준 마스터 사용자 이름을 기입한다. 그리고 하단에 Test Connection을 누르면 경고창 같은게 나오지만 상관없이 변경 누르고 RDS에서 작성했던 비밀번호를 넣어 테스트의 결과를 확인한 후에 적용한다.

 

4)  

위의 사항만으로 적용되지 않기 때문에 Dependency추가 와 application.properties를 수정해야한다.

 

🟥 application.properties

엔드포인트, 초기데이터베이스이름, username(마스터 사용자 이름), password 모두 RDS에서 데이터베이스 생성시 적용했던 그대로 작성한다.

 

spring.datasource.url=jdbc:mysql://나의엔드포인트:3306/초기데이터베이스이름
spring.datasource.username=나의USERNAME
spring.datasource.password=나의패스워드
spring.jpa.hibernate.ddl-auto=update

 

+기존 개발로  h2를 사용했다면 h2 해당 사항을 모두 지우고 위와 같이 작성한다.

그리고 프로젝트에 h2관련 사항을 모두 지운다 (우리팀 프로젝트 같은 경우 Spring Security Config 사항에 h2 접근 허가등의 자잘한 사항 등이 있어 ctrl + shift + f로 h2관련 모든 코드를 검색해 해당 사항을 대체 또는 삭제했다.)

 

 

🟧 build.gradle에 Dependency 추가

MySQL Connector/J 링크 : https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/8.0.31

+ 버전 경우 RDS에서 데이터베이스 생성시 기본선택이 8.0.28이었으나 아래와 같이 8.0.31버전도 적용되었다.

오히려 아래 버전들에서는 취약점이 발견된 듯 하다

 

implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.0.31'

 

 


jar파일 빌드

이제 설정이 완료되었다면 배포할 최종 파일인 jar파일을 빌드하는 과정을 진행한다.

 

1)  

오른쪽 확장 메뉴 쪽의 Gradle을 선택한다.

 

 

2)  

Tasks > build > buil 클릭

+ 빌드전 캐시등의 잔여파일로 인해 빌드가 실패하는 경우도 있으므로 clean을 눌러 build폴더를 전부 지우고 다시 빌드해보는 걸 추천

 

 

3)  

성공적으로 빌드되었다면 프로젝트 창에서 build > libs 에서 jar 파일이 생성된 걸 확인할 수 있다.

 

4)  

실제 프로젝트 폴더에서도 build > libs 경로에 파일이 있는 것을 확인 할 수 있다. 

 

 

 


서버 세팅

이제 배포할 파일을 만들었으니 서버를 세팅한다.

 

  • EC2에 접속 

cmd, git bash등 아무 터미널이나 열어 아래와 같이 접속한다.

ssh -i 키페어 ubuntu@퍼블릭IPv4주소

+ 키페어 자리에는 키페어 파일을 마우스로 끌어다 놓으면 되며, 퍼블릭 IPv4주소는 EC2의 인스턴스 요약에 있다.

(자신의 키페어가 어디갔는지 기억이 안나는 불상사가 일어났다면 EC2에서 다시 발급)

 

 

 

 

  • JDK 설치

EC2에도 자바를 돌릴 수 있는 환경을 설정해준다

 

1)  

apt-get는 Advanced Packaging Tool로 패키지 관리 도구로 이 명령어는 업데이트 한다

sudo apt-get update

 

2)  

JDK설치 (우리 프로젝트는 Corretto 17.0.5버전이므로 openJDK 17버전을 설치)

sudo apt-get install openjdk-17-jdk

 

혹시 apt-get 명령어 사용시 이런 에러가 발생했다면?

더보기

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

 

위와 비슷한 형식의 에러가 났다면 apt가 강제로 종료되어 자원이 일시적으로 잠긴 상태로 멈춰버려 생긴 에러이다. 

따라서 잠긴 자원을 사용하기위해 lock을 삭제하는 아래 3가지 명령어를 모두 적용하면 해결된다. 

 

  • sudo rm /var/lib/apt/lists/lock 
  • sudo rm /var/cache/apt/archives/lock 
  • sudo rm /var/lib/dpkg/lock 

 

3)  

설치된 것 확인 

java -version

 

 

+ 뒤에서 터미널로 더 진행하니 바로 끄지 말기

 

 

 

 

 


서버에 올려 배포하기

데이터베이스, 배포파일, 환경설정까지 완료가 되었다면 배포과정에 들어간다.

 

  • 파일질라 접속

 

 

  • 로컬 호스트에서 원격 호스트로 파일 전송 

빌드해 놓은 배포 파일중 plain이 아닌 jar 파일을 올린다.

+ 마우스로 끌어다 놓는 것만으로도 서버에 올라간다.

 

 

  • 터미널로 EC2에 접속한 상태에서 진행 

한번 실행해보려면 

java -jar JAR파일명.jar

+실행 종료는 ctrl + c

 

인텔리제이에서 많이 보던 그 화면

 

 

 

접속 종료후에도 계속 실행하게 하려면

nohup java -jar JAR파일명.jar &

 

 

 

+ nohup으로 돌린 프로세스를 강제로 죽이는 법

# 아래 명령어로 pid(process id)를 찾는다 / 두번째 열이 pid
ps -ef | grep java 

#그 pid로 죽인다 (옵션9가 강제종료)
kill -9 [pid값]

 

 

  • 실행 확인1 (브라우저)

 

 

 

  • 실행 확인 2 (Postman)

 

 

  • 배포 완료! 

 

 

 


번외) MySQL사용

 

  • EC2에 Mysql-Client 설치
sudo apt-get install mysql-client

 

  • MySQL 접속
mysql -u admin -h RDS엔드포인트 -p
//그리고 패스워드 입력

'DevOps > AWS' 카테고리의 다른 글

EC2] root비밀번호와 ubuntu비밀번호 생성  (0) 2023.01.20
EC2] 서버 시간 변경하는 법  (2) 2022.12.29

+ Recent posts