curl localhost:8080 에러 해결 과정
에러 코드
[root@was-a ~]# curl localhost:8080
curl: (7) Failed to connect to localhost port 8080 after 0 ms: Couldn't connect to server
문제 상황)
EC2 (amazon linux2) 인스턴스에 Apache Tomcat을 설치한 후 잘 동작하는지 체크하기 위해서 curl localhost:8080을 했지만 에러 발생
원인 찾기)
1. netstat 명령어를 이용하여 tomcat 서버가 잘 떠있는지 확인하기
tomcat 서버가 제대로 동작하고 있다면 Local Adderess가 8080 포트를 사용하고 있을 것
netstat -lntp | grep 8080
* netstat 명령어가 없다면 net-tools 패키지를 설치하면 됨
명령어를 입력해 본 결과 아무것도 조회되지 않았고, 제대로 tomcat 서버가 제대로 동작하지 않는다는 것을 깨달음
2. tomcat catalina.out 로그 보기
tomcat 로그 파일은 일반적으로 tomcat/logs 경로에 catalina.out 파일에 저장됨, cat 명령어를 이용하여 로그 조회하기
[root@was-a tomcat]# cd logs/
[root@was-a logs]# ls
catalina.out
[root@was-a logs]# cat catalina.out
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
로그 분석)
JVM(Java Virtual Machine)을 초기화하는 중에 발생한 문제로
'Unrecognized option'은 JVM이 인식하지 못하는 옵션을 발견했다는 것을 의미함
⇒ Java 가상 머신(JVM)이 특정 옵션을 인식하지 못하거나 지원하지 않는 경우 발생함
해결 과정)
결론 : Apache Tomcat 버전과 지원되는 Java 버전 간의 호환성 문제로 인한 문제였음
Apache Tomcat은 Jakarta EE(공식적으로 Java EE) 기술의 하위 집합을 구현한 오픈 소스 소프트웨어임
따라서, Tomcat 버전과 지원되는 Java 버전의 호환성이 매우 중요함
Java 버전 확인
java -version
openjdk version "1.8.0_392"
OpenJDK Runtime Environment (build 1.8.0_392-b08)
OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)
위에 표를 참고했을 때, Java 8 버전일 때 지원되는 tomcat 버전은 9.0.x까지임
그러나, 내가 설치한 Apache Tomcat 버전은 10.1.18이었음
해결하기 위해 tomcat이 설치된 디렉터리를 삭제하고, 9.0.85 버전으로 재설치함
tomcat 9.0.85 설치
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.zip
ls
apache-tomcat-9.0.85.zip
unzip apache-tomcat-9.0.85.zip
rm -rf apache-tomcat-9.0.85.zip
mv ./apache-tomcat-9.0.85/ ./tomcat
sudo chmod 777 -R ./tomcat/
cd tomcat/
ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
cd bin/
./startup.sh
Using CATALINA_BASE: /root/tomcat
Using CATALINA_HOME: /root/tomcat
Using CATALINA_TMPDIR: /root/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /root/tomcat/bin/bootstrap.jar:/root/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
curl localhost:8080 확인
curl localhost:8080
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/9.0.85</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
회고)
- 패키지 호환성 중요성에 대해 깨닫게 되는 시간이었음
- 아쉬운 점은 wget으로 tomcat을 설치했어서 디렉터리에 적힌 버전으로만 tomcat 버전을 확인한 것, 다음번엔 명령어로 버전 조회 해보기
- java 버전을 다운그레이드하는 방법은 없나 찾아보기
- root 사용자가 아닌, tomcat 사용자를 별도로 만들어보기
'OS > Linux' 카테고리의 다른 글
[Linux] NFS 서버 구축 (0) | 2024.09.20 |
---|---|
[Linux] FTP 서버 구성, Filezilla (0) | 2024.09.19 |
[Linux] Ubuntu 22.04 ufw 방화벽 설정 후 ssh port 22: Operation timed out 해결 (0) | 2024.02.27 |
[Linux] SCP Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 해결 (4) | 2024.02.13 |