본문 바로가기

오라클 클라우드

완전무료서버셋팅5) Tomcat 배포, HTTPS, SSL, Oracle Wallet [Oracle Cloud Always Free, Tomcat, Nginx, Linux, Ubuntu, Oracle, Java, SSL, Cloudflare, iptables]

반응형

2021.06.25 - [오라클 클라우드] - 완전무료서버셋팅3) 오라클 DB 만들기 [Oracle Cloud Always Free, ATP, 오라클, Oracle]

 

완전무료서버셋팅3) 오라클 DB 만들기 [Oracle Cloud Always Free, ATP, 오라클, Oracle]

이전 글에서 Oracle Cloud에서 인스턴스(가상 컴퓨터)만드는 것에 대해 포스팅을 해 보았는데, 웹 프로젝트에 데이터베이스가 빠지면 서운하니 이어서 ATP생성에 대해 포스팅해보려고 한다. 이미 테

gaebalsaebal-developer.tistory.com

오라클 DB만드는 방법은 위 포스팅 참고바람


이전 포스팅에서 Nginx와 Tomcat을 깔았으니 이번엔 그 Tomcat을 이용해 프로젝트를 배포해보려고 한다.

하지만 99.5%의 웹프로젝트는 분명 DB가 필요할테지.. 그러니 로컬프로젝트도 오라클 DB를 연결하고 Ubuntu에 Oracle Wallet을 옮겨서 서버에서도 오라클 DB에 접근가능하도록 세팅해보려고 한다.

아니.. 오라클월렛 프로젝트에서 어떻게 설정하는지 검색해도 잘 안나와.. 난 양아치니까 이거보고 많이들 들어와라! oracle wallet database, oracle wallet datasourcec, oracle wallet spring boot, oracle wallet gradle, oracle wallet java, oracle wallet db연결, 오라클 월렛 db연결, 오라클 월렛 프로젝트 세팅, 오라클 전자지갑 세팅, 오라클 전자지갑 자바, 오라클 전자지갑 그래들, 오라클 전자지갑 상대경로, oracale wallet 상대경로

네 죄송합니다. 암튼 ssl 인증서를 이용해 https로도 연결할건데, 본인은 Cloudflare를 사용하기 때문에 여기서 ssl 인증서를 다운받아 사용할 예정이다.

웹에 https가 빠지면 서운하지, 암! 아암!


1. Oracle Wallet 다운로드

완전무료서버셋팅3에서 생성했던 ATP의 상세화면에서 DB 접속버튼을 누르면 전자지갑을 다운로드할 수 있고, 전자 지갑 유형은 변경할 필요 없다.
전자 지갑에 대한 비밀번호이니, 생성 후 어디엔가 적어놓자. 근데 본인은 까먹어서 망했음 앞으로 필요하지 않기만을 바랄뿐..
다운로드가 완료되어 압축파일을 미리 풀어줬다. 그리고 이 폴더와 알집파일이 있는 경로를 기억해두자.

그리고 압축풀기한 폴더를 Ubuntu 서버에도 올려준다. 편한 곳에 올리면 되는데 본인은 /home/ubuntu에 올려두겠다.

그냥 드래그하면 업로드되는게 너무 좋아! 파일질라같은거 안 써도 돼서 애정한다. 너 이 뇨속 사랑해

2. SQL Developer

이제 데이터베이스를 생성해야하니 SQL Developer를 설치해준다.

https://www.oracle.com/tools/downloads/sqldev-downloads.html

본인은 JDK가 이미 있어서 두번째를 다운받았으나, 각자 개인의 환경에 맞춰 다운로드하면 된다.

 

압축을 풀고 sqldevloper를 실행한다.


출처: https://www.oracle.com/database/technologies/datawarehouse-bigdata/adb-faqs.html

ADB라고 적혀있긴 한데 ATP도 똑같이 다섯종류이기 때문에 가져왔다. 대충 high나 medium으로 연결하면 쿼리가 자동으로 병렬처리 된다는 것 같은데... 이래서 개발자는 영어를 잘해야 하는 것인가.. 난 영어를 못하니까 그냥 무난하게 medium으로 연결해보겠다.

도대체 이 다섯개가 뭐길래! 한다면 Oracle Wallet압축파일내에 tnsnames.ora 라는 파일을 메모장으로 열어보시길

사용자 이름은 admin으로 고정이고 비밀번호는 DB를 생성할 때 관리자 인증서 생성란에서 만들었던 비밀번호를 입력하면 된다.

접속 유형 셀렉트박스에서 클라우드 전자 지갑을 선택하고, 찾아보기를 누른 뒤 Oracle Wallet 압축파일을 선택하고 서비스 셀렉트박스에서 원하는 서비스를 선택하면 되는데 본인은 위에서 말했듯 medium으로 선택했다.


이전 글에서 사용자 이름과 비밀번호를 만들었던 부분이다. 참고하여 이 부분에 입력했던 비밀번호를 입력한다.


데이터베이스를 만드는 방법까지는 작성하지 않아도 될 것 같아서 생략함.


 

 

 

3. 프로젝트 datasource 수정

참고로 본인은 Java + Spring Boot + Gradle + JPA 프로젝트임.

application.yaml

spring:
  datasource:
    #localhost (로컬호스트에서 작업할 때 사용)
    url: jdbc:oracle:thin:@[tnsname]?TNS_ADMIN=[월렛 폴더 경로]
    #server (서버에 올린 프로젝트에서 사용)
    #url: jdbc:oracle:thin:@[tnsnames]?TNS_ADMIN=[Ubuntu 월렛 폴더 경로]
    username: admin
    password: [비밀번호]
    driver-class-name: oracle.jdbc.OracleDriver

tnsname

 > 월렛 폴더 내의 tnsnames.ora 파일을 열었을 때 아래와 같이 다섯 개의 서비스명이 있는데 이 중에 선택하면 된다.

월렛 폴더 경로

 > 다운받은 월렛 압축파일을 압축해제한 폴더의 경로 ex) E:\\example\\example\\Wallet_[DB명]

 > 만약 로컬프로젝트안에 넣어놓고 사용하고 싶다면 ./ 부터 시작하여 입력하면 된다. ex) ./src/resources/Wallet_[DB명]

Ubuntu 월렛 폴더 경로

 > 서버에 업로드한 월렛 폴더의 경로 ex) home/ubuntu/Wallet_[DB명]

 

이후 프로젝트를 실행해서 DB에 잘 연결되는 지 확인 후, 잘 연결된다면 localhost의 url을 주석처리하고 server의 url의 주석을 해제한다.

4. war 추출하기

bootWar 태스크로 war파일을 추출한다.

본인은 프로젝트 기준 /build/libs 안에 war파일이 생성된다. 이것도 마찬가지로 서버에 업로드해둔다.

5. SSL 적용

*.crt, *.key 파일을 가지고 있다는 전제하에 포스팅할 것이기 때문에, 그 외의 인증서를 가지고 있을 경우에는 미리 구글링을 통해 변환해주길 바람.

Cloudflare를 사용하는 경우에는 이처럼 따라하면 된다. 뭐? 그래 나 Cloudflare 편애한다! 왜! 나머진 알아서해!

변경없이 그냥 바로 생성 누르기
각각 메모장에 옮겨붙여 저장할 때, 원본 인증서는 *.crt파일로, 개인 키는 *.key파일로 저장하기
그냥 저렇게 저장하면 됨


인증서가 준비되었다면, 서버의 편한 곳 아무데나 업로드하면 된다. 본인은 /home/ubuntu/ssl 에 업로드했다.

sudo -i //루트계정
cd /etc/nginx/conf.d	//nginx 설정파일폴더로 이동
cp default.conf default.back	//백업파일생성
rm -rf default.conf	//원본파일삭제
vi default.conf	//default.conf 파일생성

그러면 빈 파일이 생성되어 열렸을텐데 아래와 같이 채워넣는다.

server {
        listen 80;
        server_name [도메인주소]; #ex)example.com
        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name [도메인주소]; #ex)example.com
        server_name_in_redirect off;
        proxy_set_header Host $host:$server_port;

        ssl_certificate [경로]/[인증서이름].crt; #ex) /home/ubuntu/ssl/example.crt
        ssl_certificate_key [경로]/[키이름].key; #ex) /home/ubuntu/ssl/example.key

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://localhost:8080;
        }
}
service nginx retsart	//nginx 재시작
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT	//443 포트개방
netfilter-persistent save
netfilter-persistent restart
service iptables restart

이후 http://도메인으로 접속하면 https로 redirect해주고 https://도메인은 정상접속이 되는 것을 확인할 수 있다.

* 톰캣이 켜져 있지 않으면 service tomcat9 start 로 시작시켜줘야함!

 

 

6. Tomcat에 war 배포

cd /var/lib/tomcat9/webapps	//톰캣 webapps로 이동
rm -rf ROOT	//ROOT폴더 삭제 (톰캣 샘플페이지)
cp [경로]/[프로젝트명].war ROOT.war	//ex) /home/ubuntu/example-0.0.1-SNAPSHOT.war ROOT.war
service tomcat9 restart

이후 프로젝트가 올라갈때까지 기다렸다가 도메인으로 접속하면 내 프로젝트가 나온다.

 

+) /var/lib/tomcat9/logs 에서 tail -f catalina.오늘날짜.log 를 하게되면 로컬프로젝트처럼 로그를 볼 수 있다. 그만보고 싶을땐 Ctrl + C 를 누르면 된다.


이렇게 SSL 까지 마쳐보았는데, 아직까지는 정확한 예정은 없지만 앞으로 폼에서 이미지등록을 하기 위한 이미지서버를 구축하는 등의 작업도 간간히 포스팅해보려고 한다.

본인은 공부해가며 포스팅을 해서 완벽하지 않고 틀린 부분이 많을 수 있지만 이 또한 미래의 나에게도 공부가 될 것이라고 생각해 꾸역꾸역 작성해봤다.

 

완전 무료로 서버를 올려보자 시리즈 임시마침(?)

 

 

 

읽어주셔서 감사합니다.

 

이전글

2021.07.12 - [오라클 클라우드] - 완전무료서버셋팅4) Tomcat, Nginx 설치 및 도메인 연결 [Oracle Cloud Always Free, Tomcat, Nginx, Linux, Ubuntu, iptables]

 

완전무료서버셋팅4) Tomcat, Nginx 설치 및 도메인 연결 [Oracle Cloud Always Free, Tomcat, Nginx, Linux, Ubuntu, i

2021.06.23 - [오라클 클라우드] - 완전무료서버셋팅2) 인스턴스 원격 접속 [Oracle Cloud Always Free, SSH, 인스턴스, 가상 컴퓨터] 완전무료서버셋팅2) 인스턴스 원격 접속 [Oracle Cloud Always Free, SSH, 인..

gaebalsaebal-developer.tistory.com

 

다음글

미예정