tomcat 8.5.57 사용중인데 취약한 버전이므로 버전업데이트 요청이 들어와서 작업하게 되었다.
마이너업데이트란 8.5.57에서 8.5.81처럼, 큰 틀은 톰캣 8.5버전이지만 세세하게 변경되는 사항들이 있으면 맨 뒤에 숫자가 커지면서 업데이트 되어 내놓는것을 말한다.
이미 운영중인 프로그램이기때문에 마이너업그레이드를 진행하기로 하였다.
현재 버전을 보는 방법은 아래와 같이 입력하게되면
톰캣위치/bin/version.sh
버전 정보가 나오게 된다.
8.5.81로 변경하는 방법은 간단하다.
1. https://tomcat.apache.org/download-80.cgi
2. 위 사이트에 접속해서
노란색영역 tar.gz 오른쪽 마우스 눌러서 링크 복사
3. 톰캣 다운로드를 위한 아래와 같은 과정 진행
설치
# yum install wget
...
Is this ok [y/d/N] : y
...
톰캣최신버전 업데이트받을 위치 이동해서 아래와 같이 다운로드
$ cd /home
$ wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.81/bin/apache-tomcat-8.5.81.tar.gz
tar.gz 압축풀기
$ tar -zxvf apache-tomcat-8.5.81.tar.gz
기존라이브러리 백업
$ mv /home/www-apache-tomcat-8.5.57/lib /home/www-apache-tomcat-8.5.57/lib_back
기존톰캣에 업데이트된 라이브러리만 교체
$ cp -r /home/apache-tomcat-8.5.81/lib /home/www-apache-tomcat-8.5.57/
최신라이브러리를 넣어준 기존 톰캣디렉토리명을 최신버전인 8.5.81로 변경해주기
$ mv /home/www-apache-tomcat-8.5.57 /home/www-apache-tomcat-8.5.81
4. 톰캣 버전 8.5 수동 업그레이드시 lib 폴더만 갈아껴주고 재시작을 하면된다는 말이 있는데, 내 경우에는 재시작시 아래와 같은 오류가 발생했다
12-Aug-2022 11:04:34.860 심각 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8553]] org.apache.catalina.LifecycleException: 구성요소 [Connector[HTTP/1.1-8553]]을(를) 초기화하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:139) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:571) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:646) at org.apache.catalina.startup.Catalina.load(Catalina.java:669) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472) Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.buf.UriUtil.isAbsoluteURI(Ljava/lang/String;)Z at org.apache.tomcat.util.file.ConfigFileLoader.getInputStream(ConfigFileLoader.java:77) at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:198) at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207) at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:282) at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:246) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:106) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:72) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:205) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1221) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1234) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:230) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:633) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1112) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) ... 12 more
5. lib폴더 뿐만아니라 bin폴더에 있는 gz파일들이랑 jar파일들도 옮겨주고 재시작하면 업데이트가 완료된다.
(주의할 것은 bin폴더 gz파일와 jar파일만 옮기고 bin폴더 통째로 옮기지 않기. catalina.sh파일 등 설정이 필요할 파일들이 있기때문)
기존 bin 백업
$ mv /home/www-apache-tomcat-8.5.81/bin /home/www-apache-tomcat-8.5.81/bin_back
wget로 다운받아서 압축 풀은 새 톰캣 bin으로 이동
$ cd /home/apache-tomcat-8.5.81/bin
기존톰캣에 업데이트된 라이브러리만 교체
$ cp *.jar /home/www-apache-tomcat-8.5.81/bin
$ cp *.tar.gz /home/www-apache-tomcat-8.5.81/bin
6. 그리고나서 바꿔준 파일들을 교체해준 bin폴더와 lib폴더의 파일들 권한들도 기존 파일들 권한이랑 비교해서 동일하지않으면 권한을 맞춰준다.
7. 마지막으로 톰캣 재시작
/home/www-apache-tomcat-8.5.81/bin/shutdown.sh
/home/www-apache-tomcat-8.5.81/bin/startup.sh
끝!
'개발 > 리눅스' 카테고리의 다른 글
리눅스 disk full이 참 (0) | 2022.10.07 |
---|---|
리눅스 로그인 실패 이력 로그 보는방법/설정하는 방법 (0) | 2022.09.26 |
리눅스 openssl 업데이트 방법 (0) | 2022.08.10 |
openssl 적용한 후 haproxy적용하는 방법 (0) | 2022.04.07 |
방화벽 설정 방법 / 포트 허용 / IP 허용 (0) | 2022.02.25 |