ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Failed to deploy - 젠킨스 톰캣 서버 배포 중 err_connection_reset
    웹프로그래밍/Docker , CI&CD 2019. 1. 10. 16:18

    AWS EC2 인스턴스에 Docker로 가상환경을 구성했다.

    컨테이너로 톰캣8과 젠킨스를 구동하여 자동배포 환경을 만드려고 했다.

    그런데 젠킨스에서 빌드까지 성공하지만 톰캣 서버 배포에 계속 실패 했다.


    젠킨스 에러로그

    ※원래 프로젝트 이름을 '프로젝트'로 대체했다.

    ERROR: Build step failed with exception
    org.codehaus.cargo.container.ContainerException: Failed to deploy [/var/jenkins_home/workspace/프로젝트/target/프로젝트.war]
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:106) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117) at hudson.FilePath.act(FilePath.java:1078) at hudson.FilePath.act(FilePath.java:1061) at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690) at hudson.model.Build$BuildExecution.post2(Build.java:186) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635) at hudson.model.Run.execute(Run.java:1835) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path [/프로젝트] but context failed to start
    " instead of the expected "OK" message at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:715) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:761) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:312) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101) ... 18 more org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path [/프로젝트] but context failed to start


    에러 로그를 봐서는 원인을 파악하기 힘들었다. 

    혹시 war 파일에 문제가 있진 않을까 싶어서 톰캣 관리자 페이지에서 war 파일을 직접 업로드를 시도했다.

    그런데 아래와 같은 메시지가 웹브라우저에 출력된다.



    사이트에 연결할 수 없음

    연결이 재설정되었습니다.



    구글에 err_connection_reset를 검색해보니 war 파일 용량이 업로드 제한 용량을 초과해서 그렇단다.

    톰캣 경로에 log 파일을 뒤져서 에러 내용을 확인해보았다.



     SEVERE [http-nio-8080-exec-5] org.apache.catalina.core.ApplicationContext.log HTMLManager: FAIL - Deploy Upload Failed, Exception: [org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededExceptio$

     java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (129872269) exceeds the configured maximum (52428800)



    역시나 업로드 사이즈를 초과했음을 알려준다. 웹 브라우저에서 err_connection_reset 메시지가 출력되는 다른 경우가 많을텐데

    이렇게 한번에 찾게 되다니..구글 검색 엔진 능력에 감탄한다.

    사실 구글 검색 전에 톰캣 에러 로그를 먼저 볼 생각을 했어야 하는데 앞으로 그렇게 습관을 들여야겠다.


    SizeLimitExceededException 해결 방법


    톰캣이 설치된 리눅스에서 web.xml 파일을 열어서 적당한 값을 수정해주면 된다. (아래 값은 기본값이다.)

    설정을 마치고 톰캣을 재시작 해준다.

    cd /path/to/tomcat
    vim webapps/manager/WEB-INF/web.xml
    <multipart-config>
       <max-file-size>52428800</max-file-size>
       <max-request-size>52428800</max-request-size>
       <file-size-threshold>0</file-size-threshold>
    </multipart-config>

    출처: increase-tomcat-upload-file-size-limit