PROJECT #12 - 배포

김형우·2022년 4월 25일
0

New Project

목록 보기
12/12
  1. 애플리케이션 배포를 위한 리눅스 환경을 아래와 같이 설정하시오.
  • docker 관련 프로그램 설치 및 사용 권한 부여
  • docker 컨테이너를 이용하여 DB설치
  • java 설치 및 환경변수 등록
  1. WAS(Web Application Server) tomcat을 설치하시오.
  • tomcat9 설치
  • tomcat9 서버 구조 확인
  • h2 DB를 저장을 위한 폴더 생성 ( /var/lib/tomcat9/webapps/h2 )
  • firewall 방화벽 설정 ( 기본포트 8080 열기 )
  1. 프로젝트 소스를 검증하고, Maven build를 이용하여 package하시오.
  • 패키지 환경 구성
  • h2 DB 위치 설정
  • war 패키징 수행
  • war파일 생성 확인 및 context 설정
  1. 빌드 된 war 파일을 Web Application Server로 배포하시오.
  • war 파일 업로드
  • webapps 폴더에 자동 압축해제 확인
  1. 배포한 애플리케이션의 동작 유무를 확인하시오.
  • 크롬을 이용한 웹페이지 접속 확인

====================================================

-- virtualbox (2개 파일)
https://www.virtualbox.org/wiki/Downloads

-- 우분투 iso파일 준비 (1개 파일)
https://releases.ubuntu.com/bionic/ubuntu-18.04.6-desktop-amd64.iso

무료 OS인 우분투 사용
ubuntu 18.0.4~6

AWS도 우분투 사용 가능

-- 원격접속 프로그램
https://mobaxterm.mobatek.net/download.html

-- 우분투 iso 설치
user1
1234

-- 서버주소 확인 프로그램 설치
-- ctrl + alt + t 터미널 열고

  • sudo apt install net-tools -y
  • sudo apt update -y
  • ifconfig

-- 원격접속 프로그램 설치
sudo apt install openssh-server -y

-- 원격접속 프로그램 구동(오류가 없으면 표시되는 내용 없음)
-- 아무것도 표시되는 내용이 없으면 성공한것!
sudo service ssh start

-- 포트 활성화
sudo ufw enable

-- 포트 열기
sudo ufw allow 22

-- 열린포트 확인하기
sudo ufw status

아마존 서버 등은 여기까지 작업해줌, 우분투는 전원만 켜 두면 됨
우분투는 물리적으로 멀리 있다고 생각하고 사용하면 됨

  • 정리 (돈주고 구매하면 알려주는 정보)
    • 서버주소 : 10.0.2.15
    • ssh외부접속 : 22
    • 사용자 : user01
    • 암호 : 1234

원격접속

-- 원격접속 프로그램
https://mobaxterm.mobatek.net/download.html

또는
putty.org

Session -> SSH -> 127.0.0.1, 12222 -> user01 -> 1234

-> sudo reboot


1. java 설치

-- 자바설치
sudo apt install openjdk-11-jdk -y

-- 자바설치 확인
java -version
설치 위치는 => /usr/lib/jvm/java-11-openjdk-amd64

-- 편집기를 이용해서 환경변수 등록
nano ~/.bashrc

-- 마지막에 추가하기 2줄
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
-- 어떤 폴더든 가능하게 path를 잡아줌
export PATH=PATH:PATH:JAVA_HOME/bin

-- 2줄 추가 후 ctrl + s 눌러서 저장하고 ctrl + x로 종료

-- 환경변수 적용
source ~/.bashrc


2. tomcat 설치

-- 톰캣설치
sudo apt install tomcat9 -y

-- 8080 포트 열기
sudo ufw allow 8080

-- 방화벽 확인
sudo ufw status

-- 톰캣 구동
sudo service tomcat9 start
-- 정지
sudo service tomcat9 stop
-- 재시작
sudo service tomcat9 restart

-- 크롬에서 확인
127.0.0.1:18080 입력하면 우분투의 10.0.2.15:8080이 호출됨


ubuntu1
-- 재시작
sudo reboot

-- 전원 끄기
sudo shutdown now


3. 배포

application.properties 안의 내용은 배포할때는 의미가 없음

  1. 우분투 가상드라이브 실행

  2. MobaXterm 실행 접속

  3. 크롬에서 http://127.0.0.1:18080/ 접속

  1. MobaXterm
    4-1. pwd => 현재 폴더 위치 확인
    : /home/user01
    4-2. cd /var/lib/tomcat9 => 폴더 이동
    4-3. ls => 파일목록 확인
    : conf(환경설정) lib logs(서버구동오류기록) policy webapps(배포위치) work
    4-4. 배포위치로 이동
    : cd webapps

  2. 빌드 할 위치

  3. vscode
    6-1. pom.xml
    6-2. application.properties
    6-3. Maven -> LifeCycle -> package

    6-4. 결과
    : war 파일명이 contextpath임 파일명 TEST로 바꿈

  4. war 파일 이동!

  5. MobaXterm
    : user01 사용자에게 폴더 사용 권한 부여
    : sudo chown -R user01 /var/lib/tomcat9/webapps
    8-1. user01을 tomcat 그룹에 추가하기
    : sudo usermod -aG tomcat user01
    8-2. 그룹추가후 적용하기 위해 재부팅
    : sudo reboot

  6. Chrome
    : 127.0.0.1:18080/TEST

1. pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.7</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>boot_deploy</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>boot_deploy</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	
	<!-- 1. 배포용 패키징 -->
	<packaging>war</packaging>

	<!-- 개발용 디펜던시였던거임!!! -->
	<dependencies>

		<!-- 2. 배포용 디펜던시! -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>

		<!-- tomcat (개발용 웹 서버) -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

		<!-- web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- devtools -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

		<!-- lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
	
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2. apllication.properties

  • h2-DB 경로를 서버상의 경로와 일치시킨다.

# 개발용 포트 번호
server.port=9090

# 프로젝트, 배포하는 파일명
server.servlet.context-path=/ROOT

# 소스코드 자동감지 후 재시작
spring.devtools.livereload.enabled=true

# h2 db (개발용 DB)
spring.datasource.driver-class-name=org.h2.Driver
# 배포시 저장 될 폴더의 위치를 변경
spring.datasource.url=jdbc:h2:file:/var/lib/tomcat9/webapps/h2/db01;Mode=Oracle;
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
profile
The best

0개의 댓글