내 응용 프로그램의 war 파일이 있습니다. 루트 수준에서 배포해야합니다. 현재 URL은 http://localhost:8080/war_name/application_name
입니다.
답변
몇 가지 옵션이 있습니다.
-
ROOT/
Tomcat에서 기본 제공 디렉토리를 제거하고ROOT.war
배포 하기 전에 war 파일의 이름을 바꿉니다 . -
(예제에서
war_name.war
와 같이) 전쟁을 전개 하고 war 파일을 사용 하도록 컨텍스트 루트 를 구성conf/server.xml
하십시오.<Context path="" docBase="war_name" debug="0" reloadable="true"></Context>
첫 번째는 더 쉽지만 조금 더 복잡합니다. 두 번째 방법은 아마도 더 우아한 방법 일 것입니다.
답변
Tomcat v.7 (바닐라 설치)
conf / server.xml에서 </Host>
닫는 태그 바로 앞에 파일 끝쪽에 다음 비트를 추가하십시오 .
<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
참고 는 Docbase 속성. 중요한 비트입니다. 루트 웹앱을 변경하기 전에 app_name을 배포했는지 확인하거나 압축을 푼 웹앱 (app_name)을 Tomcat의 webapps 폴더에 복사하면됩니다. 시작, 루트 방문, app_name 참조!
답변
이러한 변경 사항이있는 Tomcat 7의 경우 /에서 myAPP에 액세스하고 / ROOT에서 ROOT에 액세스 할 수 있습니다
<Context path="" docBase="myAPP">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Host>
server.xml 의 섹션에 위의 추가
답변
나는 내 대답이 다른 대답과 겹친다는 것을 알고 있지만 이것은 몇 가지 장점이있는 완벽한 솔루션입니다. 이것은 Tomcat 8에서 작동합니다.
- 기본 응용 프로그램은 루트에서 제공됩니다
- 웹 인터페이스를 통한 war 파일 배포가 유지됩니다.
- 주 응용 프로그램은 포트 80에서 실행되며 관리자 만 관리 폴더에 액세스 할 수 있습니다 (* nix 시스템은 80에 바인딩하기 위해 수퍼 유저가 필요하지만 Windows에서는 문제가되지 않습니다).
즉, Tomcat을 한 번만 다시 시작하면 업데이트 된 war 파일을 문제없이 배포 할 수 있습니다.
1 단계 : server.xml 파일에서 커넥터 항목을 찾아서 다음 항목으로 바꾸십시오.
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2 단계 : <Host ...>
태그 내에 컨텍스트를 정의하십시오 .
<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
webapp 폴더의 모든 앱을 다루었습니다. 첫 번째는 루트와 기본 앱을 효과적으로 전환합니다. ROOT가 켜져 http://example.com/ROOT
있고 기본 응용 프로그램이 켜져 http://example.com/
있습니다. 비밀번호로 보호 된 웹앱에는 privileged="true"
속성이 필요 합니다.
루트와 일치하는 CAS.war 파일을 배포 할 때 배포와 함께 <Context path="/" docBase="CAS">
새로 고치지 않으므로 관리자 패널에서 해당 파일 을 다시로드해야합니다.
<Context path="/CAS" docBase="CAS">
war 파일을 배포하기위한 관리자 옵션을 비활성화하므로 컨텍스트에를 포함하지 마십시오 . 당신은 두 가지 방법으로 응용 프로그램에 액세스 할 수있는이 수단 : http://example.com/
및http://example.com/APP/
3 단계 : 루트 및 관리자 폴더에 대한 원치 않는 액세스를 방지하려면 다음과 valve
같이 컨텍스트 태그에 a 를 추가 하십시오.
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>
이는 기본 포트 8080을 사용할 때 내 도메인 (가짜 IP 주소) 및 로컬 호스트의 사람들에게 관리 웹 응용 프로그램 폴더에 대한 액세스를 제한하고 웹 인터페이스를 통해 war 파일을 동적으로 배포하는 기능을 유지합니다.
다른 IP 주소를 사용하는 여러 앱에이 기능을 사용하려는 경우 커넥터에 IP 주소를 추가 할 수 있습니다 ( address="143.21.2.1"
).
루트에서 여러 웹 앱을 실행하려는 경우 서비스 태그를 복제하고 (두 번째에 다른 이름 사용)의 docbase <Context path="/" docBase="CAS">
를 예를 들어 변경할 수 있습니다 <Context path="/" docBase="ICR">
.
답변
가장 빠른 방법.
-
ROOT 앱이 배포되어 있지 않은지 확인하십시오.
-
전쟁의 이름을 ROOT.war로 바꾸고 배치하면 구성 변경이 필요하지 않습니다.
답변
를 제거하십시오 $CATALINA_HOME/webapps/ROOT
. Update $CATALINA_HOME/conf/server.xml
, Host 요소가 다음 텍스트와 같은지 확인하십시오.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
<Context path="" docBase="myApp"></Context>
Tomcat 8과 함께 작동합니다. Tomcat이 myApp
두 번 배포되지 않도록 autoDeploy 및 deployOnStartup을 false로 설정해야합니다 .
답변
@Rob Hruska의 솔에 추가하면 server.xml의 섹션 내부 설정이 작동합니다.
<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>
참고 : 경우에 따라 override = “true”가 필요할 수 있습니다.