본문 바로가기
JAVA/spring

spring war Deployment

by 개폰지밥 2019. 9. 18.
반응형

1)  war 패키징

- pom.xml

spring pom.xml에 war 패키징하기 위해서 아래와 같이 추가해준다.

<modelVersion>4.0.0</modelVersion>
<groupId>
net.glaso</groupId>
<artifactId>
ca</artifactId>
<name>
CATester</name>
<packaging>
war</packaging>
<version>
1.0.0-BUILD-SNAPSHOT</version>

<build>
   <plugins>
      <plugin>
         <artifactId>
maven-eclipse-plugin</artifactId>
         <version>
2.9</version>
         <configuration>
            <additionalProjectnatures>
               <projectnature>
org.springframework.ide.eclipse.core.springnature</projectnature>
            </additionalProjectnatures>
            <additionalBuildcommands>
               <buildcommand>
org.springframework.ide.eclipse.core.springbuilder</buildcommand>
            </additionalBuildcommands>
            <downloadSources>
true</downloadSources>
            <downloadJavadocs>
true</downloadJavadocs>
         </configuration>
      </plugin>

      <plugin>
         <groupId>
org.apache.maven.plugins</groupId>
         <artifactId>
maven-compiler-plugin</artifactId>
         <version>
2.5.1</version>
         <configuration>
            <source>
1.8</source>
            <target>
1.8</target>
            <compilerArgument>
-Xlint:all</compilerArgument>
            <showWarnings>
true</showWarnings>
            <showDeprecation>
true</showDeprecation>
         </configuration>
      </plugin>

      <plugin>
         <groupId>
org.codehaus.mojo</groupId>
         <artifactId>
exec-maven-plugin</artifactId>
         <version>
1.2.1</version>
         <configuration>
            <mainClass>
org.test.int1.Main</mainClass>
         </configuration>
      </plugin>
   </plugins>
</build>

maven -> package 하면 3번과 같이 pakage된 .war 파일의 위치를 알려준다. 알려준 위치로 이동하면 war 파일이 있는 것을 확인할 수 있다.

 war 파일을 tomcat의 webapps에 옮겨준다.

톰캣(tomcat) - root 폴더 변경 방법

톰캣(tomcat) - root 폴더 변경 방법을 변경하기 위해서는 context.xml과 server.xml을 수정해줘야 하는데 수정하기 전에 미리 백업을 하자.

2) server.xml 변경

-  vi server.xml

Webapp 자체를 웹 루트 디렉토리로 만들고 싶을 때 <Host name … 아래에 <Context path=””…를 추가한다.

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true" >

<Context path="" docBase="." reloadable="true"></context>

 

3)     context.xml 변경

-  vi context.xml

/src/main/webapp/META-INF/context.xml과 /home/xotmfrlox/apache-tomcat-8.5.43/conf/context.xml을 맞춰준다.

사람마다 context.xml이 있는 위치는 다를 수 있다. 자신의 project structure를 확인하자. tomcat context descriptor가 없다면 add application server specific descriptor로 추가해줘야한다. --intellij 기준

또한 context.xml에 맞는 db,  스키마, user 생성과 grant 등 기본적인것은 미리 되어있어야 한다.

나와 같은 경우는 아래와 같이 미리 생성했다.

-  DB:toy

-  스키마:minica

-  User:camanager

- password:비밀임

생성하고 난 후 db를 한번 재시작한다. 혹은 commit해도 됨.

table까지 완성 된 결과

postgresql 기준으로 재시작하는 방법은 아래와 같다. restart 대신에 start와 stop을 넣어줘도 된다.

./pg_ctl restart -D /home/xotmfrlox/pgsql/data

끝에 -m fast를 넣어달라길래 -m fast를 넣어줬다.

tomcat의 context.xml의 예시는 아래와 같다. 빨간글씨는 본인의 환경의 맞게 바꿔준다.

<Resource auth="Container"

                          defaultAutoCommit="true"

                          driverClassName="org.postgresql.Driver"

                          factory="org.apache.commons.dbcp.BasicDataSourceFactory"

                          initialSize="1"

                          maxActive="70"

                          minIdle="0"

                          maxIdle="50"

                          removeAbandoned="true"

                          removeAbandonedTimeout="90"

                          logAbandoned="true"

                          testWhileIdle = "true"

                          name="jdbc/miniCaPostgres"

                          username="username"

                          password="password"

                          type="javax.sql.DataSource"

                          url="jdbc:postgresql://11.11.11.1111/111?currentSchema=11111"

                          validationQuery="select 1" />

 </Context>

 설정 후 tomcat 재시작을 해줘야하는데

tomcat bin으로 이동해서 ./shutdown.sh와 ./startup.sh를 해주면 되는데 아래와 같은 에러가 뜬다.

JAVA_HOME과 JRE_HOME을 못찾아서 생기는 에러 같아서 echo로 출력해보니 역시 찾지를 못한다.

JAVA_HOME과 JRE_HOME을 설정해주는 방법은 2가지인데. 영구적으로 바꾸고 싶은 경우 /etc/profile을 바꾸면 되는데 난 서버에 권한이 없어서 1회성을 바꾸려고 한다.

jdk과 jre가 설치되어있는 위치를 찾는다.

export JAVA_HOME=/usr/local/java/jdk...생략

export JRE_HOME=/usr/local/java/jre... 생략

다시 ./shutdown.sh로 톰캣을 종료하려니까 위와 같은 에러가 발생했다.

에러를 보아하니 server.xml의 context가 </context>로 종료안되어서 발생한 에러이다.

에러해결 끝

최종적으로 리눅스 톰캣 서버에 war 패키징한 것을 올려 위와 같은 화면을 띄울 수 있다. 

에러

Localhost:8080에서는 뜨는데 다른ip주소:8080에서는 뜨지 않는다.

local에서 불러오는게 아니라 다른 ip 주소에 있는…/apache-tomcat-8.5.43/webapps/ca-1.0.0.0-BUILD-SNAPSHOT에서 불러오고 싶다.

…/conf/server.xml 설정을 해도 계속 not found라고 뜸

 

<Context path=”” docBase=”.” reloadable=”true”/>를 추가하면 된다고 하는데 되지 않았다.

/home/xotmfrlox/apache-tomcat-8.5.43/logs/catalina.out

실행을 시키고 tail -f catalina.out을 하면 실시간으로 아래 있는 에러를 띄어 줘서 확인 하기쉽다.

에러 로그를 살펴보니 Major.minor version 52.0 이런 에러가 뜨는데, 자바 버전이 안 맞아서 뜰 확률이 높다고 한다.

Java1.7로 했는데 최소 자바 버전이 1.8 이상이 되어야 했었다.

그래서 vi .bash_profile에 아래와 같이 jdk1.8이상으로 다시 export 해줬다.

export JAVA_HOME=/usr/local/java/jdk1.8.0_60

export PATH=$PATH:/usr/local/java/jdk1.8.0_60/bin

export는 본인이 jdk 있는 곳을 걸어주세요!

혹시 major.minor version 52.0 이런 에러가 뜬다면 톰캣 자바 버전등을 다시한번 확인해보시는 것도 도움이 될 것 같다!

반응형

'JAVA > spring' 카테고리의 다른 글

Web programming  (0) 2020.01.03
Web Applications  (0) 2020.01.02
github sts(eclipse)  (0) 2019.09.11
intellij META-INF context.xml?  (1) 2019.09.10
[Postgresql] JNDI 설정  (0) 2019.09.04

댓글