Amazon Linux 2 서버에 Tomcat 설치 및 기본 환경 구성
- Tomcat 설치 파일로 설치하거나 패키지를 이용하여 설치할 수 있다. 이번 포스팅에서는 패키지로 설치를 진행한다.
- Tomcat 9 버전으로 설치를 진행할 예정이고 설치 파일로 설치할 경우 아래 링크 참고
https://tomcat.apache.org/download-90.cgi
Apache Tomcat® - Apache Tomcat 9 Software Downloads
Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version
tomcat.apache.org
# amazon-linux-extras install tomcat9
# systemctl start tomcat
# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-12-27 01:19:56 UTC; 10s ago
Main PID: 20134 (java)
CGroup: /system.slice/tomcat.service
└─20134 /usr/lib/jvm/jre/bin/java -Djavax.sql.DataSource.Factory=org.apac...
Dec 27 01:19:58 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:58 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:58 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:58 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Dec 27 01:19:59 ip-10-20-2-177.ap-northeast-2.compute.internal server[20134]: 27-Dec...
Hint: Some lines were ellipsized, use -l to show in full.
Tomcat 기본 설정
1. Heap Memory 설정
- /usr/share/tomcat/bin 디렉토리에 setenv.sh 파일 생성하여 Xms, Xmx 값을 지정한다.
(Xms: min heap size, Xmx: max heap size)
vi /etc/share/tomcat/bin/setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
2. server.xml 설정
- 크게 <Service> <Connector> <Engine> <Host> 가 있다.
- Service, Connector : 서비스 단위, 연결설정 // 서비스 단위를 여러개 만들고 Connector 를 통해 80포트 / 8080포트 / 443(SSL/TSL)등 여러개의 포트를 열어 서비스할 수 있습니다.
- 그 아래 만 집중해서 살펴봅니다.
- tomcat은 최초 8080포트로 LISTEN을 진행합니다.
- 관련 필요 정보
* THREAD 값 : WEB-WAS구간에 허용할 동시 쓰레드 갯수
* TIMEOUT 값 : WAS를 connection할때 허용되는 대기값 ms 값
* LISTEN PORT : 최초 LISTEN PORT
* appbase 값 : WAS가 바라볼 DOC ROOT 경로
* unpackWARs 여부 : WAR파일로 올려놓으면 자동으로 unpack을 진행
* autoDeploy 여부 : 소스를 올려놓으면 자동으로 compile해서 소스에 반영
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
Engine (https://tomcat.apache.org/tomcat-9.0-doc/config/engine.html)
- defaultHost : Host[name]과 일치하지 않는 호스트로 접속시 기본값으로 대처할 호스트
Host (https://tomcat.apache.org/tomcat-9.0-doc/config/host.html)
- name : 호스트 이름입니다. 예를들어서 도메인이름 test.co.kr 로 접속한경우 Host[name]이 test.co.kr 인것을 찾고 없으면 Engine[defaultHost]의 값으로 접속합니다.
- appBase : 기본 경로입니다. 예를들어 webapps 라면 [톰켓기본경로/webapps] 를 기본으로 접속하게됩니다.
- uppackWARs : war 파일 자동언팩
- autoDeploy : 자동 디플로이
Valve (https://tomcat.apache.org/tomcat-9.0-doc/config/valve.htm)
- 각 호스트 접속시 영향을 주는 것들이라고 보면됩니다.* RemoteAddrValve 같이 IP 필터같은 필터 역활을 하는 것도 있고 종류도 다양합니다.
3. appBase 하위 ROOT
- Host 태그 아래에 default 설정이 되어있기 때문에 ROOT 디렉토리가 default 설정이 됩니다. 해당 ROOT 디렉토리가 아닌 다른 설정을 원하실 경우 Host 태그 아래에 Context 태그를 추가하여 변경해주어야 합니다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- context를 생략하면 아래와 같은 기본값이 할당된다 -->
<Context docBase="ROOT" path="/" />
</Host>
- Context[docBase] : Host[webapps]/Context[docBase] 값이 기본 접근 폴더이다. (index.html의 폴더같은 기본 폴더라고 보시면됩니다.)
- Context[path] : docBase의 할당위치
4. 쓰레드 수
- maxThread = 200 (쓰레드풀 최대 쓰레드 갯수)
- minSpareThreads = 25 (쓰레드풀 초기 쓰레드 갯수)
server.xml "Host" 태그 아래에 "Context"처럼 태그를 하나 생성해서 넣어줍니다.
<Connector port="8080" address="localhost" maxThreads="250"
maxHttpHeaderSize="1024"emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
acceptCount : Thread Pool 내에 할당 가능한 Thread가 없다면 사용자 요청은 queue 안에 서 대기하게된다. 당연히 queue의 크기가 크면 대기 가능한 요청 수도 많아진다. acceptCount 속성은 queue에 저장 가능한 최대 요청 수를 설정합니다.
5. 데이터소스 설정
Tomcat 서버 DataSource 설정 방법 (+JNDI)
환경 정보 IntelliJ IDEA 2019.3 Ultimate, Amazon Corretto 11, Tomcat 9, JDBC 4.2, 의존성 관리 환경 X Tomcat 서버 DataSource 설정 방법 (+JNDI) ❕ 포스트 상단에는 DataSource, JNDI의 이론적인 내용이 포함되어 있으므로
atoz-develop.tistory.com
[참고]
'WAS > Tomcat' 카테고리의 다른 글
[Tomcat] AWS ELB 사용시 실제 Client IP 로그에 남기는 방법 (0) | 2024.01.07 |
---|