설치 및 구성 > ThingWorx 설치 > RHEL 설치 > H2/Azure SQL > Java 및 Apache Tomcat 설치(RHEL)
Java 및 Apache Tomcat 설치(RHEL)
아래 단계에서 xx 또는 xxx를 사용하는 빌드 번호로 대체하십시오.
1. 데이터베이스에 AzureSQL을 사용하는 경우 Azure SQL Server를 지속성 공급자로 사용으로 이동합니다. 해당 단원의 단계를 수행하여 데이터베이스를 설정하면 이 단원으로 돌아갑니다.
2. 데이터베이스에 대해 MSSQL을 사용하는 경우 MSSQL을 지속성 공급자로 사용 으로 이동합니다. 해당 단원의 단계를 수행하여 데이터베이스를 설정하면 이 단원으로 돌아갑니다.
3. ThingWorx 시스템 요구사항에서 버전 요구사항을 참조한 다음 Oracle 웹 사이트에서 Java (JDK) RPM 파일을 다운로드합니다.
4. Java 설치 관리자를 실행합니다.
$ sudo rpm -i jdk-8uxxx-linux-x64.rpm
5. 디렉터리를 생성하고 JDK를 이동합니다.
$ sudo mkdir -p /usr/lib/jvm
$ sudo mv /usr/java/jdk1.8.0_xxx/ /usr/lib/jvm/
6. Java 대체를 설정합니다.
$ sudo alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_xxx/bin/java 1
$ sudo alternatives --install /usr/bin/keytool keytool /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool 1
7. 액세스 권한을 변경합니다.
$ sudo chmod a+x /usr/bin/java
$ sudo chmod a+x /usr/bin/keytool
오류가 발생하면 다음 명령을 사용하십시오.
$ sudo chmod -f a+x /usr/bin/keytool
8. 소유자를 변경합니다.
$ sudo chown -R root:root /usr/lib/jvm/jdk1.8.0_xxx/
9. 마스터 링크를 구성합니다.
$ sudo alternatives --config java
/usr/lib/jvm/jdk1.8.0_xxx/bin/java가 포함된 옵션을 선택하십시오.
$ sudo rm /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx /usr/java/latest
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_xxx/bin/keytool /usr/bin/keytool
File Exists 오류가 발생하면 무시하고 계속 진행합니다.
$ sudo alternatives --config keytool
10. Java 버전을 확인합니다. 버전이 다음 예에 나오는 버전이 아닐 수 있습니다.
$ java -version
java version "1.8.0_xxx"
Java(TM) SE Runtime Environment (build 1.8.0_xxx-bxx)
Java HotSpot(TM) 64-Bit Server VM (build xx.xx-bxx, mixed mode)
11. Tomcat을 설치합니다. Tomcat 설치 관리자를 다운로드합니다. 이 프로세스의 단계에서는 Tomcat 8.5.xx를 사용합니다. 여기서 xx는 사용하는 버전으로 대체됩니다.
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz
* 
가장 좋은 방법은 각 릴리즈에 대한 서명 또는 체크섬을 사용하여 Tomcat 파일의 무결성을 확인하는 작업을 포함하는 것입니다. 자세한 내용은 Apache 설명서를 참조하십시오.
12. 콘텐츠를 추출합니다.
$ tar -xf apache-tomcat-8.5.xx.tar.gz
13. Tomcat을 /usr/share/tomcat8.5로 이동합니다.
$ sudo mkdir -p /usr/share/tomcat8.5
$ sudo mv apache-tomcat-8.5.xx /usr/share/tomcat8.5/8.5.xx
14. /etc/environment에서 환경 변수를 정의합니다.
$ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
$ export CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
15. 디렉터리를 /usr/share/tomcat8.5/8.5.xx로 변경합니다.
$ cd /usr/share/tomcat8.5/8.5.xx
16. 시스템에 사용자와 그룹을 추가합니다.
$ sudo groupadd -r tomcat8.5
$ sudo useradd -r -d /usr/share/tomcat8.5 -g tomcat8.5 -s /bin/false tomcat8.5
$ sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5
17. bin/, lib/webapps/의 소유자와 액세스 권한을 변경합니다.
$ sudo chown -Rh tomcat8.5:tomcat8.5 bin/ lib/ webapps/
$ sudo chmod 775 bin/ lib/ webapps/
18. usr/share/tomcat8.5/8.5xx의 소유자 및 액세스 권한을 변경합니다.
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 775 /usr/share/tomcat8.5/8.5.xx
19. conf/의 소유자와 액세스 권한을 변경합니다.
$ sudo chown -Rh root:tomcat8.5 conf/
$ sudo chmod -R 640 conf
sudo chown -R tomcat8.5:tomcat8.5 /usr/share/tomcat8.5/8.5.xx
sudo chmod -R 777 /usr/share/tomcat8.5/8.5.xx
운영 체제 수준의 보안 향상을 위해 생산 시스템에 대한 권한 및 소유권을 다시 논의해야 합니다.
20. logs/, temp/work/의 액세스 권한을 변경합니다.
$ sudo chown -R tomcat8.5:adm logs/ temp/ work/
$ sudo chmod 760 logs/ temp/ work/
21. 자체 서명된 인증서를 생성합니다.
$ /usr/lib/jvm/jdk1.8.0_xxx/jre/bin/keytool -genkey -alias tomcat8.5 -keyalg RSA
22. 지침에 따라 인증서 생성 프로세스를 완료합니다.
키 저장소 암호를 설정합니다.
프롬프트에 따라 보안 인증서를 설정합니다.
tomcat8.5 사용자 암호를 키 저장소 암호와 동일하게 설정합니다.
$ sudo cp ~/.keystore /usr/share/tomcat8.5/8.5.xx/conf/
$ sudo chown root:tomcat8.5 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
$ sudo chmod 640 /usr/share/tomcat8.5/8.5.xx/conf/.keystore
23. 재시작 시 세션이 지속되지 않도록 context.xmlManager 요소에서 의견을 삭제합니다. 텍스트 편집기에서 루트로 /usr/share/tomcat8.5/8.5.xx/conf/context.xml을 열고 ‘<Manager pathname="" />’ 앞에 있는 ‘<!—‘ 및 뒤에 있는 ‘-->’를 제거합니다.
24. 파일을 저장합니다.
25. tomcat-users.xml에서 Apache Manager 사용자를 정의합니다. 텍스트 편집기에서 루트로 /usr/share/tomcat8.5/8.5.xx/conf/tomcat-users.xml을 엽니다. 마지막 행 (</tomcat-users>) 바로 위에 다음 줄을 추가합니다.
<user username="<Tomcat username> " password="<Tomcat password> " roles="manager,manager-gui"/>
26. 파일을 저장합니다.
* 
포함된 역할은 쉽게 테스트하기 위한 용도이며, 보안이 우려되는 경우 제거할 수 있습니다.
* 
아직 수행하지 않은 경우 보안을 위해 다음 단계를 수행하여 기본적으로 AJP 커넥터를 비활성화하는 것이 중요합니다.
27. Tomcat 설치 위치에서 conf/server.xml을 열고 다음 줄을 검색합니다. 줄을 찾으면 주석으로 처리하고 파일을 저장합니다.
<Connector port ="8009" protocol="AJP/1.3" redirectPort="8443"/>
* 
Apache Tomcat 9.0 이상에서 rejectIllegalHeader 속성의 기본값은 true입니다. conf/web.xml 파일을 수동으로 편집하여 이 속성을 false로 설정하는 것은 권장되지 않거나 PTC에서 지원되지 않습니다.
28. 부팅 시 시작되는 서비스로 Tomcat을 설정합니다. 먼저 JSVC를 빌드합니다(시스템에 아직 설치되지 않은 경우).
$ sudo yum install gcc
$ cd /usr/share/tomcat8.5/8.5.xx/bin/
$ sudo tar xvfz commons-daemon-native.tar.gz
$ cd commons-daemon-*-native-src/unix
$ sudo ./configure --with-java=$JAVA_HOME
$ sudo yum install make
$ sudo make
$ sudo cp jsvc ../..
29. Tomcat 서비스 파일을 생성합니다.
$ sudo touch /usr/lib/systemd/system/tomcat.service
30. 텍스트 편집기에서 루트로 /usr/lib/systemd/system/tomcat.service를 열고 다음을 붙여넣습니다.
* 
아래 예에서 -Xms-Xmx 에 대한 값을 가용 OS 메모리의 75%로 설정합니다(예: 16GB RAM 시스템의 경우 12GB). 추가 정보는 JVM 조정을 참고하십시오.
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_xxx
Environment=CATALINA_HOME=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_BASE=/usr/share/tomcat8.5/8.5.xx
Environment=CATALINA_OPTS=

ExecStart=/usr/share/tomcat8.5/8.5.xx/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-Dcatalina.base=${CATALINA_BASE} \
-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dserver -XX:+UseNUMA \
-XX:+UseG1GC -Dfile.encoding=UTF-8 \
-Djava.library.path=${CATALINA_BASE}/webapps/Thingworx/WEB-INF/extensions \
-Xms=<75% of available OS memory> \
-Xmx=<75% of available OS memory> \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat8.5 \
-java-home ${JAVA_HOME} \
-pidfile /var/run/tomcat.pid \
-errfile ${CATALINA_HOME}/logs/catalina.out \
-outfile ${CATALINA_HOME}/logs/catalina.out \
$CATALINA_OPTS \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
31. ThingWorx Platform을 처음으로 설치하는 경우 위의 ExecStart 블록에서 -Djava.library.path로 시작하는 줄 바로 다음에 Java 옵션 -Duser.timezone=UTC를 추가해야 합니다. UTC 표준 시간대는 일광 절약 시간을 인식하지 않습니다. 이 옵션을 설정하면 일광 절약 시간 변경이 발생할 때 데이터를 덮어쓰는 것이 방지됩니다.
* 
기존 고객은 지금 이 설정을 업데이트하지 않아야 합니다.
32. Tomcat usr/share/tomcat8.5/8.5.xx/bin 파일에 setenv.sh라는 새 파일을 만듭니다.
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/tomcat8.5/8.5.xx/webapps/Thingworx/WEB-INF/extensions"
33. 시스템 시작 시 실행되도록 Tomcat을 설정합니다.
$ sudo systemctl enable tomcat.service
이렇게 하면 사용자가 다음 명령으로 Tomcat 서비스를 제어할 수 있습니다.
sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat
sudo systemctl status tomcat
34. Tomcat 설치 위치에서 CATALINA_HOME/conf/web.xml을 엽니다. 다음을 web.xml 파일에 추가하여 기본 오류 페이지(기본값: 스택 추적)를 바꿉니다. 다음을 web-app 태그(welcome-file-list 태그 뒤) 내에 배치합니다. 제대로 구성된 웹 응용 프로그램은 CATALINA_HOME/webapps/APP_NAME/WEB-INF/web.xml에서 이 기본값을 재정의하므로 문제가 발생하지 않습니다.
<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location></error-page>
35. Tomcat 설치 위치에서 CATALINA_HOME/conf/server.xml을 엽니다. <Host> </Host> 태그 내부에 다음을 추가합니다.
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
36. /<path_to_tomcat>/webapps/에 있는 모든 Tomcat WebApp을 제거합니다. 이러한 앱을 제거하면 특히 사용자가 다른 사용자의 쿠키를 볼 수 있도록 허용할 컨텍스트에서 Tomcat에 대한 불필요한 액세스를 방지할 수 있습니다.
37. PTC에서는 ThingWorx 실행 시 TLS를 사용할 것을 강력히 권장합니다. TLS 설정에 대한 자세한 내용은 이 기술 지원 문서를 참조하십시오.
38. 응용 프로그램에 특정 암호화 제품군이 필요한 경우 구성 정보는 다음 설명서를 참조하십시오.
Ulimit 설정 구성
Tomcat 응용 프로그램 서버 프로세스를 "루트" 사용자로 실행하면 전반적인 시스템 보안이 손상되고 산업 표준 모범 사례를 위반하게 됩니다. 이를 방지하기 위해 응용 프로그램 서버를 실행하려는 사용자와 관련된 설정을 포함하도록 /etc/security/limits.d/80-nofiles.conf 파일을 수정하는 것이 좋습니다.
구성 파일의 예
다음 구성은 필요한 변경 사항이 포함된 /etc/security/limits.d/80-nofiles.conf에 있는 기본 Redhat 7.1 OS 구성의 예입니다. 다음 예에서 thingworx는 응용 프로그램 서버에 대한 사용자의 이름입니다.

thingworx soft nofile 30720
thingworx hard nofile 30720
이 변경 사항을 커밋하려면 로그아웃한 다음 시스템에 로그인하십시오.
ThingWorx/PostgreSQL 설치
1. H2: ThingWorx 설치로 이동합니다.
2. PostgreSQL: PostgreSQL 설치 및 구성으로 이동합니다.