tomcat의 jvm heap 메모리 사이즈를 조정하려고
실행중인 tomcat의 PID를 확인하곤 불현듯 깨달은 것이 있다.
$ ps -aux | grep tomcat
root 2946 0.2 12.0 2321400 121440 ? Sl 01:33 0:21 /usr/bin/java -Djava.util.logging.config.file=/data/was/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /data/was/tomcat/bin/bootstrap.jar:/data/was/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/data/was/tomcat -Dcatalina.home=/data/was/tomcat -Djava.io.tmpdir=/data/was/tomcat/temp org.apache.catalina.startup.Bootstrap start
ec2-user 4000 0.0 0.2 123584 2260 pts/0 S+ 04:19 0:00 grep --color=auto tomcat
서비스를 실행하는 계정이 root인 것을 발견했기 때문이다.
그 이유는 내가 tomcat을 컴파일 설치한 후 직접 서비스 파일을 만들어서 실행시켰기 때문이다. -> [Amazon Linux 2] Tomcat 8.5.64 컴파일 설치 & 서비스 등록
따라서, 따로 tomcat을 위한 서비스 계정과 그룹을 만들어서 등록시키는 과정을 기록하게 되었다.
sudo groupadd was
sudo useradd tomcat -G was
서비스 파일에서 User와 Group을 수정해주자
/usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat8.5.64
After=network.target syslog.target[Service]
Type=forkingEnvironment=CATALINA_HOME=/usr/local/tomcat8/apache-tomcat-8.5.64
User=tomcat
Group=wasExecStart=/usr/local/tomcat8/apache-tomcat-8.5.64/bin/startup.sh
ExecStop=/usr/local/tomcat8/apache-tomcat-8.5.64/bin/shutdown.shUMask=0007
RestartSec=10
Restart=alwaysSuccessExitStatus=143
[Install]
WantedBy=multi-user.target
서비스 파일만 수정하고 데몬을 리로드했더니 Failed to start tomcat8.5.65.
에러가 났었다.
$ sudo systemctl daemon-reload
$ sudo systemctl status tomcat
● tomcat.service - tomcat8.5.65
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: activating (auto-restart) (Result: exit-code) since 금 2021-04-23 04:25:58 UTC; 3s ago
Process: 4145 ExecStop=/data/was/tomcat/bin/shutdown.sh (code=exited, status=203/EXEC)
Process: 4153 ExecStart=/data/was/tomcat/bin/startup.sh (code=exited, status=203/EXEC)
Main PID: 2946 (code=exited, status=143)
4월 23 04:25:58 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: tomcat.service: control process exited, code=exited status=203
4월 23 04:25:58 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: Failed to start tomcat8.5.65.
4월 23 04:25:58 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: Unit tomcat.service entered failed state.
4월 23 04:25:58 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: tomcat.service failed.
이것저것 검색해보고 고민해보다가 tomcat이 설치된 경로의 소유자와 소유 그룹을 설정하지 않았다는 것을 알았다.
sudo chown -R tomcat:was /data
$ ls -ld /data
drwxr-xr-x 5 tomcat was 124 4월 21 08:23 /data
$ ls -l /data
drwxr-xr-x 3 tomcat was 55 4월 21 08:23 was
drwxr-xr-x 2 tomcat was 110 4월 21 08:23 was-app
마지막으로, 변경한 서비스 설정을 반영하기 위해 데몬을 리로드 시켜주자
sudo systemctl daemon-reload
$ sudo systemctl status tomcat
● tomcat.service - tomcat8.5.65
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since 금 2021-04-23 04:31:16 UTC; 25s ago
Main PID: 4302 (java)
CGroup: /system.slice/tomcat.service
└─4302 /usr/bin/java -Djava.util.logging.config.file=/data/was/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djd...
4월 23 04:31:16 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: tomcat.service holdoff time over, scheduling restart.
4월 23 04:31:16 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: Starting tomcat8.5.65...
4월 23 04:31:16 ip-10-100-3-226.ap-northeast-2.compute.internal systemd[1]: Started tomcat8.5.65.
$ ps -aux | grep tomcat
tomcat 4302 20.3 12.3 2319352 124264 ? Sl 04:31 0:06 /usr/bin/java -Djava.util.logging.config.file=/data/was/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /data/was/tomcat/bin/bootstrap.jar:/data/was/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/data/was/tomcat -Dcatalina.home=/data/was/tomcat -Djava.io.tmpdir=/data/was/tomcat/temp org.apache.catalina.startup.Bootstrap start
ec2-user 4364 0.0 0.2 123584 2288 pts/0 S+ 04:31 0:00 grep --color=auto tomcat
끝~~!!~!~!!!