[첫번째 war 프로젝트]
옛~~~~날에 했던 첫 프로젝트
Servlet으로 만든 war 프로젝트를 배포해서 포트폴리오에 올리고싶다!!!!
오랜만에 프로젝트를 열어봤다
어...
잘 돌아가나 테스트 하려했는데 저번에 맥북 디렉토리 정리한다고 탐캣 라이브러리를 어디에 숨겨놨더니
탐캣이 고장났다!!!
기억속을 더듬어...
[서버고치기]
일단 서버 윈도우에서 안되는거 삭제
그러고 다시 만들어


삐니시
프로젝트 우클릭 > Properties > Java Build Path > Libraries > Classpath
Server Runtime 요거 안되니까 삭제하고 다시만들어

이거 만드러
됐다
[포트바꾸기]
그리고 이거 포트 바꾸고싶어
뭐야 얘는 application파일 없음
어디서 바꾸나면

나는 시작포트 8084 종료포트 8009로 바꿨음
나중에 안 사실인데 의미없는 행동이었다
서버에있는 탐캣의 server.xml을 바꿔야해씀
암튼 로컬에서 돌릴때 다른포트로 돌리고싶었던거라면 이방법을 사용!
[war 파일 만들기]


익스뽀트해서 삐니시하면 됨
그럼 설정한 경로에 설정한 이름으로 생김
짜잔
[배포]
일단 파일질라로 war파일 서버에 올려
cp /home/cms/admin.war /home/erp/www/tomcat/webapps/
올린곳에서 tomcat/webapp 경로로 옮김
그리고 tomcat사용자 따로둿으면 그거로 chmod, chown해서 사용자랑 권한 바꿔주기 난 erp사용자 755줬다
~/tomcat/conf/server.xml에 포트 확인하고
/etc/nginx/nginx.conf에 내가 올린 프로젝트 메인 uri를 내 도메인에 새로만든 호스트와 연결시켜줌
server {
listen 80;
server_name admin.koona.kr;
location / {
proxy_pass http://localhost:탐캣포트/admin/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
난 이렇게 추가해줬따

잘연결됐당 ㅎㅅㅎ
[두번째 war 프로젝트]
이번에는 Spring으로 만든 war프로젝트다
[mysql 데이터 옮기기]
일단 mysql 데이터가 localhost의 mysql에 있음
이거 먼저 gcp에 옮겨야징
로컬 데이터 백업
./mysqldump -u root -p 디비이름 > /저장경로/백업파일이름.sql

잘 저장됐다 열어봐도 데이터 다 들어있음
GCP 들어가서 mariaDB접속
mysql -u root -p

디비 만들어주기
그리고 사용자도 추가시켜주고 디비 권한주기
use mysql;
create user '사용자'@'localhost' identified by '비번';
insert into db values ('localhost','디비','사용자','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
create user '사용자'@'%' identified by '비번';
insert into db values ('%','디비','사용자','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
y개수는 다다르니 확인해보고 만들기~
⭐️%사용자는 배포후 삭제하기
디비버로 연결해보면 잘된당
mysql -u 사용자아이디 -p 데이터베이스명 < 저장된디렉토리/파일명.sql
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'
언어안맞아서 메모장으로 모두 대치해줌

이제 다시
mysql -u 사용자아이디 -p 데이터베이스명 < 저장된디렉토리/파일명.sql
해주면 백업 완료~!
mysql 사용자나 백업파일 사용자 잘 확인하고 엑세스디나이뜨면 사용자 바꿔서 해보기!

[프로젝트 디비연결 바꿔주기]
데이터베이설정파일.config 파일에서 데이터베이스 연결정보 GCP설정으로 바꿔주기~!
로컬에서 잘 돌아가나 확인
이클립스에서 톰캣 실행 시, 프로젝트 이름이 곧 context path(접두 경로)임
프로젝트명이 miniproject라면 접속 주소는:
http://localhost:8084/miniproject/
ㅎㅎ
하도 안써서 까먹었네
[위에거랑 똑같이 설정]
근데 admin처럼했는데 왜 안되니
도와줘 조녁에몽..
[충격적인 이야기]
탐캣 버전을 잘못사용함
예전에 깔아둔거에 세팅해서 안되는거였다
나는 프로젝트에 8.5.61버전을 사용했는데
귀찮아서 서버에 깔려있는거 그대로 썼는데 그건 10번대였다 끼야아아아아아아악
https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.61/bin/
여기서

이거 링크 복사해서 wget해서 깔아서 쓰자...
이제 진짜 잘된다...
server.xml에서 다시 포트 잡아주고...
깔아뒀던 10번대는 스타트만 안하면 되니까 그대로 둠
쌤피셜 war를 두개 돌릴거라면 똑같이 탐캣을 다른사용자 파일에 풀어서 포트를 바꿔서 돌리라 하심
그리고 선생님은 war파일 이름을 ROOT.war로 바꾼 후 nginx.conf에 root를 따로 잡지않고 프록시 패스에 포트번호까지만 써주셨음
이거랑 똑같이 하나 더 만들면 될듯
[충격적인 이야기2]
두번째 프로젝트에는 FileIO가 있는데 웹디렉토리에 /upload라는 폴더를 만들어서 그안에 파일을 저장하게 해놨음
이 폴더는 ROOT.war이 빌드된 ROOT 디렉토리 안에 그냥 upload라는 디렉토리로 만들어서 해보면 된다~!!!!
try {
if (bfile.getSize() > 0) {
String url = req.getServletContext().getRealPath("/upload/");
System.out.println(url);
file_new = this.sf.rename(bfile.getOriginalFilename());
FileCopyUtils.copy(bfile.getBytes(), new File(url + file_new));
dto.setFile_url("/upload/" + file_new); // 웹디렉토리경로 및 파일명
dto.setFile_new(file_new); // 개발자가 원하는 방식으로 변경한 파일명
dto.setFile_ori(bfile.getOriginalFilename()); // 사용자가 적용한 파일명
int result = this.dao.mdboard_insert(dto); // 파일 insert
msg = "alert('추천분양 정보 게시판 게시물이 추가 되었습니다.');" + "location.href='./md_board.do'";
}else {
msg = "alert('게시물 추가 실패 : file 없음');" + "history.go(-1);";
}
}catch (Exception e) {
msg = "alert('게시물 추가 실패 : fileIO');" + "history.go(-1);";
e.printStackTrace();
}
참고로 이렇게 돼있는 코드였따
그리고 카카오 로그인도 해놨는데 배포한 서버에 맞게 수정하기
플랫폼의 사이트도메인, 리다이렉트URI 모두 수정~!
그런데!!! 올리는거는 됐는데
불러올때 엑박이뜬다
이것은 jsp에서 불러올때 /miniproject/+디비에저장된파일경로
로 불러왔었기때문
그냥 디비에저장된파일경로로 불러오니까 됐다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@page import="java.util.Date"%>
<%Date date = new Date();%>
<%-- 해당 게시물로 이동 --%>
<form id="gvform" method="post" action="./md_board_view.do">
<input type="hidden" name="bidx" value="">
</form>
<section>
<div class="recommend">
<p>
추천분양정보<br> <em>실시간 추천 분양정보를 한곳에!</em>
</p>
<div class="md_estates">
<ul>
<cr:forEach var="mcdata" items="${mcList}">
<a href="#" onclick="goboardview(${mcdata.bidx})">
<li>
<div>
<img src="${mcdata.file_url}">
</div> <span>${mcdata.btitle} </span>
<div>${mcdata.btext}</div>
</li>
</a>
</cr:forEach>
</ul>
</div>
</div>
</section>
<script src="./js/board.js?v=<%=date%>"></script>
mcdata.file_url 로만 설정!!!
이제 진짜 잘된다...

잘뜬다!!!!!
[짜잔]
이제 진짜 둘다 잘됨