(저는 먼저 Google을 사용해 보았고 Tomcat 설치 Readme와 중복된 기사를 백만 개나 얻었습니다.)
Ubuntu 20.04에서 Tomcat9을 실행하기 위해 Java 명령줄을 변경하려고 합니다. 특히 Xmx 설정, gc 로깅 활성화, HTTP 프록시 정의 및 기타 몇 가지 작업을 수행하려고 합니다. Tomcat은 저장소에서 설치됩니다. 유닛 파일에 재정의를 추가하고 JAVA_OPTS 변수에 필수 매개변수를 설정하여 이 작업을 수행해야 한다는 내용을 어딘가에서 읽었습니다(당시에는 URL을 기록하지 않았습니다). 그래서 이걸 만들었어요...
[Service]
ProtectSystem=full
Environment="JAVA_OPTS=-noverify -Xms512M -Xmx4096M -server -Dprod=true
-Xloggc:/var/log/tomcat9/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=20M -Dcom.sun.management.jmxremote
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dlog4j2.formatMsgNoLookups=true
-Dhttp.proxyHost=proxy.bip -Dhttp.proxyPort=3128 -Dhttps.proxyHost=proxy.bip
-Dhttps.proxyPort=3128 -javaagent:/var/lib/tomcat9/lib/aspectjweaver-1.8.13.jar
-Dlog4j2.formatMsgNoLookups=true"
(여기서 가독성을 높이기 위해 환경 줄에 몇 가지 줄 바꿈을 추가했습니다. 소스 파일에서는 한 줄입니다.)
물론 하나도 실행 중이지만 systemctl daemon reload
서비스를 중지/시작하면 다음과 같이 표시됩니다.
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat9/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
-Dignore.endorsed.dirs= -classpath /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar
-Dcatalina.base=/var/lib/tomcat9 -Dcatalina.home=/usr/share/tomcat9
-Djava.io.tmpdir=/tmp org.apache.catalina.startup.Bootstrap start
이것은 내 JAVA_OPT가 아닙니다.
부트 체인을 확인해보면(아래 참조) 내가 설정한 옵션을 제거하는 항목을 볼 수 없습니다.
/lib/systemd/system/tomcat9.service
/usr/libexec/tomcat9/tomcat-update-policy.sh
$CATALINA_BASE/policy/catalina.policy
/usr/libexec/tomcat9/tomcat-start.sh
/etc/default/tomcat9
/usr/libexec/tomcat9/tomcat-locate-java.sh
$CATALINA_HOME/bin/catalina.sh
나는 내 구성을 패키지된 소프트웨어와 별도로 유지하고 싶습니다. 내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
알고 보니 문서 중 하나를 잘못 읽었습니다. /etc/default/tomcat9는 JAVA_OPTS 환경 변수를 재정의합니다.
파일의 설명을 보면 패키저가 사용자가 자신의 옵션을 넣기를 원하는 위치인 것으로 보입니다.