본문 바로가기
기록/Linux

[Linux/CentOS/Tomcat] 리눅스 톰캣 설치 & WAR 파일 서버 구동 화면 띄우기

by 자임 2022. 6. 17.

 

목표 :

1.리눅스에 톰캣 설치 및 구동

2.이클립스 프로젝트를 WAR 파일로 Export 해서 리눅스에서 실행


 

 

0) 자바, 디비 등은 이미 설치되어 있는 상태라, 톰캣만 설치 진행

 

 

 

1) 리눅스에 톰캣 설치 및 구동

 

1. 원하는 톰캣 버젼 찾아서 다운로드 링크 복사 

* 톰캣 모든 버젼 다운받을 수 있는 경로 : archive.apache.org/dist/tomcat/

 

톰캣 8.5.78 버젼을 사용했기 때문에 해당 bin 폴더로 가서 tar.gz 파일의 다운로드 링크를 복사했다.

 

 

2. 리눅스에서 톰캣 압축파일 다운로드

 

2-1. 다운로드 받고 싶은 경로로 이동

 

2-2. 다운로드 (root 권한으로 다운로드 해야 한다)

wget -c http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz

 

3. 압축 해제

tar -zxvf apache-tomcat-8.5.78.tar.gz

 

4. 디렉터리 이름 변경

mv apache-tomcat-8.5.78.tar.gz tomcat

 

5. 권한 부여

* tomcat 구동할 때 root가 아닌 tomcat으로 구동하기 위해서는 권한 부여가 필요하다. (이것 때문에 엄청난 삽질했었음..)

 

5-1. tomcat 설치 폴더로 이동

5-2. ll 명령어로 권한 확인 (설치한 이후에는 root root 라고 나와있을 거다)

5-3. 하위 디렉터리까지 전부 tomcat 권한 부여 

chown -R tomcat.tomcat tomcat

*톰캣 권한으로 어딘가 접근하려 했을 때 허가 거부가 난다면 권한 설정이 안 되어 있다는 뜻이다. 

 

 

6. 환경변수 설정

6-1. etc/profile 경로로 이동한 뒤 패스에 CATALINA_HOME 추가
6-2. source /etc/profile 명령어로 수정한 설정을 적용해준다.
* etc/profile 설정 파일은 재부팅 시 반영된다. 바로 반영하기 위해서 source /etc/profile 사용하는 것

 

 

7. 설치 확인

tomcat/bin ./startup.sh (톰캣 구동)

* http://IP주소:8080 접속해서 고양이 나오면 톰캣 설치는 성공했다는 뜻이다.

* 톰캣 구동 멈추기 ./shutdown.sh

 

 

 

 

설치 참고 : 

https://it-serial.tistory.com/entry/Linux-Apache-Tomcat-JSP-OracleDB-%EC%84%A4%EC%B9%98%EC%97%B0%EB%8F%99-%E2%91%A1

 

[Linux] Tomcat 설치 & 환경변수 설정 ②

※ JSP는 java언어를 이용한 웹 프로그래밍을 할 수 있는 언어입니다. jdk(java)와 tomcat(대표적인 jsp 웹서버)를 설치하여 환경변수까지 설정해주시면  자동으로 JSP 구동할 수 있는 설정이 완료됩니

it-serial.tistory.com

https://rimkongs.tistory.com/241

 

Spring 프로젝트를 AWS에 웹 배포하기 (JAVA, Tomcat 설치부터 사이트 띄우기까지)

1. openJDK-8 설치 sudo apt-get install openjdk-8-jre openjdk-8-jdk 설치 경로 확인 java 파일구조 1. java-8-openjdk-amd64/bin/java  2. java-8-openjdk-amd64/bin/javac 3. java-8-openjdk-amd64/jre/bi..

rimkongs.tistory.com

 

 

 

 

 

 

3) war 파일 구동


1. ROOT.war 파일 생성
1-1. 이클립스 해당 프로젝트 우클릭 > Export > WAR
1-2. 다운받을 경로 지정 후 이름 ROOT.war 로 저장

2. tomcat/webapps ROOT 폴더 백업

mv ROOT ROOT_20220616


3. WinSCP로 ROOT.war 파일 복사

4. tomcat/logs 로그 시작

tail -f catalina.out


5. 톰캣 구동

tomcat/bin ./startup.sh

 

=> 화면이 정상적으로 띄워진 걸 확인할 수 있다!

 

 

 



6. 번외: 오류
6-1. Context 오류
블로그를 보며 따라하다가 tomcat/web.xml에 <Context path="/" docBase="" reloadable="true" /> 해당 소스를 넣어줘야 한다고 해서 넣어줬다.
docBase에 war 파일 이름을 적으면 되는데, 나의 경우 폴더명을 잘못 적어줘서 오류가 났었다.

오류 메시지 : 
Caused by: java.lang.IllegalArgumentException: 지정된 주요 리소스셋 [/tomcat/webapps/Root]은(는) 유효하지 않습니다.

오류메시지에서 알 수 있듯이 ROOT가 아니라 Root로 적어줘서 오류났었음.

참고 : https://goodjoon.tistory.com/123

 

[Tomcat] server.xml 에 Context 추가 후 오류 현상

오늘 이노무것 땜에 스트레스 좀 받았다. 조금만 로그를 자세히 봤었으면 좋았을것을..^^;; 디렉토리 기반으로 배포하도록 Context 를 server.xml 에 추가했는데 자꾸 아래와 같이 에러가 떨어지더라..

goodjoon.tistory.com




무엇보다 나중에 알게 된 거지만, 파일명이 ROOT.war 이면 Context 소스 코드 추가해줄 필요 없이 톰캣 구동될 때 알아서 압축이 풀리고 구동된다고 한다.

ROOT.war 파일을 새로 넣는 경우, 원래 있던 ROOT 폴더를 지워주는 것이 중요하다. 그렇게 하지 않으면 서버를 돌려도 이미 ROOT 폴더가 있기 때문에 해당 디렉터리로 실행이 된다.

만일을 위해 기존 ROOT를 백업해주는 게 좋을 것 같다 .. 백업은 생명 ..



6-2. ROOT.war 파일이 풀리면서 꼬인 경우
ROOT.war를 옮겨주고 첫 구동 시 날리 없는 오류가 나고 정말 엉뚱한 오류가 튀어나온다면 파일이 풀리면서 잘못 풀렸을 가능성도 배제할 수 없다.
이것 때문에 시간 꽤 잡아먹었는데, ROOT 파일을 삭제해주고 다시 ROOT.war 파일을 옮겨서 새롭게 시작해보는 것도 하나의 방법이다.

나의 경우, 새롭게 파일을 복사했음에도 불구하고 계속 같은 오류가 나서, 직접 war 파일 압축을 풀어주고 톰캣을 구동했더니 오류가 사라졌다.


*war 압축 직접 푸는 방법 :
1.기존 ROOT 파일 이름 변경
2.ROOT 폴더 생성
3.해당 디렉터리로 ROOT.war 복사 [cp /디렉토리/압축파일 .]
4.압축 풀기 [jar -xvf 압축파일]

5.복사한 ROOT.war 삭제

참고 : https://chobopark.tistory.com/215



6-3. 권한 오류

tomcat 디렉터리의 권한 변경을 했음에도 권한 오류가 날 수 있다. (ROOT.war 의 압축이 새로 풀리면서 일부 디렉터리 권한이 root로 남아있는 경우가 있는 것 같다.) 이것 때문에 엄청나게 많은 삽질을 했다.. root로는 잘 되는데 tomcat으로는 오류가 난다? 당연하지만 무조건 권한 문제다.

오류 메시지 :

[https-jsse-nio-8443-exec-4] org.apache.catalina.core.ApplicationDispatcher.invoke 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이 예외를 발생시켰습니다.
java.lang.IllegalStateException: 출력 폴더가 없음

 

=> 위와 같은 오류가 뜬다면, 폴더 권한 문제일 가능성이 높다.
출처: https://iworldt.tistory.com/9

 

 

org.apache.catalina.core.StandardWrapperValve.invoke 경로 []의 컨텍스트 내의 서블릿 [spring]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [java.lang.ClassNotFoundException: org.apache.jsp.view.**.**]을(를) 발생시켰습니다.
java.io.FileNotFoundException: /product/tomcat/work/Catalina/localhost/ROOT/org/apache/jsp/view/**/**.class (허가 거부)

 

=> 로그를 자세히 보면 '허가 거부'라는 오류가 있다. 해당 경로 가서 확인해보면 권한 root로 되어 있을 확률이 높다. 권한을 tomcat으로 변경하면 된다. (1)의 5번 참고)

 

 

 



+ 권한 설정에 대해 잘 나와있는 글 : https://devks.tistory.com/47

 

Linux. 권한설정 (Permission Denied)

파일을 업로드하는 과정에서 Permission Denied가 발생했습니다. 원인은 Upload 경로에 대한 권한 설정을 하지 않은 것. Linux는 아무래도 익숙하지 않기 때문에 권한 설정을 하면서 기본적인 부분을 정

devks.tistory.com