× tomcat.service - Tomcat 10 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2024-01-09 08:51:32 UTC; 6s ago
Process: 2658 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 2668 (code=exited, status=1/FAILURE)
CPU: 17ms
Jan 09 08:51:32 ribbitt systemd[1]: Starting Tomcat 10 servlet container...
Jan 09 08:51:32 ribbitt startup.sh[2658]: Existing PID file found during start.
Jan 09 08:51:32 ribbitt startup.sh[2658]: Removing/clearing stale PID file.
Jan 09 08:51:32 ribbitt startup.sh[2658]: Tomcat started.
Jan 09 08:51:32 ribbitt systemd[1]: Started Tomcat 10 servlet container.
Jan 09 08:51:32 ribbitt systemd[1]: tomcat.service: Main process exited, code=exited, status=1/FAILURE
Jan 09 08:51:32 ribbitt systemd[1]: tomcat.service: Failed with result 'exit-code'.
tomcat 설정 과정에서 main PID(process)에서 error가 발생해 tomcat 실행에 문제가 발생
java test해야하는데 java test.class함...)wget과 apt install의 차이점 ( 현재 openJDK는 apt get, Tomcat은 wget )apt install로 햇지만 문제없다고 생각(.bashrc도 경로 수정함)/usr/local로 이동여러번 시도했지만 안됨
tomcat setting file 재설치
( file script의 문제일 경우 control process error이 발생함, main error가 아니라 )
./start.sh -> jps로 프로세스는 실행되는지만 확인 ( 관련 stack overflow 문답 있음

error message들 다시 한번 확인 ( 관련 로그 살피기 )
nginx 충돌 한번 확인
포트 잘 열려 있는지 (8080 닫혀있는걸로 보임) 포트들 끼리 충돌 나는 건 아닌가 확인
결국 에러메시지...
.../tomcat/latest/logs/catalina.out
파일에 tail -f 파일명명령어를 사용해 로그를 들여다 본 결과이다
Unrecognized option: -server -XX:+UseParallelGC
Error: Could not create the Java Virtual Machine.
라고 써있는데 -server -XX:+UseParallelGC옵션을 인식 할 수 없어 Java Virtual Machine을 생성 할 수 없다고 쓰여있다.
systemctl status tomcat명령어를 통해 위에서 계속 빨간불 들어와 있는 경우를 정상 작동과 내 경우를 비교해 봤을때, Main PID: 4016(java)부분에서 exit code가 동작한 걸로 보아 java와의 연결이 문제일 것이라고 예상하고 있었다.
그래서 더더욱 이 로그에 무게를 두고 문제를 해결하려 했다.
sudo vim /etc/systemd/system/tomcat.service명령어로 tomcat의 서비스를 설정 과정을 거친 적이 있었다.
[Unit]
Description=Tomcat 10 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/usr/local/tomcat/latest"
Environment="CATALINA_HOME=/usr/local/tomcat/latest"
Environment="CATALINA_PID=/usr/local/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/usr/local/tomcat/latest/bin/startup.sh
ExecStop=/usr/local/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
java관련 오류라서 $JAVA_HOME과 같은 PATH문제라고 생각했으나, ~/.bashrc 와 같은 JDK환경 변수를 전부 수정해도 오류는 해결되지 않았다.
이때 이전 로그에서 찾아냈듯이
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
이 줄이 수상해 #으로 주석 처리 하니...
문제가 다른 부분으로 바뀌어 있었다.
잘 보면 이전에 exit되었던 main PID는 잘 작동 했으나, shutdown.sh에서 비정상 종료 코드로 인해 실행이 종료 되었고, 권한관련 문제라고 쓰여있다.
이전까지 문제 없던 shutdown.sh에서 문제가? 심지어 이 파일은 문제 없이 잘 동작했다고 하는 startup.sh와 같은 file에 같은 권한으로 설정 되어있다.
이때 혹시 내가 아까 shutdown.sh와 startup.sh로 테스트 해봤던 과정때문에 문제가 생겼나 싶어 $jps명령어로 실행중인 process들을 확인해보니

이미 Bootstrap이 실행중이 었다.
(startup.sh를 실행하면 생기는 process로 실제 실행 process라고 알고있음)
그래서 직접 .../tomcat/latest/bin/shutdown.sh를 실행시켜 process를 종료하고, 다시 $systemctl start tomcat를 하니....
드디어 저 푸른점을 마주했다...
일주일정도 동안 이 문제를 싸매고 끙끙 거린 결과...