2009-02-24 8 views
9

실행중인 Tomcat에 웹 응용 프로그램을 배포하는 데 대한 몇 가지 모범 사례를 수집하고 싶습니다. 얼마 전에 웹 응용 프로그램의 배포 프로세스를 설명해야했으며 프로세스가 다소 혼란스러워 보였습니다.실행중인 Tomcat에 웹 응용 프로그램 배포

우리는 WAR 파일 (foo.war)에 올바르게 구성되었으므로 추가 구성이 필요하지 않습니다. 이 경우 배포 프로세스는 비교적 간단합니다.

  • foo.war 파일을 $ CATALINA_HOME/webapps 디렉토리에 복사합니다. 응용 프로그램이 올바르게 시작되면 응용 프로그램은 $ CATALINA_HOME/webapps/foo 디렉토리에 자동으로 배포됩니다.

응용 프로그램을 배포 해제하려면

  • 는 $ CATALINA_HOME/웹 어플리케이션에서하던 foo.war 파일을 제거합니다. 응용 프로그램이 올바르게 언로드되면 언로드되고 $ CATALINA_HOME/webapps/foo가 제거됩니다.

이제 실행중인 응용 프로그램에서 일부 컨텍스트 매개 변수를 무시하고 싶습니다. docs을 읽으면서, 모두 내가 수행해야합니다

  1. 복사는 $ CATALINA_BASE/conf의에 파일/[enginename]/[호스트 이름]/디렉토리 foo.xml라는의 context.xml 파일을 만듭니다.

불행히도, 작동하지 않았습니다. 응용 프로그램이 다시 시작되지 않습니다. 경험적으로, 유일한 해결책은 전쟁 파일이 $ CATALINA_HOME/webapps 외부의 위치에 배포되는 경우입니다. 또한 외부에 context.xml이있는 경우 WAR 파일의 context.xml을 읽지 않으므로 WAR 파일의 구성 가능한 컨텍스트 매개 변수의 기본값을 web.xml에 지정해야합니다.

<?xml version='1.0' encoding='utf-8'?>       
<Context docBase="/path-to-deployment-directory/foo.war"> 
    <Parameter name="myparam" value="newvalue" override="false"/> 
</Context> 

것은 당신이 'NEWVALUE'는 WAR의 web.xml에 지정된 값을 대체 할 경우 매개 변수에 대한 잘못된 재정을 = 지정해야합니다 : 여기

는 foo.xml의 쉬운 예입니다 . 이것은 우리에게 분명하지 않았습니다.

따라서

, 실행중인 톰캣에 aplication를 배포합니다 :

  1. 복사는 $ CATALINA_BASE/conf의에 파일/[enginename]/[호스트 이름 foo.xml라는의 context.xml 파일을 만듭니다 ]/디렉토리.
  2. foo.war을 foo.xml의 docBase에 지정된 위치로 복사하십시오. 응용 프로그램이 자동으로 배포됩니다.

적용 할 수있는 새로운 컨텍스트 매개 변수 :

  • foo.xml에 매개 변수 값을 추가하고 파일을 저장합니다; 응용 프로그램이 자동으로 다시 배포됩니다.

응용 프로그램을 배포 해제하려면

  • 는 $ CATALINA_BASE/conf의/[enginename]/[호스트 이름]/디렉토리 foo는 제거하는 것이

주에서 foo.xml를 제거합니다. war도 작동하지만 foo.xml도 제거합니다. 지금까지


, 나는 다음과 같은 질문을했다 :

  1. IT는 바람둥이를 중지하지 않고 웹 응용 프로그램을 배포하는 모든 모범 사례 A는? 사람들이 별도의 바람둥이에서 각 응용 프로그램을 실행하기 때문에 실행중인 바람둥이로의 배포가 필요 없다는 의견을 들었습니다.
  2. WAR 파일을 $ CATALINA_HOME/webapps에 복사하는 것이 좋습니까? 그렇지 않으면 별도의 위치에 보관하는 것이 좋습니다.
  3. $ CATALINA_HOME/webapps에 배포 된 응용 프로그램을 구성하는 방법
  4. 응용 프로그램을 배포하는 데 catalina.out에 INFO 줄이없고 배포 해제 용으로 하나가있는 이유는 무엇입니까? 구성 가능합니까?

답변

0

한 가지 해결책은 관리자 응용 프로그램을 사용하는 것입니다. 당신이 그것을 사용하는 것이 안전 결정하는 경우에, 당신은 쉽게 배포 시작, 응용 프로그램을 중지 및 배포 취소 할 수 있습니다

http://localhost:8080/manager/deploy?path=[context_path] http://localhost:8080/manager/start?path=[context_path] http://localhost:8080/manager/stop?path=[context_path] http://localhost:8080/manager/undeploy?path=[context_path]

이 당신을 도울 수 개미 작업이 있습니다.

나는 추측하고 있지만, 응용 프로그램을 중지하고 시작하면 context.xml을 다시 읽게됩니다.

두 번째 질문에 대해서는 warapps 파일을 webapps 디렉토리에 보관하는 것이 유지 관리상의 이유로 더 좋습니다.

1

질문에 (1), Tomcat은 서블릿을 실행중인 서버에 배포하는 데 적합합니다. 걱정거리가있을 수 있습니다. 보안 또는 가능한 경우 D.O.S. 또는 별도의 서버 인스턴스가 필요한 이유를 프로비저닝하십시오.

어느 방법 으로든 유연성을 가질 수 있지만 이미 실행중인 서버에 배포하는 것이 더 편리합니다. 이것은 서블릿 아키텍처의 빌트인 기능입니다. :)

(2)의 경우 다시 WAR를 넣으려는 귀하의 재량에 달려 있습니다. 이미 비표준 (기본이 아닌 기본값) 방식으로 구성한 것처럼 들립니다. server.xml 파일에서 서버 인스턴스의 설정을 확인하십시오. unpackWARsautoDeploy과 같은 속성을 확인하십시오.

(3) 및 (4)와 (1,2) 질문에 대해서는 Tomcat 문서의 배포 모델에서 Tomcat 버전을 확인하는 것이 좋습니다. 동일한 문서를 사용하여 서버 구성 방법을 파악할 수 있어야합니다.

톰캣 설명서에서 Tomcat Web Application Deployment을 참조하십시오. 톰캣 버전에 맞게 조정하십시오.

관련 문제