일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- albumbook
- Android
- MYSQL
- OTP
- FIDO2
- SSL
- 앨범북
- kmip
- 인증
- SSH
- 앱리소스
- 앱스토어
- openssl
- SWIFT
- OSX
- fido
- WebAuthn
- SwiftUI
- apple
- 애플
- 안드로이드
- 2FA
- MSYS2
- otpkey
- git
- Xcode
- css
- Nodejs
- appres
- MFA
- Today
- Total
인디노트
[펌] 톰캣 server.xml 설명 본문
[펌] http://blog.daum.net/nsh777/5494233
[펌] http://blog.daum.net/nsh777/5494233
[펌] http://blog.daum.net/nsh777/5494233
[펌] http://blog.daum.net/nsh777/5494233
▣ server.xml 파일이란?
1. 말그대로.. server에 대한 설정 파일이다.
▣ 디렉토리 위치?
:%CATALINA_HOME%\conf\server.xml //CATALINA_HOME은 톰캣의 홈디렉토리!~
▣ 구조
톰캣을 설치한 후, 가장 기본적 형태!~ parent-children 관계이다..
Server는 전체 JVM을 대표하는 단 하나의 요소이다.
Server는 한개 이상의 Service 객체를 가지고 지정된 포트로 shutdown 커맨드를 listen한다.
Server는 그 자체가 Container가 아니므로 'Valves'나 'Loggers'같은 것은 정의할 수 없다.
<Server port="8005" shutdown="SHUTDOWN">
필요한 리스너 등록!~
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
Global JNDI resources!~
<GlobalNamingResources>
<Environment name="simpleValue" ... />
<Resource name="UserDatabase" ... />
</GlobalNamingResources>
Service는 하나의 Container를 공유하는 한개 이상의 Connectors의 모임이다.
일반적으로.. 위에서 호칭한 Container를 'Engine'이라 한다.
Service태그에서 톰캣의 독립 서비스를 정의하자
<Service name="Catalina">
Connector는 요청을 받고 응답을 리턴하는 endpoint이다.
각 Connector는 요청을 처리하기 위해 연관된 Container에게 요청을 넘긴다.
<Connector port="8080" ... />
<Connector port="8009" ... />
Engine은 적절한 Host(virtual host)로 처리를 넘기는 entry point이다.
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>
default virtual Host 정의
<Host name="localhost" appBase="webapps">
</Host>
</Engine>
</Service>
</Server>
▣ 기타 설명
1. HTTP 포트를 80으로 바꾸면 http://localhost:8080을 안 써도 된다.
즉 http://localhost 만 쓰면 된다는 말!~
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192" // 8080 -> 80
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
2. Context ?
: Context는 특별한 Viertual Host에서 작동하는 하나의 Web Application 이다..
3. Web Application을 추가 하기 위해서(deploy)
Application Context를 추가해야 하는데..
위에서 설명한 <Host></Host> 사이에 <Context>를 추가하는 것이 예전 방법 이었다.(Tomcat 4.x 이하)
그러나!!
자카르타에서는 더이상 server.xml 내에 Context를 추가하는 것을 권장하지 않는다..
(그것도 강력히 비추한다 -ㅇ-..)
그러면 방법은??
▣ 톰캣(tomcat)에 어플리케이션을 추가하는 방법은 두가지가 있다.
하나씩 알아보도록 하자.
1. webapps 디렉토리 밑에 넣는 방법
장점 : 웹 어플리케이션의 폴더구조만 가지고 있다면 자동으로 웹어플리케이션이 설정된다.
단점 : 지정된 디렉토리(톰캣\webapps\'어플리케이션명')의 하위 이외에는 설정이 불가하다.
방법 :
기본 설치된 톰캣 디렉토리에서 '톰캣\webapps\어플리케이션명' 이렇게 넣어주기만 하면..
바로.. http://localhost/어플리케이션명 ........ 으로 접근 가능하다.
참고1) 웹 어플리케이션의 폴더구조
어플리케이션명\WEB-INF ----------> 이 디렉토리 필수!
어플리케이션명\WEB-INF\web.xml ----------> 이 파일 필수!
참고2) web.xml의 최소내용
<?xml version="1.0" encoding="euc-kr"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
</web-app>
참고3) index.html이 있어야 되겠죠?
web.xml에 설정한 welcome파일이 있어야 해당 context가 정상적으로 호출이 된답니다
----> web.xml중 <welcome-file-list>태그에 적은 거 기억나시죠?
참고4) 어플 추가후 톰캣서버리부팅없이 바로 접근가능하답니다 ㅎㅎ
2. 임의의 디렉토리에 웹어플리케이션을 위치시키고 싶을 때.
장점 : '톰캣\webapps\' 디렉토리에 구속될 필요가 없다.
방법 :
이전에 설명한.. server.xml에서 설정하는 방법도 있으나 이것은 자카르타에서 비추하는 방법이기 때문에
설명은 생략토록 한다.
앞으로는 xml형식의 파일로 Application Context를 저장하라고 하고 있다.
아래처럼!~
%CATALINA_HOME%\conf\Catalina\localhost\컨텍스트명.xml
기존에 존재하는 host-manager.xml, manager.xml 등의 파일을 저장해서 이름을 바꾸고
안에 내용중 docBase와 path만 바꾸면 끝!~
설정이 훨씬 쉽게 되었다!!! ㅎㅎ
- path : 웹어플리케이션의 경로명(http://localhost/'요기 붙을 내용')
- docBase : 웹어플리케이션이 위치한 폴더의 경로명(실제 경로)
<Context path="/myTest" docBase="C:\myTest"
debug="0" privileged="true" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
</Context>
※ROOT로 만들고 싶다면 ROOT.xml로 만들면 됨.
※server.xml의 HOST 항목중 appbase 속성값과 위의 docBase가 동일하면 톰캣 콘솔에..
에러가 발생하므로 경로를 다르게 해주자!~
▣ Context 속성(참조 : http://www.jakartaproject.com/article/jakarta/110284482002600 )
속성 |
설명 |
backgroundProcessorDelay | 이 값은 컨텍스트와 그 자식 컨테이너에서 background process method가 invoke되는 delay 시간을 나타낸다. 이 값을 양수로 설정하면 어떤 쓰레드가 분기되어 일정 시간 후에 이 쓰레드가 해당 host와 자식 컨테이너에서 background process method를 실행시킵니다 만약 설정하지 않으면 디폴트값인 -1을 가지며 음수의 값은 부모 host의 background processing 정책을 사용한다는 것입니다. 참고로 컨텍스트는 세션을 종료하거나 클래스 리로딩을 위한 모니터링등을 위해 background processing을 사용합니다. |
className |
사용할 Java 구현체 클래스의 이름. 이 클래스는 반드시 org.apache.catalina.Context 인터페이스를 구현해야 합니다. 지정하지 않으면 표준값 (아래에 정의됩니다)이 사용됩니다 |
cookies |
true(디폴트)로 지정하면 클라이언트가 쿠키를 지원하는 경우 세션확인의 통신수단(session identifier communication)으로 쿠키를 사용합니다. false로 지정하면 세션확인의 통신수단으로 쿠키 사용을 하지 않고, 어플리케이션에 의한 URL 다시쓰기(URL rewriting)에만 의존한다는 의미입니다. |
crossContext |
true로 지정하면 이 어플리케이션에서 ServletContext.getContext() 호출을 통해, 이 가상호스트에서 실행중인 다른 웹어플리케이션에 대한 요청디스패쳐(request dispatcher)를 성공적으로 얻을 수 있습니다. 보안상의 이유로 false(디폴트)로 지정하면 getContext()는 언제나 null을 반환하게 됩니다. |
docBase |
이 웹어플리케이션에 대한 Document Base (Context Root로도 알려져 있습니다) 디렉토리, 또는 웹어플리케이션 아카이브 파일의 경로명(웹어플리케이션을 WAR 파일로 직접 실행하는 경우)을 나타냅니다. 이 디렉토리나 WAR 파일에에 대한 절대경로명을 지정할 수도 있고, 이 Context가 정의된 Host의 appBase 디렉토리에 대한 상대경로명을 지정할 수도 있습니다 |
override | true로 설정하면 DefaultContext element를 관련된 host에서 명백하게 상속받아 사용합니다 기본값으로 Defaultcontext element가 사용됩니다 |
privileged |
true로 설정하면 이 컨텍스트는 관리자서블릿(manager servlet) 같은 컨테이너 서블릿을 사용할 수 있습니다. |
path |
이 웹어플리케이션의 컨텍스트 경로(context path)를 나타내며, 각 요청 URI의 시작부분이 컨텍스트 경로와 같을 때 해당 웹어플리케이션이 그 요청을 처리하게 됩니다. 하나의 특정 Host 내의 컨텍스트 경로들은 모두 각각 유일해야 합니다. 만약 컨텍스트 경로를 빈 스트링("")으로 지정하면, 이 Context는 이 Host에 대한 디폴트 웹어플리케이션으로 정의된 것입니다. 디폴트 웹어플리케이션은 다른 Context 들에 해당되지 않는 모든 요청을 처리할 것입니다. |
reloadable |
true로 지정하면, Catalina는 /WEB-INF/classes/와 /WEB-INF/lib 안 클래스 들의 변경여부를 감시하다가, 변경이 발견되면 웹어플리케이션을 자동으로 재적재(reload)합니다. 이 기능은 개발중에는 매우 유용하지만 얼마간의 실행부하(runtime overhead)가 발생하므로, 실제 운영할 용도로 어플리케이션을 배치(deploy)할 때는 사용하지 않도록 합니다. 그러나 이미 배치가 끝난 어플리케이션이라도 Manager 웹어플리케이션을 이용하면 필요할 때 재적재 하도록 할 수 있습니다 |
wrapperClass |
이 Context로 관리할 서블릿 들에 대해 사용할 org.apache.catalina.Wrapper 구현체 클래스의 Java 클래스명입니다. 지정하지 않으면 표준값이 사용됩니다 |
[펌] http://blog.daum.net/nsh777/5494233
[펌] http://blog.daum.net/nsh777/5494233
'개발 플랫폼 및 언어' 카테고리의 다른 글
OpenSSL 컴파일(compile) & 빌드(build) (0) | 2020.05.23 |
---|---|
EASY WINDOWS AND LINUX CROSS-COMPILERS FOR MACOS (0) | 2020.05.23 |
SELinux 관련 openvpn 인증서 읽지 못할때 처리 (0) | 2019.05.29 |
WildFly 제대로 배워보자 (PDF) (0) | 2019.05.28 |
구글의 소스 레파지토리 (0) | 2019.05.19 |