Write it/Spring Boot

Oracle Cloud 이용 배포 / 설정 방법

develop_mii 2025. 9. 14. 18:30

Oracle Cloud 이용 배포

 

1. menu → Compute → instaces

 

 

2. Create instance 

 

 

3. 이름 원하는 대로 설정

 

 

4. Image → Change image ( Image = 운영체제 ) → Ubuntu 선택

 

 

 

5. 아래 쪽 내려 버전선택 → Canonical Ubuntu 24.04 버전

 

 

6. Shape - Next

 

7. Security - Next

 

 

8. Networking - Next

만약, 처음 생성인 경우 → Create new virtual cloud network

 

 

 

 

9. 아래쪽 SSH Key - key download (2개 ) →  Next

* key는 한번만 down 가능

 

10. Storage - Next

 

 

11. Review - Create

 

 

12. 완료 후 instance 생성 확인

 

 

*만약 삭제하고싶은 경우 - 선택 후 Actions:Stop

 


수신규칙 설정

 

1. 생성된 instance 선택 (2개 중 아무거나)

 

2. Networking → subnet 클릭

 

 

3. Security - Default Security List for vcn 선택

 

 

4. Security rules - Add Ingress Rules 

 

5.Ingress Rule 생성  - Source CIDR - 0.0.0.0/0  (모든 외부IP 허용)  →  오른쪽 맨 아래 완료

                                 - Destination.Port.Range - 80,8080,443,22 

6. 완료 후 설정 확인

 


고정 Ip 설정 하기

 

 

 

1. instances → Ip 설정 원하는 instance 선택 - Networking - 오른쪽아래 ... → View Details

 

2. Ip administration - ... →  Edit

 

 

3. No public → Update

 

4. Edit

 

 

5. Reserved public IP → Create new Reserved IP Adress → Oracle → Update

 

6. 고정 IP 생성 완료 - 계정당 하나만 무료로 가능

 

 


원격 접속프로그램 PuTTY

: PuTTY은 개발자들에게 매우 유용한 기능을 포함한 무료 및 오픈 소스 Windows 프로그램

 

1. 링크 접속

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

Download PuTTY: latest release (0.83)

This page contains download links for the latest released version of PuTTY. Currently this is 0.83, released on 2025-02-08. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel

www.chiark.greenend.org.uk

 

 

2. 64-bit x86 다운로드 (window 운영체제 기준)

 

 

3. PuTTYgen 실행 → Load (다운받은  키파일 중 .key 선택)

 

 

4. save private key

 

 

5. key이름 설정(여기선 oracleTestKey) → 저장 후 창 닫기

 

 

6. PuTTY 실행 - Connection → SSH → Auth → Credenial.. → Browser 클릭: 전자지갑 파일 선택

 

 

7. Oracle Cloud에서 받은 Ip 입력해주고 - Open

 

 

8. 이 창이 뜨면 Accept

 

 

 

9. login as 옆에 ubuntu 입력 → 맨 아래 ~$ 표시 뜨면 됨 / linux 운영체제 설정

 

★ 명령어 순서대로 입력 

1. sudo apt update (리눅스 최신버전으로 서버 업데이트)
2. sudo apt install openjdk-17-jdk (jdk 17버전 설치) - 중간에 [Y/n] 물어보면 Y입력
3. sudo apt install tomcat10 (Tomcat서버 10버전 설치) - 중간에 [Y/n] 물어보면 Y입력
4. sudo systemctl status tomcat10  (톰캣서버10의 구동 여부 확인 - 초록색 active runnig  뜨면 ok (선택 사항))
    →  확인후 서버 상태 확인 빠져나오기 : ctrl + c
5. curl localhost:8080 (톰캣 서버의 기본 화면 페이지를 소스로 출력 (선택 사항))
6. sudo apt install ufw (방화벽 설정을 위한 설치) - 중간에 [Y/n] 물어보면 Y입력
7. sudo ufw allow 8080/tcp  (8080포트 방화벽 해제)
8. sudo ufw allow 80/tcp (80포트 방화벽 해제)
9. sudo apt install net-tools (네트워크 기능을 위환 툴 설치)
10. netstat -atn (포트 확인) - listen : 잘열려있는것 
11. sudo iptables -F (iptables 규칙을 초기화)
12. sudo timedatectl set-timezone Asia/Seoul  (우분투의 시간대를 아시아/서울로 변경)
13. sudo chmod 777 /var/lib/tomcat10/lib (폴더의 접근 권한 퍼미션 777 설정)
14. sudo chmod 777 /var/lib/tomcat10/webapps (배포할 톰캣서버의 루트 폴더 접근 권한 퍼미션 777 설정)


+ 추가) timedatectl  (현재 인스터스 원격 웹서버의 시간대 확인)
           sudo chmod -R 777 /var/lib/tomcat10/webapps/board(설정이름) (board 하위 폴더들의 퍼미션도 함께 설정)

 

 

10. 웹브라우저 창 → '내IP주소:8080' 입력→ 연결 확인


Oracle DB생성

 

1. Oracld Cloud - Oracle Database →  Autonomous Database → Create  Autonomous Database

 

 

 

 

2. Display name , Database name 설정 → Transaction Processing 선택

* database name= db이름 

 

 

 

3. Alway Free 체크(중요) → choose datebase version : 19c 

 

 

4. DB 비밀번호설정 → Create 

 

 

5. 완료 후 무료확인, 사용가능 확인

 


전자 지갑  설정

 

1. 생성한 DB 선택 → Database Connection

 

 

 

2. wallet type : Instance wallet → Download wallet 

 

 

3. 전자지갑 비밀번호 설정 →  (자동)파일 다운로드 되는것 확인 (원하는 위치로 옮겨놓기)

 

 


Oracle  : 접속 새로 만들기

 

* 구성파일(전자지갑 zip파일 선택)

 


STS 프로그램 

 

1. build.gradle : 오라클 시큐리티 의존설정 추가

//오라클 클라우드 DB 연결 설정
implementation "com.oracle.database.jdbc:ojdbc11:23.5.0.24.07"

// Wallet 지원용
implementation "com.oracle.database.security:oraclepki:23.5.0.24.07"
//implementation "com.oracle.database.security:osdt_core"
//implementation "com.oracle.database.security:osdt_cert"

 

 

* 이미 있던 oracle11버전은 주석처리

//runtimeOnly 'com.oracle.database.jdbc:ojdbc11'

 

 

 

2. application.properties (원격 설정)

# Cloud Oracle Datasource config
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@만든DB이름_high?TNS_ADMIN=전자지갑경로
spring.datasource.username=admin
spring.datasource.password=설정한비밀번호

 

 

 

* 전자지갑 ZIP파일은 쉬운경로로 압축 미리 풀어준다(위에 경로 적어야함)

 

 

3. 설정 후 서버 켜서  서버 작동 확인

 

 

#서버 충돌 오류 나는 경우

→ cmd창 관리자모드로 열고 중복 포트번호 꺼주기

netstat -an -o
8888 포트 찾아서 점유한 pid 확인
taskkill /f /pid 해당 pid 번호

 

 


FTP 프로그램 (파일 질라)

 

1. 페이지 접속 - 다운로드

https://filezilla-project.org/

 

 

 

 

2. 다운파일 실행  →next 해주다가 이 화면 나오면 Decline (백신프로그램) → 이후 그냥 next, install 해서 설치

 

 

3. 사이트 관리자 - 새 사이트 → 이름 설정 → 호스트 : instance ip 주소

                                                                    사용자 : ubuntu

                                                                    키파일 : 다운받은 key 선택

 

 

(선택 해야할 키파일)

 

 

4. / -> var -> lib ->  tomcat -> webapps → Root :  파일 확인 / 경로 확인

 

5. 전자지갑 올리기

var - lib - tomcat10 - lib 파일 안 → 전자지갑 압축푼 파일 복사

 

# 오류

  lib파일의 퍼미션 그룹 권한(쓰기), 공개 권한(쓰기) 선택되어있지 않음 = 권한 제한

  → 모든 접근 권한 풀어준다(but, ftp 프로그램에서 사진처럼 체크해도 안됨)

 

→ PuTTY 실행해서 입력해서 설정해주기 (다른 설정 할 때 미리 하면 편함)

sudo chmod 777 /var/lib/tomcat10/lib (폴더의 접근 권한 퍼미션 777 설정)

sudo chmod 777 /var/lib/tomcat10/webapps (배포할 톰캣서버의 루트 폴더 접근 권한 퍼미션 777 설정)

 

 

6. 전자지갑 파일 복사해준다 → var - lib - tomcat10 - lib 파일

 

 


STS 설정

 

1. port번호 변경, DB경로 바꿔주기(FTP 프로그램에서 복사한 전자지갑위치)

 

2. root처리 (원하는대로 작명)

 

 

3. bulid.gradle

1. id 'war' 추가

2. war 배포파일명 추가 → archiveBaseName = 'root처리할때 작명한이름'

build.gradle에 배포시 추가내용

plugins {
   id 'java'
   id 'org.springframework.boot' version '3.5.5'
   id 'io.spring.dependency-management' version '1.1.7'
   id 'war' //추가!!
}

bootWar{ //war 배포파일명 추가!!
   archiveBaseName='root작명'
   archiveFileName = 'root작명.war'
   archiveVersion = "0.0.0"
}

 

 

오버라이딩 - source 

 

 

Gradle Tasks - build bootWar  확인 → 새로고침 후 에러없다면  → Run Gradle Tasks

 

 

workspace 폴더 - 해당 프로젝트 폴더 - build - libs → .war파일 생성 확인

 

 

/var/lib/tomcat10/webapps 폴더로 .wat파일  복사(드래그)

+ 새로고침 후 파일 생긴것 확인 

 

 

 

톰캣 서버 재시작(PuTTY)

15. sudo systemctl stop tomcat10 (톰캣 서버 정지)
16. sudo systemctl start tomcat10 (톰캣 서버 재시작)

 

 

웹 브라우저  주소창 - IP주소:8080/root설정이름/question/list 입력 해보기

 

 

# 오류가 난다면?

 

navbar.html 파일 - href 경로 변경 (root에 설정했던 이름)

<a class="navbar-brand" href="/kmii">QA Board</a> 변경

 

 

MainController - root : "/"로 변경

@GetMapping(value="/") // cloud용 root 요청 처리
	public String root() {
		return "redirect:/question/list";
	}

 

 

Gradle Tasks - build bootWar → Run Gradle Tasks

 

 

만들어진 폴더(kmii) 지우기 

→ 안지워지면 PuTTY에서 sudo chmod 777 /var/lib/tomcat10/webapps 입력하고 폴더 삭제 시도

→ war 파일 다시 드래그해서 넣어주기 

 

PuTTY  - 톰캣서버 재시작 


sudo systemctl stop tomcat10 //톰캣 서버 정지
sudo systemctl start tomcat10 //톰캣 서버 재시작

 

다시 실행해 보기

 

 


# 게시판/DB 시간 현재시간과 다르다면

 

Oracle Cloud는 UTF 시간 기준

question_list.html 파일에서 시간 설정 시 +9시간 해준다

<td th:text="${#temporals.format(question.createdate, 'yyyy-MM-dd HH:mm')}">등록일</td>

 

 

하위 폴더 커미션 풀어주고 

 

application파일 하나 백업해놓기

 

sts - application

# 한국 시간대(Asia/Seoul) 설정
spring.jackson.time-zone=Asia/Seoul
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Seoul

 

 

list.html - 등록일 수정

<td th:text="${#temporals.format(question.createdate.atZone(T(java.time.ZoneId).of('UTC'))
                                                .withZoneSameInstant(T(java.time.ZoneId).of('Asia/Seoul')),
                                                'yyyy-MM-dd HH:mm')}">등록일</td>

 

 

 

application 덮어씌우기

 

 

 

방법1)

나머지 날짜 수정한 파일 옮기기

 

 

수정한 파일 개별적으로 메모장/ 프로그램으로 열어서 수정

 

 

수정 완료 하면  다시 덮어씌우기

 

 

방법2)

sts 프로그램에서 일단 수정 한 후

하나씩 다시 덮어 씌우기