티스토리 뷰

SpringBoot 프로젝트를 war 파일로 만들어 리눅스서버에 Tomcat 을 이용해 배포하는 방법에 대해 간략하게 알아보겠습니다. IntelliJ + gradle 기준으로 작성되었습니다.


1. build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.6.15'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'war'
}

apply plugin: 'war'
bootWar {
    archiveBaseName = '-'
    archiveFileName = 'MyApp.war'
    archiveVersion = "1.0.0"
}

group = 'com.myapp'
version = '1.0.0'
  • 원하는 war 파일명과 version 을 지정해줍니다.

 

2. war 파일 만들기

  • Tasks > build > buildWar 를 누르면 프로젝트의 "build > libs" 경로에 war 파일이 생겼습니다.

 

3. war 파일 이동

  • 리눅스에 설치된 tomcat 경로로 이동후, webapps 폴더에 war 파일을 업로드 합니다.

 

4. server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server port="1005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="1121" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="1443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" maxPostSize="-1" maxParameterCount="-1" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

	  <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
			
		<Context path="/" docBase="/home/tomcat/webapps/MyApp" reloadable="true" />

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>
  • Context Root Path 를 war 파일이 있는 곳으로 맵핑합니다. 



5. 시작/종료 스크립트

# start.sh
export JAVA_HOME="/home/tools/openjdk-8u342-b07"
export JRE_HOME="/home/tools/openjdk-8u342-b07"
export CATALINA_BASE=/home/tomcat
export JAVA_OPTS="-Djava.awt.headless=true -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -Dspring.profiles.active=dev"
cd $CATALINA_BASE/bin
./startup.sh


# stop.sh
export CATALINA_BASE=/home/tomcat
cd $CATALINA_BASE/bin
./shutdown.sh
  • -Dspring.profiles.active=dev 옵션을 통해 프로필 설정도 가능합니다.

 

감사합니다.

최근에 올라온 글
Total
Today
Yesterday