๐Tomcat ํฐ 3๊ฐ์ง ๊ตฌ์ฑ
Coyote : Tomcat TCP ํ๋กํ ์ฝ ์ง์
Catalina : Java Servlet์ ํธ์คํ
ํด์ค๋ค.
Jasper : JSP ํ์ด์ง ์์ฒญ ์ฒ๋ฆฌ Servlet
๐ํฐ์บฃ ๋์ ๊ตฌ์กฐ
Tomcat Server๊ฐ ๊ทธ ๋ฐ์ Service ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค (๊ทธ ํ์์๋ Engine, Connector(ํธ์ถ ํฌํธ), Host, Context(URI Mapping) ๋ฑ์ด ์กด์ฌ)
HTTP ํต์ ์์ฒญ → ํธ์ถ ํฌํธ์ ํด๋นํ๋ Connector ์ฐ๊ฒฐ → Service → Engine → Host → Context(๊ธฐ๋ณธ์ ์ผ๋ก webapps์ ์๋ ๊ณณ ์ฐธ์กฐํด ํ๋ก์ ํธ URI Mapping → ํ๋ก์ ํธ ๋ด web.xml ์ฝ๊ธฐ → ํ๋ก์ ํธ ๋ด web.xml ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ URI ๋งคํ
ํ๋์ Server์๋ ์ฌ๋ฌ๊ฐ Service๊ฐ ์กด์ฌํ ์ ์๋ค.
ํ๋์ Service์๋ 1๊ฐ์ Engine๊ณผ ์ฌ๋ฌ๊ฐ์ Connector๋ก ๊ตฌ์ฑ
ํ๋์ Engine์๋ ์ฌ๋ฌ๊ฐ Host ์กด์ฌํ ์ ์๋ค.
ํ๋์ Host์๋ ์ฌ๋ฌ๊ฐ Context๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค.
Tomcat Server → Engine(Connector๋ก ํตํด ์ ๋ฌ) → Host → Context
[Tomcat์์๋ server.xml์ ์ ํ์๋ ๋ด์ฉ์ ๊ฐ์ง๊ณ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Connector์ ํฌํธ๋ฒํธ๋ฅผ ์ ์ด๋๋ฉด ์ด๋ค Service๋ฅผ ์ด์ฉํ ์ง ๋ฐฉํฅ์ ์๋ ค์ค๋ค]
๐Server
port : Shutdown ๋ช ๋ น์ ๋ณด๋ผ ์ ์๋ TCP/IP ์ฃผ์
<Server port="8005" shutdown="SHUTDOWN">
๐Service
Serivce์ ์ ์ผํ ์ด๋ฆ์ผ๋ก Log๋ฅผ ๋จ๊ธธ ๋ ์ฌ์ฉํ๋ค (Catalina.out)
<Service name="Catalina">
๐Connector
ํน์ TCP port์์ request๋ค์ listenํด engine์ผ๋ก ๋ณด๋ด์ค๋ค.
- port
- ๋ฆฌ์จํ ํฌํธ
- protocol
- TCP/IP ๋ฐฉ์
- HTTP/1.1
- ๊ธฐ๋ณธ์ ์ผ๋ก Connection๋น ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌ ํ๋๋ก ์ค๊ณ ๋์ ์ ์ก์ด ๋ถ๊ฐ๋ฅํ๊ณ ์์ฒญ๊ณผ ์๋ต์ด ์์ฐจ์ ์ผ๋ก ์ด๋ค์ง๋ค
- HTTP/2
- HTTP1.1์ ์์ ํ๊ฒ ์ฌ์์ฑํ ๊ฒ์ด ์๋๋ผ ํ๋กํ ์ฝ์ ์ฑ๋ฅ์ ์ด์ฒจ์ ๋ง์ถฐ ์์ ํ ๋ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก connection ํ ๊ฐ๋ก ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ผ๋ฉฐ, ์๋ต์ ์์์ ์๊ด์์ด stream์ผ๋ก ์ฃผ๊ณ ๋ฐ๋๋ค
- AJP
- "Apache JServ Protocol"์ ์ฝ์๋ก, Tomcat๊ณผ ์น ์๋ฒ(์ฃผ๋ก Apache) ๊ฐ์ ํต์ ์ ์ํ ํ๋กํ ์ฝ๋ก Web์๋ฒ์ธ Apache์์ ์ด๋ค ํฌํธ๋ฅผ ๋ค์ด์ค๋ฉด ํฌํธํฌ์๋ฉํ ์ง์ ๋ํ ํฌํธ ์ค์ ์ํ๊ณ Tomcat๋ ์ด์ ๋ํ ๊ฑธ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ ์ค์ ๋ฐ ํฌํธ ๊ฐ๋ฐฉ์ ํ๋ค
<!-- Apache ์ค์ -->
<VirtualHost *:80>
ServerName yourdomain.com
# ๊ธฐํ ์ค์
ProxyPass / ajp://localhost:8009/ # Tomcat๊ณผ์ AJP ์ฐ๊ฒฐ ์ค์
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
<!-- Tomcat ์ค์ -->
<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" />
์ ํ๋กํ ์ฝ์ ๋์ ๋ฐฉ์ ์ค์
- BIO : Tomcat 7 ๊ธฐ๋ณธ ๋ฐฉ์ ํ๋์ Thread๊ฐ ํ๋์ Connection์ ๋ด๋น
- NIO : Tomcat 8.5 ๊ธฐ๋ณธ ๋ฐฉ์ ํ๋์ Thread๊ฐ ํ๋ ์ด์์ Connection์ ๋ด๋น
- APR : 10.x ๋ฒ์ ๋ถํฐ ARP ๋ฐฉ์ ์ญ์
<Connector port="7104" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="7004" URLEncoding="UTF-8" />
๐Thread Pool ์ค์
maxThreads : Connector๊ฐ ์์ฑํ ์ ์๋ ์ต๋ Thread ์
maxConnections : ๋์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ์ต๋ Connection ์
maxSpareThreads : ์ต์๋ก ์คํ์ ์ ์งํ thread ์
acceptCount : thread๊ฐ ๊ฝ ์ฐผ์ ๋ queue์ ์ ์ฅ ๊ฐ๋ฅํ ์ต๋ request ์
Thread Pool
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150", maxConnections >
๊ณต์ Thread Poll
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
๐ Engine
name : Engine์ ์ ์ผํ ์ด๋ฆ์ผ๋ก Log๋ฅผ ๋จ๊ธธ ๋ ์ฌ์ฉํ๋ค.
defaultHost ?
<Engine name="Catalina" defaultHost="localhost">
๐Host
name : ์ ์ผํ ๊ฐ์ Host๋ช
(http://hostname/~)
appBase : app ํด๋ (default webapps) Host๋ง๋ค ๋ค๋ฅธ appBase๋ฅผ ์ง์ ํ ์ ์๋ค. (์ฌ๋ฌ๊ฐ Domain ํจ์จ์ ๊ด๋ฆฌ๊ฐ๋ฅ)
autoDeploy : appBase์ ๋ณ๋์ฌํญ์ด ์์ ๋ ์๋์ผ๋ก Deploy(๋ฐฐํฌ) ํด์ค๋ค.
unpackWARs : warํ์ผ deploy ์ค์ ์ฌ๋ถ
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
๐Context
Host์์ ์์ผ๋ฉฐ ํ๋์ WebApplication์ด๋ฉฐ ์ฃผ๋ก .war ํํ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
docBase : ํธ์ถํ ๊ฒฝ๋ก URI์ด๋ค. (/ABC/testing.jsp ํธ์ถ์ /webapps/DEF/testing.jsp๋ฅผ ํธ์ถํ๊ฒ ๋๋ค.)
path : ์ค์ ํธ์ถ์ํฌ ๊ฒฝ๋ก์ด๋ค
๋ง์ฝ Context๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก docBase๋ webapps์์ ์๋ ํด๋ ์ด๋ฆ์ ๋ฐ๋ผ๊ฐ๊ฒ ๋๋ค.
์ฆ, webapps/ABC ํด๋๊ฐ ์กด์ฌ์ /ABC/ ์ด๋ฐ์์ผ๋ก ํธ์ถํจ
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="ABC" path="/DEF" reloadable="true"></Context>
๐ ์ฐธ๊ณ ๋ฐ ์ถ์ฒ
https://velog.io/@hyunjae-lee/Tomcat-2-%EA%B5%AC%EC%A1%B0
https://bogyum-uncle.tistory.com/m/219
https://ijbgo.tistory.com/m/26
https://velog.io/@wiostz98kr/HTTP1.1%EA%B3%BC-HTTP2.0%EC%9D%98-%EC%B0%A8%EC%9D%B4-e2v4x4t1
'TOMCAT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Tomcat] ํฐ์บฃ ๊ธฐ๋ณธ ๋ก๊ทธ ์ ๋ณด (catalina.out, catalina.yyyy-mm-dd.log, localhost_access, localhost, host-manager.log, manager.log) (0) | 2024.02.29 |
---|---|
[TOMCAT]apache VS apache Tomcat (0) | 2024.02.29 |