• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

실습3) Tomcat 서버에 배포하기 에러

24.04.01 21:02 작성 조회수 105

0

Windows 11 PC에서 Tomcat 9점대 설치했습니다.

 Windwos 11 IP : ipconfig에서 이더넷 어댑터 이더넷 2: IPv4 주소 복붙

tomcat cmd 실행 후 ipconfig의 IPv4 주소로 tomcat 웹 페이지 접속 성공했습니다.

 

젠킨스 프로젝트 구성 > 빌드 후 조치에 http://[Windows IP]:8088 외 강의 내용을 토대로 입력했습니다

 

1) conf/tomcat-users.xml에서 admin/deployer/tomcat : 롤 수정해서 세팅했고

2) webapps/host-manager/META-INF/context.xml : 해당 부분 주석 처리했습니다.

3) webapps/manager/META-INF/context.xml : 해당 부분 주석처리했습니다.

<<콘솔 출력 내용 일부>>

[INFO] --- maven-war-plugin:3.2.2:war (default-war) @ web ---

[INFO] Packaging webapp

[INFO] Assembling webapp [web] in [/var/jenkins_home/workspace/My-Third-Project/target/hello-world]

[INFO] Processing war project

[INFO] Copying webapp resources [/var/jenkins_home/workspace/My-Third-Project/src/main/webapp]

[INFO] Webapp assembled in [37 msecs]

[INFO] Building war: /var/jenkins_home/workspace/My-Third-Project/target/hello-world.war

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 5.842 s

[INFO] Finished at: 2024-04-01T11:22:14Z

[INFO] ------------------------------------------------------------------------

Waiting for Jenkins to finish collecting data

[JENKINS] Archiving /var/jenkins_home/workspace/My-Third-Project/pom.xml to com.njonecompany.web/web/1.0/web-1.0.pom

[JENKINS] Archiving /var/jenkins_home/workspace/My-Third-Project/target/hello-world.war to com.njonecompany.web/web/1.0/web-1.0.war

channel stopped

[DeployPublisher][INFO] Attempting to deploy 1 war file(s)

[DeployPublisher][INFO] Deploying /var/jenkins_home/workspace/My-Third-Project/target/hello-world.war to container Tomcat 9.x Remote with context null

ERROR: Build step failed with exception

org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/jenkins_home/workspace/My-Third-Project/target/hello-world.war]

at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176)

at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81)

at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167)

at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136)

at hudson.FilePath.act(FilePath.java:1236)

at hudson.FilePath.act(FilePath.java:1219)

at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133)

at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95)

at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113)

at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)

at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)

at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47)

at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)

at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767)

at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072)

at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711)

at hudson.model.Run.execute(Run.java:1918)

at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)

at hudson.model.ResourceController.execute(ResourceController.java:101)

at hudson.model.Executor.run(Executor.java:442)

Caused by: java.net.ConnectException: Connection timed out (Connection timed out)

at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)

at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)

at java.base/java.net.Socket.connect(Unknown Source)

at java.base/java.net.Socket.connect(Unknown Source)

at java.base/sun.net.NetworkClient.doConnect(Unknown Source)

at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)

at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)

at java.base/sun.net.www.http.HttpClient.<init>(Unknown Source)

at java.base/sun.net.www.http.HttpClient.New(Unknown Source)

at java.base/sun.net.www.http.HttpClient.New(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895)

at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161)

... 19 more

java.net.ConnectException: Connection timed out (Connection timed out)

at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)

at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)

at java.base/java.net.Socket.connect(Unknown Source)

at java.base/java.net.Socket.connect(Unknown Source)

at java.base/sun.net.NetworkClient.doConnect(Unknown Source)

at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)

at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)

at java.base/sun.net.www.http.HttpClient.<init>(Unknown Source)

at java.base/sun.net.www.http.HttpClient.New(Unknown Source)

at java.base/sun.net.www.http.HttpClient.New(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)

at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:567)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882)

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895)

at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161)

at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81)

at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167)

at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136)

at hudson.FilePath.act(FilePath.java:1236)

at hudson.FilePath.act(FilePath.java:1219)

at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133)

at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95)

at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113)

at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)

at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)

at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47)

at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)

at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767)

at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072)

at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711)

at hudson.model.Run.execute(Run.java:1918)

at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)

at hudson.model.ResourceController.execute(ResourceController.java:101)

at hudson.model.Executor.run(Executor.java:442)

Build step 'Deploy war/ear to a container' marked build as failure

Finished: FAILURE

답변 2

·

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

테스트 환경) Windows 11 + Tomcat 9.0.65 + jenkins/jenkins:lts-jdk11 (Docker 이미지)

올려주신 로그를 확인해 보면, Connection timed out이 발생하는 것을 봐서, Jenkins에서 Tomcat 서버에 접속이 안되는 것으로 보입니다.

java.net.ConnectException: Connection timed out (Connection timed out)

만약 Tomcat에 배포하기 위한 사용자 계정에 문제가 생기면,

org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username and password you provided are not correct (error 401)

또는 서버 IP 주소에 문제가 생겨 접속이 안되는 거면,

java.net.ConnectException: Connection refused (Connection refused)

위와 같은 에러 케이스가 있는데, Connection timed out이면, 말그대로 Jenkins -> Windows Tomcat으로의 연결에 시간이 올려걸리는 것인지, 접속 자체에 문제 있는 것인지 확인이 필요할 것 같습니다.

우선, Jenkins Container에 Terminal로 접속하시고 curl [Windows IP]:8088 명령어로 확인해 보시고, Jenkins에서 Tomcat 서버로의 접속에 이상이 없는 것을 확인 하신 후에, docker logs jenkins-server 에서 빌드 시 발생하는 오류를 다시 한번 확인해 보시면 좋을 것 같습니다.

jenkins@20a89a7e4f1f:/$ curl 192.168.0.41:8088

Jenkins에서 Tomcat 접속에 이상이 없음을 확인하신 후에, 빌드 후에 발생하는 docker logs 의 내용을 다시 한번 공유해 주시면, 감사드리겠습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.01

안녕하세요, 인프런 AI 인턴입니다.

gyu2528님께서 질문하신 실습3) Tomcat 서버에 배포하기 에러에 대해 답변 드리겠습니다. 님께서 경험하신 Connection timed out 오류는 Jenkins가 Tomcat 서버에 배포를 시도할 때 Tomcat 서버에 연결하지 못하여 발생한 문제입니다. 이 문제는 네트워크 또는 방화벽 설정, Tomcat 서버 설정, Jenkins 설정 중 하나 또는 그 이상에 문제가 있을 때 발생할 수 있습니다.

비슷한 상황을 해결한 질문에 대한 답변을 찾았습니다.
“실습3) Tomcat 서버에 배포하기 질문 있습니다.”에서도 유사한 문제가 논의되었으며, 특히 Tomcat 서버와 젠킨스 간의 연결 문제에 대한 해결 방법이 제시되었습니다.

문제 해결을 위해 다음 단계를 검토하시기 바랍니다:

  1. Tomcat 서버 설정: conf/tomcat-users.xml 파일에서 사용자 및 역할 설정이 정확하게 이루어졌는지 확인합니다. 사용자 권한(예: 매니저 역할)이 배포에 필요한지 확인합니다.
  2. 방화벽 설정: Tomcat 서버와 Jenkins 서버 간 연결을 차단하는 방화벽 규칙이 없는지 확인합니다.
  3. 네트워크 접근성: Tomcat 서버가 올바른 IP 주소와 포트 번호(8088)에서 수신 대기하고 있는지 확인합니다. Jenkins 서버에서 해당 IP 및 포트로 ping 또는 telnet을 통해 연결할 수 있는지 테스트합니다.
  4. Tomcat Manager App 설정: 위의 지침에도 불구하고 문제가 지속되는 경우, Tomcat Manager App 접근 권한 설정을 확인해 보세요. 이 관리자 애플리케이션이 배포 스크립트 또는 Jenkins 플러그인에서 정상적으로 사용될 수 있도록 적절하게 설정되어 있는지 확인합니다.

모든 설정을 정확히 수행했음에도 불구하고 문제가 해결되지 않는 경우, 추가적인 로그 정보 또는 오류 메시지를 제공해주시면 더 구체적인 해결 방안을 제시할 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.