Servlet, Spring (war) + 배포 + GCP

2025. 6. 21. 19:57·서버

[첫번째 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 로만 설정!!!

이제 진짜 잘된다...

 

잘뜬다!!!!!

[짜잔]

이제 진짜 둘다 잘됨

http://admin.koona.kr/

http://realty.koona.kr/index.do

저작자표시 비영리 변경금지 (새창열림)
'서버' 카테고리의 다른 글
  • GCP 처음~끝
  • 카카오 지도 api
  • GCP + https 적용하기
  • Mongo + express + cors + GCP
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (24)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      io_dto
      noticewriteok
      net2
      re2
      net1
      exam1_1~10
      spring-boot
      file25_t
      net5~10
      net3
      ab1
      re_java10
      file24
      Oracle
      datalist
      net4
      java_io1~10
      file25
      macbook pro m4
      notice_writer
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    Servlet, Spring (war) + 배포 + GCP
    상단으로

    티스토리툴바