루트 응용 프로그램을 변경하는 방법?


130

Tomcat 6 웹 서버의 기본 응용 프로그램을 "ROOT"(webapps 폴더 내부)와 다른 응용 프로그램으로 변경하려고합니다. 가장 좋은 방법은 무엇입니까?

답변:


129

세 가지 방법이 있습니다.

  • 먼저 해당 bin디렉토리 ( sh shutdown.sh) 에서 Tomcat을 종료하십시오 . 그런 다음 Tomcat webapps폴더 의 모든 내용을 삭제하십시오 ( rm -fr *). 그런 다음 WAR 파일의 이름을로 바꾸고 ROOT.war마지막으로 bin디렉토리 ( sh startup.sh) 에서 Tomcat을 시작하십시오 .

  • 전쟁 파일을 $CATALINA_BASE/webapps원래 이름으로 두십시오 . 해제 autoDeploydeployOnStartup을 에 호스트 요소에 server.xml파일. 경로docBase 속성을 server.xml모두 지정하여의 모든 애플리케이션 컨텍스트를 명시 적으로 정의하십시오 . 모든 Tomcat 자동 배포 메커니즘을 비활성화했기 때문에이 작업을 수행해야합니다. Tomcat은에서 컨텍스트를 찾지 않으면 더 이상 애플리케이션을 배포하지 않습니다 .server.xml

    두 번째 방법 : 응용 프로그램을 변경하려면 Tomcat을 중지했다가 다시 시작해야합니다.

  • WAR 파일을 외부에 두십시오 $CATALINA_BASE/webapps(이중 배치를 방지하려면 외부에 있어야 함). 에 이름이 지정된 컨텍스트 파일 ROOT.xml을 배치하십시오 $CATALINA_BASE/conf/. 이 컨텍스트 파일의 단일 요소에는 WAR 파일의 위치를 ​​가리키는 docBase 속성 이 있어야 합니다. 경로 요소는 설정하지 않아야합니다 . .xml이 경우 파일 이름에서 파생됩니다 ROOT.xml. 자세한 내용은 컨텍스트 컨테이너 설명서를 참조 하십시오.

참고


4
첫 번째 방법을 시도했지만 작동합니다! Bdw-모든 것을 삭제할 필요는 없습니다. 방금 ROOT 폴더를 삭제하고 내 전쟁의 이름을 ROOT.war로 바꾸 었으며 매력처럼 작동합니다.
hostnik

나는 그것이 실제로 sof 규칙을 따르지 않지만 그것을 조이는 것을 알고 있습니다 ..... 감사합니다! 한 번 이상 공표 할 수 있기를 바랍니다. 매우 도움이되었습니다. BTW, 내가 했다 ,이 일 것 전에 바람둥이 @hostnik를 다시 시작합니다.
험악한 페이스트리

@ danny-london의 세 번째 방법은 Tomcat 7에서 작동하지 않지만 ROOT.xml 파일을 $CATALINA_BASE/conf/[enginename]/[hostname]디렉토리 에 배치하면 작동합니다 (기본 설정은 $CATALINA_HOME/conf/Catalina/localhost). 컨텍스트 컨테이너 문서를 참조하십시오 .
Michael Scheper 2016 년

Tomcat 시작에 대한 현대적인 대안 : 버전 번호를 나타내는 sudo systemctl start tomcatxx
EarthMind

24

Tomcat 6 <Context><Host>태그에 태그를 추가 server.xml하면 문제가 해결됩니다.

당신이 사용하는 경우 path=""비워 당신은 같은 URL을 사용할 수 있습니다 http://localhost/first.do.

컨텍스트 태그 세트 속성 docBase="E:\struts-ITRCbook\myStrutsbook"reloadable="true"에서 컨텍스트 태그를 종료하십시오.

다음과 같이 보일 것입니다 :

<Host name="localhost"  appBase="webapps" 
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
    </Context>
</Host>

이것은 바람둥이 7에도 해당됩니까?
Marcy Sutton

4
설명서에 따라 : Tomcat 6의 경우 Tomcat 4.x와 달리 <Context> 요소를 server.xml 파일에 직접 배치하지 않는 것이 좋습니다. Tomcat을 다시 시작하지 않고 기본 conf / server.xml 파일을 다시로드 할 수 없으므로 컨텍스트 구성 수정이 더 침습적이기 때문입니다.

이 접근 방식에 부작용이 있음을 알리십시오! myStrutsbook은 localhost : 8080에 대해 한 번, localhost : 8080 / myStrutsbook에 대해 한 번 두 번 배포됩니다! 데이터베이스 연결 오류 및 더 많은 리소스 사용을 유발할 수 있습니다
Ali.Mojtehedy

24

이러한 변경 사항이있는 Tomcat 7에서는 myAPPat /and ROOTat 에 액세스 할 수 있습니다 ./ROOT

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

<Host>server.xml 의 섹션에 위의 추가


내가 찾던 솔루션 만! 고마워요, Sudheer! 나를 위해 매력처럼 작동합니다. 그리고 이봐! 다른 질문이 있습니다. ROOT를 통해 액세스하고 /ROOT올바른 자격 증명을 사용하여 Manager 페이지에 로그인하려고하면 액세스가 거부됩니다. 이 문제를 해결하는 방법을 알고 있습니까?
Saturnian

@ Sudyheer Palyam 나는 똑같이했다. server.xml 파일을 변경 한 후 서버를 시작했습니다. 그러나 localhost : 8080을로드 / 방문했을 때 404 상태 오류가 표시되었습니다. server.xml에서이 줄을 삭제하면 위의 포트가로드됩니다.
Sachin Kumar

16

루트 기본 응용 프로그램은 일반적으로 Tomcat Manager입니다.

그래서 앱을 루트로 만들고 TCmgr을 유지하는 방식은 다음과 같습니다.

ROOT의 이름을 다른 것으로 변경

mv ROOT TCmgr

그런 다음 ROOT가 앱을 가리키는 심볼릭 링크를 만들었습니다.

ln -s <your app> ROOT

나를 위해 일했고 가장 쉬운 접근법처럼 보였습니다.


@Vic은 옳지 만 Windows에는 기호 링크가 있지만 XP 이상에서는 mklink를 사용할 수 있다고 생각합니다. 이 작업을 수행하지 않았으며 심볼릭 링크를 사용하지 않는 다른 이유가 있습니다.
MichaelStoner

12

Apache Tomcat 문서에 따르면 ROOT.xml 파일을 작성하여 애플리케이션을 변경할 수 있습니다. 자세한 내용은 다음을 참조하십시오.

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

"기본 웹 응용 프로그램은 ROOT.xml이라는 파일을 사용하여 정의 할 수 있습니다."


12

다음과 같이 약간 해킹 방식 으로이 작업을 수행 할 수 있습니다.

  1. 톰캣 중지
  2. ROOT.war를 옆으로 이동하고 rm -rf webapps / ROOT
  3. webapps / ROOT.war에 복사하려는 웹앱을 복사하십시오.
  4. Tomcat 시작

2
추악하거나 어색한 것이지만 해키는 공식 / 지원되는 방법 인 것처럼 보이기 때문에 잘못된 용어 일 수 있습니다.
Brian Knoblauch

3

다른 해결책은 원하는 기본 웹 애플리케이션으로 리디렉션을 전송하고 해당 서블릿을 ROOT 웹 애플리케이션의 모든 URL에 맵핑하는 서블릿을 작성하는 것입니다.

package com.example.servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RedirectServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.sendRedirect("/myRootWebapp");
  }
}

위의 클래스를에 추가하십시오
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet.
그리고 다음을 추가하십시오
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml.

  <servlet>
    <display-name>Redirect</display-name>
    <servlet-name>Redirect</servlet-name>
    <servlet-class>com.example.servlet.RedirectServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Redirect</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

원하는 경우 소스를 수정하지 않고도 기본 webapp를 설정할 수 있도록 초기화 매개 변수를 허용하도록 RedirectServlet을 쉽게 수정할 수 있습니다.

이 작업을 수행하는 데 부정적인 영향이 있는지 확실하지 않지만 테스트 한 결과 작동하는 것 같습니다.


2

context.xml 구성이 작동하지 않았습니다. Tomcat 6.0.29는 appBase에있는 docBase에 대해 불평합니다. ... Tomcat 5의 경우 실제로 작동했습니다.

따라서 한 가지 해결책은 응용 프로그램을 ROOT 폴더에 넣는 것입니다.

또 다른 매우 간단한 해결책은 다음과 같이 내 응용 프로그램으로 리디렉션하는 index.jsp를 ROOT에 넣는 것입니다. response.sendRedirect ( "/ MyApplicationXy");

안부, 1 월



1

바람둥이 루트 응용 프로그램을 변경하는 궁극적 인 방법. Tomcat 7 및 8에서 테스트되었습니다.

  1. tomcat webapps 디렉토리로 이동하십시오.

    내 컴퓨터의 예 : ~/stack/apache-tomcat/webapps

  2. ROOT 폴더의 이름을 바꾸거나 바꾸거나 삭제하십시오. 내 조언은 이름을 바꾸거나 백업 사본을 만드는 것입니다. 예를 들어 ROOT의 이름을 RENAMED_ROOT로 바꿉니다.

    mv ROOT RENAMED_ROOT

  3. 응용 프로그램과 함께 war 파일을 tomcat webapps 디렉토리 (내 컴퓨터에서 오래된 ROOT 폴더가있는 디렉토리 : ~ / stack / apache-tomcat / webapps)로 이동하십시오.

War 파일의 이름은 ROOT.war 이어야합니다 . 필요한 경우 애플리케이션 이름을 변경하십시오. yourApplicationName.war-> ROOT.war

  1. 바람둥이를 다시 시작하십시오. 다시 시작한 후 응용 프로그램은 루트가됩니다.

0

내 문서를 살펴 보겠습니다. 루트 웹 애플리케이션의 경로를 ROOT (또는 ROOT.war)에서 멀리 변경하도록 구성을 지정하는 방법이 있지만 Tomcat 5와 6 사이에서 변경된 것으로 보입니다.

이것을 찾았습니다 :

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

따라서 루트 경로 (ROOT.xml에서)를 변경하는 것이 가능하지만 약간 손상되었습니다. WAR를 자동 배포 디렉토리 외부로 이동해야합니다. 왜 파일 이름을 ROOT.war로 바꾸는 것이 실행 가능한 해결책이 아닌지 물어보십시오.


1
불행히도 war 파일을 ROOT.war로 변경하는 것은 옵션이 아닙니다. Jacques

조금 늦었지만 ... 나를 위해 파일을 jar 파일에 하드 코딩 한 위치를 가진 타사에서 만든 시스템을 사용하고 있기 때문에 변경할 수 없습니다 .... ROOT.war로 이동 원래 응용 프로그램이 [originalapp.war]에있는 디렉토리에서 자체 jar 파일을 찾기 때문에 문제가 발생합니다
mur

0

좋은 해결책은 아니지만 한 가지 방법은 ROOT 앱에서 YourWebApp로 리디렉션하는 것입니다. 이를 위해 ROOT index.html을 수정해야합니다.

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
    </head>
    <body onLoad="javascript:window.location='YourWebApp';">
    </body>
</html>

또는

<html>
    <head>
        <title>Redirecting to /YourWebApp</title>
        <meta http-equiv="refresh" content="0;url=YourWebApp" />
    </head>
    <body>
    </body>
</html>

참조 : http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html


-4

Tomcat 7 (Windows 서버)에서 구성 파일에 아무것도 추가하거나 편집하지 않았습니다. 방금 ROOT 폴더의 이름을 다른 것으로 바꾸고 내 응용 프로그램 폴더의 이름을 ROOT로 바꾸 었으며 정상적으로 작동했습니다.


1
이것은 좋은 해결 방법 일 수 있지만 Jaques의 질문은 기본 응용 프로그램을 변경하는 방법에 관한 것입니다. ROOT 폴더의 내용을 변경할 수없는 이유가있을 수 있습니다.
JVMATL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.