겪은 오류

[Linux]RedHat 8.2버전 톰캣 자동실행 오류

Jude.R 2020. 5. 19. 05:28
반응형

 

 

리눅스 Snippet - Tomcat 수동 설치 및 systemd 등록(리눅스 or Mac)

Tomcat 원격 shutdown 기능 disable 시키기

suwoni-codelab.com

해당 링크를 참조하여 톰캣 설치후 자동실행 서비스를 등록하는것까지는 문제가 없었는데 서비스를 실행하니

Job for tomcat.service failed because the control process exited with error code.

See "systemctl status tomcat.service" and "journalctl -xe" for details.

라는 오류를 내뱉으면서 톰캣 서비스가 실행이 되지 않았다

 

오류 메세지에 나온대로 journalctl -xe를 확인해보니

 

-- The start-up result is done.
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[1]: Starting Tomcat 9.>
-- Subject: Unit tomcat.service has begun start-up
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- Unit tomcat.service has begun starting up.
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[31950]: tomcat.service: Failed to execute command: Permission denied
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[31950]: tomcat.service: Failed at step EXEC spawning /usr/local/tomcat/bin/startup.sh: Permission denied
-- Subject: Process /usr/local/tomcat/bin/startup.sh could not be executed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- The process /usr/local/tomcat/bin/startup.sh could not be executed and failed.
--
-- The error number returned by this process is 13.
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[1]: tomcat.service: Control process exited, code=exited status=203
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[1]: tomcat.service: Failed with result 'exit-code'.
May 18 00:12:27 ip-172-31-33-200.ap-northeast-2.compute.internal systemd[1]: Failed to start Tomcat 9.
-- Subject: Unit tomcat.service has failed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- Unit tomcat.service has failed.
--
-- The result is failed.

 

어째서인지 tomcat.service: Failed to execute command: Permission denied 라는 메세지가 뜨며 startup.sh 실행을 계속 거부당했다

 

systemctl 을 통한 서비스 등록을 포기하고 daemon 서비스 등록으로도 시도 해봤지만 init 6를 통한 재부팅 후 확인해보니 자동실행은 되지 않았다 (service tomcat start 등과 같은 형식으로는 작동함)

 

그 후로도 몇시간 동안 인터넷속 망망대해를 헤매다가 발견한 사이트에서 해결책을 찾았는데

 

 

How To Install Apache Tomcat 9 on CentOS 8 / RHEL 8 | ITzGeek

Apache Tomcat is an open-source Java HTTP web server developed by the Apache Software Foundation (ASF). Tomcat helps to

www.itzgeek.com

setenforce 0

위 명령을 실행한 후 서비스를 다시 실행해보니 서비스가 멀쩡히 작동했다.

 

SELinux라는 리눅스 보안 아키텍쳐가 톰캣실행을 막고있었던것.....

 

서비스가 돌아가는것을 확인했으니 보안문맥을 새로 설정해야하는데

 

SELinux를 처음 접해본 나로써는 보안문맥을 설정에 익숙치 않기때문에

 

[root@ bin]# matchpathcon /usr/local/tomcat/bin
/usr/local/tomcat/bin   system_u:object_r:bin_t:s0

matchpathcon 명령을 이용해서 보안문맥이 system_u:object_r:bin_t 인걸 확인하고 아래 코드를 사용 하여 차례로 바꿔주었다. 한줄에 쓰는 방법도 있을듯 한데 더 찾아볼 체력이 없어서 그냥 두번에 나눠서 적용...

chcon -R -u system_u /usr/local/tomcat/bin
chcon -R -t bin_t /usr/local/tomcat/bin

ls -Z 명령을 이용해 보안문맥이 바뀐것을 확인하고

setenforce 1

 명령을 사용해 SELinux모드를 다시 enforcing으로 전환 tomcat 서비스를 종료했다가 다시 실행하니 오류없이 실행되는것을 확인할 수 있었다.

반응형