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


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원래 이름으로 두십시오 . 해제 autoDeploy 및 deployOnStartup을 에 호스트 요소에 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 tomcatx곳x
— 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.