기존 인덱스 페이지에 session값 확인을 시켜놔서 로그인이 안된 상태에선 500 에러가 발생했다.
첫 화면 index 페이지에는 로그인정보가 필요없는 구성으로 만들어 주었다.
/loginOk 에서 session.setAttribute 셋팅해둔 회원아이디(mid)를
session.getAttribute로 id를 받아서 저장해두고
관리자ID로 정한 'admin'과 일치하는지 확인하여 출력하는 if / else 문으로 구분을 해주었다.
헤더를 포함 다른 접근 권한이 들어간 모든 페이지를 같은 방식으로 처리하여
관리자와 일반회원을 구분하여 화면구성을 다르게 출력해 주었다.
생각했던 것과는 다르지만 이렇게 도서관리시스템은 완성되었다
처음에는 대출예약도 가능하게 하고 Password db에 저장시 암호화도 하고
이것저것 하려고 했지만 못하겠고 여기서 급 마무리하고 오라클 클라우드에 올리기로 결정
war파일을 만들기 위해 먼저 'project이름Application.java' 파일에
SpringApplicationBuilder를 상속받게 만들어줘야 한다.
package com.uragil.LMS;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class UragilLMsystem1Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(UragilLMsystem1Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// TODO Auto-generated method stub
return builder.sources(UragilLMsystem1Application.class);
}
}
다음으로는 war file을 만들수 있게 'build.gradle' 을 수정해야 한다.
'war' 들어간 부분과
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
보안관련 implement를 추가하고 리프레시!
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
group = 'com.uragil'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
apply plugin: 'war'
bootWar {
archiveBaseName="prototype"
archiveVersion="0.0.1-SNAPSHOT"
}
repositories {
mavenCentral()
}
bootWar.enabled = false
war.enabled = true
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
// oracleDB 보안관련
implementation 'com.oracle.database.security:oraclepki'
implementation 'com.oracle.database.security:osdt_core'
implementation 'com.oracle.database.security:osdt_cert'
}
tasks.named('test') {
useJUnitPlatform()
}
그러고나면 Gradle Tasks - build 에 bootWar 와 War 가 생겨있는 것을 확인 할 수 있다.
war파일 생성 전에 local에서 사용하던 DB를 외부에서 연결 할 수 있도록 수정해야한다.
먼저 sqldeveloper 에서 DB생성
새DB접속
DB로 사용할 이름을 정하고
사용자이름 admin 비밀번호는 오라클 클라우드에서 디비 생성시 만들어둔거 입력
접속유형을 클라우드 전자지갑으로 바꾸고 저장해둔 Wallet.zip 파일 선택 후 테스트 성공
여기 입력한 정보들이 application.properties 설정할 때 필요하다.
새로만든 텅빈 DB에 기존 로컬에서 사용하던 테이블과 자료를 옮겨준다.
도구 - 데이터베이스 복사 선택하면 아래와 같이 복붙 마법사 실행
소스접속에 데이터를 복사 할 '로컬DB' 선택 대상접속에 데이터를 넣을 '신규DB'선택
단계 3에서 조회버튼을 눌러야 원본DB의 자료들이 보인다.필요한 거 옆으로 옮기고 계속 진행 하면
새로운 DB에 선택된 테이블과 자료들이 들어온 것을 확인 할 수 있다.
DB 생성이 끝났으니 새로운DB연결을 위해 application properties를 수정한다.
기존 내부설정은 주석처리 해주고
profileWebDatabase_high(새 DB접속 만들때 서비스에 나오는 부분)
/var/lib/tomcat9/Wallet_profileWebDatabase(톰캣에 Wallet을 넣어둘 경로)
admin 과 비밀번호 입력
#oracle설정
#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
#spring.datasource.username=scott
#spring.datasource.password=tiger
Oracle설정 외부
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@profileWebDatabase_high?TNS_ADMIN=/var/lib/tomcat9/Wallet_profileWebDatabase
spring.datasource.username=admin
spring.datasource.password=Aaaaa123456789
다시 gradle Tast로 돌아가서 war를 생성한다.
프로젝트 폴더에 build 폴더가 생성되고 그안의 libs에 war 파일이 들어있다
나는 요기 "D:\springboot_workspace\Uragil_LMsystem-1\build\libs"
war파일명이 기니까 필요없는 부분 지우고 프로젝트명만 남겨둬야 편함
인스턴스 생성!!
오라클 클라우드로가서
로그인 >> 인스턴스 컴퓨트 >> 인스턴스 생성으로 이동하여
내 웹페이지가 돌아갈 인스턴스를 만들어 줘야한다.
1. 이름정하기
2. 이미지 Ubuntu로 변경
오라클 리눅스로 기본설정 되어있는 OS를 나는 ubuntu 로 변경
3. SSH키 추가
자동으로 키 쌍 생성에서 전용 키 저장을 눌러 저장해 둔다
자PuTTYGEN 을 실행하여 방금 받아 둔 key를 로드하고 Generate!!
일단 Save private key 를 눌러 잘 저장해 두자 Putty앱을 통한 ssh 접속할때 사용된다.
그리고 모자이크 된 부분을 복사하여
다시 오라클 클라우드로 돌아가
공용 키 붙여넣기의 SSH 키 입력창에 붙여넣는다
그리고 생성!! 실행중인 인스턴스를 확인할 수 있고
인스턴스 이름을 누르고 들어가면 세부 내용들을 확인할수 있고 할당된 공용 IP 주소를 확인 할 수 있다.
추가로 서브넷 보안 셋팅이 있었는데 나는 지난 번 만들어둔 서브넷을 그대로 사용하여 패스
어떻게 만들었는지 기억도 안났는데 다행이다.
그럼 오라클 클라우드에서 할일은 끝 IP주소만 잘 복사해 두자
이제 SSH클라이언트 접속을 위해 PuTTY 앱을 열어 Host Name 입력란에
'ubuntu@복사해둔 IP주소'로 적어준다.
좌측 카테고리의 SSH-Auth로 들어가
Browse를 눌러 위에서 저장해둔 private key를 넣어주고 Open!!
Ubuntu 화면에 성공적으로 진입!!
- sudo apt update /업데이트
- sudo apt install default-jdk / 기본 JDK 설치
- sudo apt install tomcat9 / 톰캣9 설치, Y/n 나오면 Y
- sudo systemctl status tomcat9 / 톰캣이 돌아가는지 확인, Active : active(running) 이면 돌아가는중
- sudo curl localhost:8080 / 톰캣의 기본화면을 소스로 출력함
- sudo apt install ufw / 방화벽 설정을 하기 위한 설치
- sudo ufw allow 8080/tcp // 8080포트 허용
- sudo ufw allow 80/tcp // 80포트 허용
- sudo apt install net-tools // 포트 확인을 위한 툴 설치
- sudo netstat -atn // 8080 port를 잘 LISTEN 중 인지 확인
- sudo iptables -F // iptables 초기화
- sudo timedatectl set-timezone Asia/Seoul // 우분투 timezone을 아시아/서울로 변경
- sudo service tomcat9 stop // 서버정지
- sudo service tomcat9 start // 서버시작
- sudo chmod -R 777 /var/lib/tomcat9/ //모든권한 퍼미션 설정 (WAR파일 올릴 때 권한 설정 필요함)
이러면 ubuntu에서의 설정은 끝났지만 war파일 올린 이후에
같은 명령어로 다시 한 번 퍼미션을 줘야한다.
filezilla에가서 파일 - 사이트관리자로 이동 new site를 만들어주고
프로토콜은 SFTP로 변경 호스트에는 오라클 인스턴스 생성후 받은 IP 입력
로그온 유형을 키파일로 해주고 사용자는 ubuntu
키파일은 저장해둔 privit key인 ppk파일이 다시 사용된다.
연결에 성공하면 리모트 사이트 폴더들이 보인다.
var/lib/tomcat9으로 이동하여 압축을 풀어둔 wallet 폴더부터 넣어주고
var/lib/tomcat9/webapps 에 war파일을 올려주고 톰캣이 알아서 압축 풀어 준다.
새로올라간 파일은 권한이 제한되어 있으니
이때 Putty 에서 sudo chmod -R 777 /var/lib/tomcat9/ 명령어로 퍼미션 설정 다시 해줘야 한다.
간김에 tomcat 서버도 stop/ start 로 재시작 해주면 작업 끝
오라클인스턴스로 부터 생성된 IP주소와 : 포트번호
http://146.56.173.53:8080/ 을 주소창에 치고 이상이 없다면
작동되고 있다는 아래 페이지가 뜬다.
이제 war파일이름을 뒤에 붙여주면 내가 만들어둔 페이지에 접속이 된다.
디자인은 에러난 것이 아니라 최선을 다했지만 못하는겁니다
http://146.56.173.53:8080/uragilLMS/
이렇게 도서관리시스템 프로젝트 ver.1.0은 끝.
작업하면서 오류가 어마어마 했는데
private key 저장을 안하고 만들어서 생성한 인스턴스 종료시키고 다시 만들고
war파일 만들기전에 상속 안하고 만들어서 접속이 안되기도 했고
DB설정 안해줘서 접속은 되는데 로그인하려면 에러나기도 하고
생각보다 낯선 환경이라 부분적인 메모와 과거 작업 참고하기가 어려웠다.
오라클 크라우드에서 실수로 인스턴스 정지 눌러서 다시 시작했더니
갑자기 웹페이지 접속이 안되었다.
이때는 putty로 ssh 들어가 iptables -F 초기화 해주면 제대로 돌아간다.
블로그 작성하다 지쳐 급마무리
이래서 왕좌의게임이 급마무리 한건가 이해되는 부분
'STUDY > Spring boot' 카테고리의 다른 글
다중 datasource 사용 (0) | 2025.04.23 |
---|---|
프로젝트 로컬서버에 외부에서 접속하기(IPTIME 공유기 환경) (2) | 2022.08.10 |
Spring Boot로 만드는 도서관리시스템웹 프로젝트_05 (0) | 2022.06.29 |
Spring Boot로 만드는 도서관리시스템웹 프로젝트_04 (6) | 2022.06.27 |
Spring Boot로 만드는 도서관리시스템웹 프로젝트_03 (0) | 2022.06.22 |