[Linux][CentOS][7.x] Tomcat 설치
선행작업 : JDK 설치!
아래 명령어로 tomcat을 설치한다.
# sudo yum install tomcat tomcat-webapps tomcat-admin-webapps |
아래 명령어로 tomcat 서비스를 실행
# sudo systemctl start tomcat |
tomcat의 기본 포트는 8080 이므로, 해당 서버에 8080 포트로 접속하여 tomcat 서비스가 잘 돌아가는지 확인
@ 계정 설정
# vi /etc/tomcat/tomcat-users.xml |
"tomcat-users" element 에 아래와 비슷하게 계정을 추가한다.
<user username="admin" password="password" roles="admin-gui,manager-gui"/> |
변경한 내용을 적용하기 위해 톰캣 서비스를 다시 시작한다.
# sudo systemctl restart tomcat |
@ 톰캣 메모리 설정
아래 설정파일에서 메모리 크기를 지정할 수 있다.
# vi /etc/tomcat/tomcat.conf |
JAVA_OPTS 라고 되어 있는 부분을 다음과 같이 변경한다. (Xms 512M, Xmx1024M 예시)
JAVA_OPTS="-Xms512M -Xmx1024M" |
톰캣 운영 도중 자주 나타나는 java.lang.OutOfMemoryError: PermGen space 에러는 heap 메모리의 특정 영역에 객체를 할당 할 수 있는 공간이 충분하지 않아서 발생하는 것으로 클래스와 매써드 객체가 저장되는 영역이 부족해서 생긴다.
에러의 원인에 따라 하나의 클래스의 생성자에서 차지하는 heap 메모리가 많아서 발생하는 경우 XX:MaxNewSize 옵션을 추가해 주고, 서블릿이 로딩하는 클래스와 매써드가 많아서 발생하는 경우에는 XX:MaxPermSize 옵션을 추가해 준다. (두 가지 다 적용해도 무방)
JAVA_OPTS="-Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=256M -XX:NewSize=128M -XX:MaxNewSize=128M" |
또한 $CATALINA_BASE/conf/web.xml 파일의 enablePooling 옵션을 아래와 같이 사용하지 않는 것으로 설정하면, jsp를 로딩한 후에 메모리 상에서 제거하게 되므로 위의 에러가 나타날 가능성을 줄여준다. Pooling 을 사용하지 않으므로 동시 요청이 많은 경우 약간의 성능 차이는 발생할 수 있음.
<init-param> <param-name>enablePooling</param-name> <param-value>false</param-value> </init-param> |
@ 부팅시 서비스가 시작되도록 등록
# sudo systemctl enable tomcat |
@ 부팅시 서비스가 시작되지 않게 삭제
# sudo systemctl disable tomcat |