[리눅스] - 우분투 내에서 스프링 부트 프로젝트 배포 해보기

yeom yaloo·2024년 1월 10일
0

FISA

목록 보기
39/61
post-thumbnail

빌드

[스프링 부트 프로젝트 빌드]

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
	xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="https://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>3.2.1</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>edu.fisa</groupId>
	<artifactId>step03_probono</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>step03_probono</name>
	<packaging>jar</packaging>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- Model Mapper : DTO와 Entity 호환 API -->
		<dependency>
			<groupId>org.modelmapper</groupId>
			<artifactId>modelmapper</artifactId>
			<version>2.4.0</version>
		</dependency>

		<!-- JSP 사용을 위한 추가 설정 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
		</dependency>

		<dependency>
			<groupId>jakarta.servlet.jsp.jstl</groupId>
			<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
		</dependency>

		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>jakarta.servlet.jsp.jstl</artifactId>
		</dependency>


	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
  • <packaging>jar</packaging>: 빌드 파일을 jar로 지정해줍니다.

1. maven clean

  • 빌드와 관련된 작업을 진행하기 전에는 mvn clean 작업을 진행해주어야 한다.
  • terminal에서 해당 프로젝트 디렉토리로 이동해서 mvn clean package 라는 명령어를 사용해 클린과 빌드 작업을 동시에도 가능하다.

2. maven build package


  • goals에 package를 입력해주면 mvn package와 동일한 효과가 발생한다.

3. maven clean을 대신해서 update

  • 해당 작업을 진행하면 clean이나 update 둘중 하나만 진행해야 한다고 한다.

4. build 성공 시

  • 해당 프로젝트의 실행 파일인 jar 파일이 생성됐음을 볼수 있다.
  • 이를 이용해서 cmd 에서 한번 잘 돌아가는지 확인하자 해당 jar 파일이 있는 위치로 이동한 후에 java -jar jarfilename.jar를 넣어서 잘 실행함을 확인하자

[빌드와 관련된 무결성 보장]

1. 로컬 환경의 데이터베이스를 왜 설정해주나?

  • 위의 경우엔 우분투에 깔아둔 mysql에 연결하는 문장이다.
  • 이 경우엔 직접 우분투에 깔아둔 mysql을 private ip에서 NAT 작업을 진행해 public ip로 만들어 준것을 사용하기 때문에 패스 포워딩에서 3306 포트에 매핑한 8777라는 포트를 사용해 연결해준다.

2. 우분투 환경에서 우분투 mysql을 사용하려면?

  • url: jdbc:mysql://127.0.0.1:3306/fisa?useSSL=false&allowPublicKeyRetrieval=true 3306을 사용해서 jar 파일이 우분투에 올라가서 사용될 때 문제가 없게 해야 한다.
  • 그러나 우리는 이제 jar 파일을 아예 우분투 내에 올려서 우분투 데이터베이스를 사용할 예정이기 때문에 이 작업을 위해서 127.0.0.1:3306으로 매핑되어 있는 mysql을 그냥 사용하면 된다.
  • bindaddress는 0.0.0.0으로 매핑하면 외부접속을 허용해준다. (참고)

[리눅스 서버에 jar 파일 올리기]

1. 리눅스 서버와 WAS의 포트 매핑

  • 이때 스프링 프로젝트에서 설정해둔 서버 포트 값인 8081은 리눅스 내에서 8666으로 매핑해서 사용할 수 있게 한다.

2. jar 파일 리눅스에 올리기

  • 파일질라 smtp 등 여러가지 방법이 있지만 나는 로컬에서 로컬로 옮기는 방법이 있지만 로컬에서 로컬로 옮기니까 그냥 파일을 끌어다 쓰기로 했다.

3. 실행

  • jartest에 넣고 java -jar jarfilename.jar를 리눅스에서 입력하면 다음과 같이 스프링이 서버를 띄워 서비스를 진행한다.
  • 당연하게 해당 포트로 서버에서 접근하면 서버가 잘 동작하는 것을 확인할 수 있다.
profile
즐겁고 괴로운 개발😎

0개의 댓글