1) war 패키징
- pom.xml
spring pom.xml에 war 패키징하기 위해서 아래와 같이 추가해준다.
<modelVersion>4.0.0</modelVersion> … <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 이런 에러가 뜨는데, 자바 버전이 안 맞아서 뜰 확률이 높다고 한다.
Java를 1.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 |
댓글