[AWS Practice] 인스턴스 DB 연결 및 배포 실습

김재희·2023년 10월 23일
0
post-thumbnail
post-custom-banner

💡 순서는 상관 없음!

1. 인스턴스 생성 및 파일 연결


1) 인스턴스 생성(Launch instance)

1

  • Name and tags : ex) my-first-java-server
  • Application and OS Images : Ubuntu 선택 → Ubuntu Server 22.04 LTS 선택
  • Instance type : t2.micro
  • Key pair (login) : ‘Create new key pair’ 선택 후 파일 이름 입력해 파일 다운로드
  • ‘Launch instance’ 버튼 클릭

2) AWS 방화벽 설정 변경

2

  • 인바운드 규칙 편집(Edit inbound rules)

3

Port : 8080

Source : Any

3) window 환경에서 인스턴스 연결 하기 위해 키 변환

  • puttygen 실행하여 ‘키 변환’
  • 개인키 pem파일 불러오기

4

5

  • 개인키(ppk파일) 파일 이름 입력하면 파일 다운로드 되어 저장

✅4-1)과 4-2)는 같은 과정

4-1) putty 연결 설정

  • ip주소 / 포트: 22 / 연결형식: SSH

(인스턴스 인바인드규칙에 기본 포트가 22로 만들어지기때문)

6

  • iPuTTY창 뜨면 ubuntu로 로그인

4-2) gitbash - ubuntu 계정 접속

  • 반드시 pem 및 ppk 파일 저장된 위치는 사용자 폴더(jaehee)
  • ssh client 에서 다음의 정보로 접속
ssh -i <다운로드 받은 key file> ubuntu@<public ip>

5) gitbash - AWS 인스턴스에 java&tomcat 설치

sudo apt update

# java & tomcat 설치
sudo apt install tomcat9 tomcat9-admin
# curl  웹 요청을 보내는 명령어
curl http://localhost:8080

⭐ tomcat 정상적으로 돌아가는지 확인

6) filezilla(SFTP Client) - 연결 및 파일 전송

  • 연결

8

  1. Protocol : SFTP
  2. Host : AWS 서버의 Public IP
  3. Logon Type : Key file
  4. User : ubuntu
  5. Key file : 다운로드 받은 pem 파일
  • 본인 프로젝트를 war파일로 만들기(pom.xml에서 Run As 후 Goals 부만 package로 입력)

9

  • ROOT.war 파일 ubuntu 폴더로 복사

10

7) gitbash - jar 파일을 서버로 업로드

# 반드시 사용자 폴더 위치에서

# 현 위치의 파일 목록 조회
ls
# webapps 폴더에 ROOT.war 복사
sudo cp ROOT.war /var/lib/tomcat9/webapps/
# webapps 폴더로 이동
cd /var/lib/tomcat9/webapps/
ls
# ROOT 폴더 삭제(rm 명령어 항상 조심!)
sudo rm -rf ROOT

/var/lib/tomcat9/conf/server.xml 위치!
vi server.xml #파일을 에딭터로 봤을때  <Host/> 의 unpackWARs, autoDeploy 
부분이 true라면 따로 수동으로 배포를 해줄 필요없음 
에디터 끄기? esc :q 엔터!

# jar 파일 서버로 업로드
sudo jar -xf ROOT.war
jar
sudo apt install openjdk-11-jdk-headless
sudo jar -xf ROOT.war
ls
cd ROOT

# 관리자 권한으로(빠져나오려면 exit 명령어 입력!)
sudo su

sudo service tomcat9 restart



2. Docker OracleDB 연결


1) ubuntu에서 docker 설치

# docker 설치
sudo apt update
sudo apt install docker.io

sudo usermod -aG docker $USER
newgrp docker

# container 목록 조회
docker ps

2) container 실행

docker run --name tomcat optionary -p 8080:8080 tomcat:8.0

3) docker에서 oracle 설치 및 실행

  • run Oracle with docker
docker run -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g
⭐ 인스턴스 내에 1521로 돌아가는 oracle이 없으므로 port 사용 가능함
  • 🚫기존 run Oracle with docker(메모리 1기가라서 오라클 중지됨)
docker run -d -p <port>:1521 -e ORACLE_PASSWORD=<1234> gvenzl/oracle-xe
예시) docker run -d -p 1521:1521 -e ORACLE_PASSWORD=aws gvenzl/oracle-xe

⭐ 1522:1521(이렇게 1522로 고쳐서 써주면 개인컴퓨터 오라클 중복 실행 가능해짐)
⭐ run 뒤에 -d를 적어주면 백그라운드에서 실행하겠다는 의미

4) sqldeveloper 새 접속 후 스키마 사용자 계정 만들기

  • system 계정 접속

hostname: 인스턴스 public ip주소
port: 1521
sid: xe
username: system
password: oracle

  • system 계정 비밀번호 변경하고 스키마 사용자 계정 생성
# 비밀번호 변경
password

# 사용자 계정
create user aws01 identified by aws01;
grant create session to aws01; # 특정 권한 부여
grant resource, connect to aws01;
alter user aws01 default tablespace users quota unlimited on users;
  • Name / 사용자 이름(id) / 비밀번호 / 호스트 이름(ip) / 포트 (docker oracle 실행 포트번호) / SID: xe

11

  • DB테이블 생성

12




Ubuntu Timezone Setting

echo TZ='Asia/Seoul'; export TZ >> ~/.profile
source ~/.profile

sudo timedatectl set-timezone Asia/Seoul

Docker Oracle Timezone 설정

1) Docker 접속

# docker 프로세스 목록 조회
docker ps

# Container ID 확인
docker exec -it <ContainerID> /bin/bash

# => docker container 안으로 들어가게 된다

apt update
apt install tzdata
# Asia, Seoul 선택
profile
소통하며 협업하는 신입 백엔드 개발자입니다.
post-custom-banner

0개의 댓글