MY MEMO

[SERVER] WAR파일 배포하기 본문

STUDYING/OS

[SERVER] WAR파일 배포하기

l_j_yeon 2017. 7. 9. 14:24

올리기 전에 서버 setting한 tomcat 과 jdk 버전을 꼭꼭 확인하자

그리고 tomcat에 jdk가 호환이 되지 않는 경우도 있다...홧팅..


SERVER에 web hosting을 하는 방법은 여러가지이지만 war파일로 배포를 해보려고 한다

war파일은 Spring이며 server에 올리면 자동으로 tomcat이 풀어준다고 한다



요약

1. war파일 만들기

2. centos7 yum으로 install시 /var/lib/tomcat/webapps 안에 war파일을 넣는다.

3. server.xml을 수정해준다.

4. webapps와 onnuri.war의 chmod 777를 실행한다. (굳이 하지 않아도 괜찮음)

5. systemctl restart tomcat으로 재시작하면 war파일이 풀린다



1. 일단 eclipse에서 war파일을 만든다


프로젝트 이름 오른쪽 클릭 -> export -> war file



war파일을 한개 생성해 놓는다



2. ssh에 들어간다 


centos7을 기준 yum으로 설치했을 때 


cd /var/lib/tomcat/webapps로 들어간다

그리고 filezilla를 이용해서 war파일을 옮겨주었다


만약 파일이 permission error로 들어가지 않는다면 권한이 없는 것이다

그렇다면 chmod를 통해 권한을 풀어준다 (root권한을 얻을 수 있다면)

sudo chmod 777 webapps


올려준 후 war파일을 777로 변경시켜준다

sudo chmod 777 파일이름.war



3. server.xml 파일을 변경해준다


cd /etc/tomcat에 들어가면 server.xml 파일이 있다


이 파일의 맨 아랫부분에




host가 보일 것이다

host아래에 context를 추가한다


나는 onnuri.war파일로 풀었기 때문에 위와 같이 webapps/onnuri로 설정해주었다.


(war 파일은 같은 레벨에서 같은 이름으로 풀린다.

ex) onnuri.war을 webapps아래에 풀었으면 webapps아래에 onnuri라는 파일이 생긴다)


4. tomcat을 restart해준다


systemctl restart tomcat


cd /usr/share/tomcat/webapps에 들어가서 war파일로 올린 폴더와 같은 이름의 폴더가 존재하는지 확인한다


만약 풀려있지 않다면!


=> 로그를 확인해야한다


cd /var/log/tomcat 에 들어간다

이건 root권한만이 들어갈 수 있기 때문에 사용자 계정이라면...ㅠㅠ


만약 자신이 root비밀번호를 알고있다면


su

비밀번호 치면


root권한으로 들어가진다 그리고 위와 같이 cd /var/log/tomcat에 들어간다


카탈로그 로그가 있다 이걸 확인해보자


근데 로그가 많을 수도있다 (나같이 많은 오류를 낸 경우..)


tail -n +100 catalina.2017-07-09.log 나같은 경우는 오늘자의 로그이기 때문에 이렇게 catalina가 생성되어있다


가장 최근껄로 열어주자 


tail의 명령어의 의미는 tail은 꼬리 -n은 뒤부터 +100은 100번째 줄까지 파일 내용을 출력한다는 것이다


오류


1. java.lang.IllegalArgumentException: Invalid or unreadable WAR file 


 1) web.xml오류

 2) jre로 설정해줘야하는데 jdk로 설정해줘서 생기는 오류 (eclipse에서)


나는 두가지 다 해당되었다...ㅠㅠ


일단 

 1) web.xml에서 servlet-mapping 부분을 아예 지워주었다 

   (localhost에서도 servlet-mapping 충돌이 일어난다고 해서 지워줬는데.. 사실 잘모른다..ㅎㅎ..)

 2) jdk를 jre로 고쳐주었다


2-1) eclipse의 window -> preferences


2-2) java -> installed jres에 들어가서 jre로 설정해주면 된다



2-3) 그리고 다시 war파일로 만들어 위와 같이 올린다 (기존의 war 파일을 지우고)


2.java.io.IOException: Unable to create the directory


directory를 만들 수없다고 한다 왜?


나에게는 두가지의 문제점이 있었다


 1) webapps의 권한이 풀려있지 않았음 즉 sudo chmod 777 webapps이렇게 바꿔줘야하고


 2) 풀렸는데 충돌이 일어난 경우이다.. (풀린걸 모르고 계속 war파일을 풀리게 했다)

이 두가지를 고쳤더니 web hosting되었다

만약 이 두가지의 오류 이외에도 오류가 발생한다면 log를 확인해보고 구글링을 해보자


Comments