내 Tomcat 이 항상 구성에 실패하는 이유는 무엇입니까? 환경 설정 변수입니까, 아니면 내 버전입니까?
대부분의 상용 J2EE 서버는 강력한 관리 인터페이스를 제공하며 대부분 이해하기 쉬운 웹 응용 프로그램 인터페이스를 사용합니다. Tomcat 은 또한 비즈니스 경쟁사 못지않게 성숙한 관리 도구를 제공합니다. Tomcat 의 admin 웹 애플리케이션은 4. 1 버전에 처음 등장했는데, 당시 기능에는 관리 컨텍스트, 데이터 소스, 사용자 및 그룹이 포함되어 있었습니다. 물론 초기화 매개변수, 사용자, 그룹, 롤 등 다양한 데이터베이스 관리도 관리할 수 있습니다. 이후 버전에서는 이러한 기능이 크게 확장될 수 있지만 기존 기능은 이미 실용적입니다.
웹 응용 프로그램 관리는 자동 배포 파일 catalina _ base/webapps/admin.xml 에 정의되어 있습니다.
(번역자 참고: CATALINA_BASE 는 Tomcat 설치 디렉토리의 서버 디렉토리입니다.)
이 파일을 편집하여 컨텍스트의 문서 데이터베이스 매개변수가 절대 경로인지 확인해야 합니다. 즉, catalina _ base/webapps/admin.xml 의 경로는 절대 경로입니다. 또는 이 자동 배포 파일을 삭제하고 server.xml 파일에 관리 웹 응용 프로그램의 컨텍스트를 만들 수도 있습니다. Admin 웹 응용 프로그램을 관리할 수 없습니다. 즉, catalina _ base/webapps/admin.xml 을 삭제하는 것 외에는 아무것도 할 수 없을 수도 있습니다.
UserDatabaseRealm (기본값) 을 사용하는 경우 catalina _ base/conf/Tomcat-users.xml 파일에 사용자와 롤을 추가해야 합니다. 파일을 편집하고 다음과 같이' admin' 이라는 역할을 파일에 추가합니다.
< role name="admin"/ >
또한' admin' 역할을 가진 사용자가 필요합니다. 기존 사용자처럼 사용자 추가 (비밀번호를 변경하여 더 안전하게 만들기):
< user name = "admin" password = "deep _ dark _ secret" roles = "admin"/>
이 단계를 완료한 후 Tomcat 을 다시 시작하고/-> 를 방문하십시오
< host name = "www.example.com" appbase = "/home/example/webapp" >
Tomcat 의 server.xml 파일은 처음에는 하나의 가상 호스트만 포함하지만 여러 가상 호스트를 지원하도록 쉽게 확장할 수 있습니다. 앞의 예에서 server.xml 의 간단한 버전이 표시되며 굵게 표시된 부분은 가상 호스트를 추가하는 데 사용됩니다. 각 호스트 요소에는 하나 이상의 컨텍스트 요소가 포함되어야 하며, 그 중 하나는 기본 컨텍스트여야 하며, 기본 컨텍스트의 표시 경로는 비어 있어야 합니다 (예: path= "").
5. 기본 인증을 구성합니다.
컨테이너 관리 인증 방법은 사용자가 보호된 웹 응용 프로그램 자원에 액세스할 때 사용자를 인증하는 방법을 제어합니다. 웹 응용 프로그램이 기본 인증 (기본 매개 변수는 web.xml 파일의 자동 메소드 요소에 설정됨) 을 사용하는 경우 사용자가 보호된 웹 응용 프로그램에 액세스하면 Tomcat 은 HTTP 기본 인증을 통해 사용자에게 사용자 이름과 암호를 묻는 대화 상자를 표시합니다. 이 인증 방법에서는 모든 비밀번호가 64 비트 인코딩 모드로 네트워크를 통해 전송됩니다.
참고: 기본 인증을 사용하는 것은 클라이언트와 서버에서 모두 HTTPS 또는 다른 암호 암호화 방법 (예: 가상 전용 네트워크의 경우) 을 사용하지 않는 한 신뢰할 수 있는 암호화 방법이 없기 때문에 안전하지 않은 것으로 간주됩니다. 추가 암호화 방법이 없으면 네트워크 관리자는 사용자의 비밀번호를 가로채거나 남용할 수 있습니다. 그러나 Tomcat 을 처음 사용하거나 웹 응용 프로그램에서 컨테이너 기반 보안 관리를 테스트하려는 경우에도 기본 인증을 쉽게 설정하고 사용할 수 있습니다. 웹 애플리케이션의 web.xml 파일에 < < security-constraint > > 및 < < login-config > > 를 추가하고 적절한 < < role > > 및 > 을 추가하기만 하면 됩니다
다음 예에서 web.xml 은 회원 디렉토리만 보호되고 기본 인증을 통해 인증되는 클럽 회원 웹 사이트 시스템에서 가져온 것입니다. 이 방법은 효과적으로 교체됩니다. Apache 웹 서버의 htaccess 파일입니다.
다음을 정의하여 회원별 지역을 정의합니다
이 응용 프로그램에 대한 보안 제약 조건 및
원하는 하위 디렉토리 (URL) 에 매핑합니다
제약할 수 있습니다.
->
전체 응용 프로그램
< URL 모드 > /members/*
회원
기본
< realm-name > 내 클럽 회원 전용 구역
6. 단일 사인온을 구성합니다.
영역과 인증 방법이 설정되면 실제 사용자 로그인 처리가 필요합니다. 일반적으로 사용자 로그인 시스템은 번거로운 일이므로 사용자 로그인 인증 횟수를 최소화해야 합니다. 기본적으로 사용자가 보호된 자원을 처음 요청할 때 각 웹 응용 프로그램은 사용자가 로그인해야 합니다. 여러 웹 응용 프로그램을 실행하고 각 응용 프로그램에 별도의 사용자 인증이 필요한 경우 사용자와 싸우고 있는 것처럼 보입니다. 사용자들은 여러 개의 개별 애플리케이션을 하나의 시스템에 통합하는 방법을 모르기 때문에 얼마나 많은 애플리케이션을 액세스해야 하는지 알 수 없지만, 왜 계속 로그인해야 하는지 의아해합니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 컴퓨터명언)
Tomcat 4 의 SSO (single sign-on) 기능을 통해 사용자는 동일한 가상 호스트 아래의 모든 웹 어플리케이션에 한 번만 로그인할 수 있습니다. 이 기능을 사용하려면 다음과 같이 호스트에 단일 사인온 밸브 요소를 추가하기만 하면 됩니다.
< valve classname = "org.apache.catalina.authenticator.singlesignon"
디버그 = "0"/>
Tomcat 을 처음 설치한 후 server.xml 의 주석에 SingleSignOn Valve 구성의 예가 포함되어 있어 주석만 제거하면 사용할 수 있습니다. 따라서 한 사용자가 애플리케이션에 로그인하면 동일한 가상 호스트 아래의 모든 애플리케이션에도 동일하게 적용됩니다.
싱글 사인온 밸브 사용에는 몇 가지 중요한 제한 사항이 있습니다.
1 > 값은 단일 지점 인증 (context 요소로 정의되어야 함) 이 필요한 모든 웹 애플리케이션이 동일한 호스트 요소 내에 구성 및 중첩되어야 합니다.
2 > * * * 사용자 정보가 포함된 영역은 동일한 수준의 호스트 또는 외부에 중첩되어야 합니다.
3 > 컨텍스트의 영역으로 덮어쓸 수 없습니다.
4 > SSO (single sign-on) 를 사용하는 웹 어플리케이션은 맞춤형 인증 방법보다 Tomcat 의 내장 인증 방법 (web.xml 의 < < auth-method > > 에 정의) 을 사용하는 것이 좋습니다. Tomcat 의 내장 인증 방법에는 기본, 요약, 양식 및 client-cert 가 포함됩니다.
5 > SSO (single sign-on) 를 사용하고 컨테이너 관리 보안 대신 자체 인증 방법을 사용하는 타사 웹 애플리케이션을 웹 사이트에 통합하려는 경우 거의 선택의 여지가 없습니다. 사용자는 모든 원래 응용 프로그램에 로그인 할 때마다 한 번 로그인 해야 하며, 새로운 타사 응용 프로그램을 요청할 때 다시 로그인 해야 합니다. 물론, 이 제 3 자 웹 앱의 소스 코드를 가지고 있고 프로그래머라면 수정할 수 있지만, 그렇게 하는 것은 좋지 않을 것이다. (빌 게이츠, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머, 프로그래머)
6 > 싱글 사인온에는 쿠키가 필요합니다.
7. 사용자 정의 사용자 디렉토리를 구성합니다.
일부 웹 사이트에서는 개별 사용자가 서버에 웹 페이지를 게시할 수 있습니다. 예를 들어, 대학의 대학은 각 학생에게 공용 영역을 제공하고자 할 수도 있고, ISP 는 가상 호스트가 아닌 고객에게 웹 공간을 제공하고자 할 수도 있습니다. 이 경우 일반적인 방법은 사용자 이름 앞에 특수 문자 (~) 를 각 사용자의 URL 로 추가하는 것입니다. 예를 들면 다음과 같습니다.
/~ 사용자 이름
Tomcat 는 호스트에서 이러한 개인 웹 사이트를 매핑하는 두 가지 방법을 제공합니다. 주로 특수한 리스너 요소 쌍을 사용합니다. Listener 의 className 속성은 org.apache.catalina.startup.userconfig 여야 하며 userClass 속성은 여러 매핑 클래스 중 하나여야 합니다. 시스템이 Unix 인 경우 표준 /etc/passwd 파일이 있습니다. Tomcat 을 실행하면 이 파일의 계정을 쉽게 읽을 수 있습니다. 이 파일은 사용자의 홈 디렉토리를 지정하고 PasswdUserDatabase 를 사용하여 클래스를 매핑합니다.
< listener classname = "org.apache.catalina.startup.userconfig"
디렉토리 이름 = "public _ html"
User class = "org.apache.catalina.startup.passwd user database"/>
웹 파일은 /home/users/ian/public_html 또는 /users/JB ritain/public _ html 과 같은 디렉토리에 있어야 합니다. 물론 public_html 을 다른 하위 디렉토리로 변경할 수도 있습니다.
실제로 이 사용자 디렉토리는 사용자의 홈 디렉토리에 있을 필요가 없습니다. 비밀번호 파일은 없지만 사용자 이름을 공용 디렉토리 (예: /home) 의 하위 디렉토리에 매핑하려면 HomesUserDatabase 클래스를 사용합니다.
< listener classname = "org.apache.catalina.startup.userconfig"
Directory name = "public _ html" homebase = "/home"
User class = "org.apache.catalina.startup.homes user database"/>
이렇게 하면 웹 파일이 /home/ian/public_html 또는 /home/jasonb/public_html 과 같은 디렉토리에 있을 수 있습니다. 이 형식은 Windows 에 더 유리하며 c:\home 과 같은 디렉토리를 사용할 수 있습니다.
이러한 리스너 요소는 모두 호스트 자체에 적용되기 때문에 context 요소가 아닌 Host 요소 안에 있어야 합니다.
8. Tomcat 에서 CGI 스크립트 사용
Tomcat 은 주로 서블릿/JSP 컨테이너로 사용되지만 기존 웹 서버의 많은 속성도 가지고 있습니다. 그 중 하나는 CGI (common gateway interface) 를 지원하는 것입니다. CGI 는 브라우저 요청에 응답할 때 몇 가지 확장 기능을 실행할 수 있는 방법을 제공합니다. CGI 는 Perl, Python, awk, Unix 셸 스크립트, 심지어 Java 를 포함한 대부분의 프로그램이나 스크립트에서 호출할 수 있기 때문에 일반적이라고 합니다. 물론, 당신은 자바 앱을 CGI 로 운영하지 않을 것입니다. 결국 태원이 시작되었기 때문입니다. (데이비드 아셀, Northern Exposure (미국 Java 드라마), 남녀명언) 일반적으로 개발 서블릿은 항상 CGI 보다 효율적입니다. 사용자가 링크나 버튼을 클릭할 때 운영 체제 계층부터 처리할 필요가 없기 때문입니다.
Tomcat 에는 레거시 CGI 스크립트를 실행할 수 있는 CGI 서브렛 (옵션) 이 포함되어 있습니다.
Tomcat 이 CGI 를 실행하도록 하려면 다음을 수행해야 합니다.
1.Renametojar (catalina _ home/server/lib/directory 아래) 의 이름이 servlets-cgi 로 바뀌어 CGI 의 rerectory 를 처리합니다
2. Tomcat 의 CATALINA_BASE/conf/web.xml 파일에서 < < servlet-name> CGI 섹션에 대한 주석을 삭제합니다 (기본적으로 24/ko 에 있음)
3. 마찬가지로 Tomcat 의 CATALINA_BASE/conf/web.xml 파일에서 CGI 를 매핑하는 단락에 대한 주석을 삭제합니다 (기본적으로 이 단락은 299 행에 있음). 이 섹션에서는 CGI 스크립트의 HTML 링크에 액세스하는 방법을 지정합니다.
4. CGI 스크립트를 WEB-INF/cgi 디렉토리에 배치하거나 (WEB-INF 는 보안상의 이유로 사용자에게 보이거나 노출되지 않으려는 일부 파일을 여기에 놓을 수 있음) CGI 스크립트를 컨텍스트 아래의 다른 디렉토리에 배치하여 CGI 서블릿의 초기화 매개 변수를 조정할 수 있습니다. 이 위치는 지정된 CGI 서블릿의 실제 위치이며 이전 단계에서 지정한 URL 과 이름이 같을 수 없습니다.
5. Tomcat 을 다시 시작하면 CGI 를 실행할 수 있습니다.
Tomcat 에서 CGI 프로그램은 기본적으로 WEB-INF/cgi 디렉토리에 배치됩니다. 앞서 언급했듯이 WEB-INF 디렉토리는 보호되며, 그 내용은 클라이언트의 브라우저를 통해 스누핑할 수 없으므로 암호나 기타 중요한 정보가 포함된 CGI 스크립트를 배치할 수 있는 좋은 장소입니다. 다른 서버와 호환되기 위해 기존의 /cgi-bin 디렉토리에 CGI 스크립트를 저장할 수도 있지만 이러한 디렉토리에 있는 파일은 호기심 많은 인터넷 사용자들이 볼 수 있다는 것을 알아야 합니다. 또한 Unix 에서는 Tomcat 을 실행하는 사용자에게 CGI 스크립트를 실행할 수 있는 권한이 있는지 확인합니다.
9. Tomcat 에서 JSP 컴파일러를 변경합니다.
Tomcat 4. 1 (또는 이후 버전) 에서 JSP 컴파일은 Tomcat 에 포함된 Ant 프로그램 컨트롤러에 의해 직접 수행됩니다. 이상하게 들릴지 모르지만, 이것은 Ant 의도의 일부이다. 개발자가 새 JVM 을 시작하지 않고도 Ant 를 사용하도록 안내할 수 있는 API 문서가 있습니다. 이것은 Ant 를 사용한 자바 개발의 큰 장점이다. 또한 이제 Ant 에서 javac 이 지원하는 모든 컴파일 방법을 사용할 수 있습니다. 아파치 앤 (Apache Ant) 사용 설명서 javac 페이지 목록입니다. < < init-param > > 요소에 "compiler" 라는 이름만 정의하면 되고 값에 컴파일을 지원하는 컴파일러 이름이 있기 때문에 사용하기 쉽습니다. 예를 들면 다음과 같습니다.
< 서블릿 >
< servlet-name>jsp
< 서블릿 클래스 >
Org.apache.jasper.servlet.jsp 서블릿
< param-name > logverbositoylevel
< param-value > 경고
< param-name > 컴파일러
< param-value>jikes
3
물론 지정된 컴파일러는 시스템에 설치해야 하며 선택한 컴파일러에 따라 클래스 경로를 설정해야 할 수 있습니다.
10. 특정 호스트에 대한 액세스를 제한합니다.
경우에 따라 Tomcat 웹 어플리케이션에 대한 액세스를 제한할 수 있습니다. 예를 들어 지정한 호스트 또는 IP 주소만 어플리케이션에 액세스할 수 있도록 할 수 있습니다. 이렇게 하면 지정된 클라이언트만 서비스 컨텐츠에 액세스할 수 있습니다. 이 효과를 얻기 위해 Tomcat 은 RemoteHostValve 와 RemoteAddrValve 의 두 가지 매개변수를 제공합니다.
이 두 매개변수를 구성하면 요청에서 호스트나 IP 주소를 필터링하고 어떤 호스트 /IP 를 허용하거나 거부할 수 있습니다. 마찬가지로 Apache 의 httpd 파일에 있는 각 디렉토리에는 allow/deny 사양이 있습니다.
예를 들어, 다음과 같이 로컬 액세스만 허용하도록 관리 웹 응용 프로그램을 설정할 수 있습니다.
< valve class name = "org.apache.catalina.valves.remote addr valve"
Allow = "127.0.0.1"deny = ""/>
허용된 호스트를 지정하지 않으면 거부된 호스트와 일치하는 호스트는 거부되고 다른 호스트는 허용됩니다. 마찬가지로 거부된 호스트를 지정하지 않으면 허용된 호스트와 일치하는 호스트가 허용되고 다른 모든 호스트는 거부됩니다.