Вопрос или проблема
Возникла ошибка при развертывании артефактов на Tomcat из Jenkins.
Может кто-нибудь подсказать, что нужно изменить в tomcat-users.xml и context.xml?
Ниже приведена ошибка,
ОШИБКА: Этап сборки завершился неудачно с исключением
org.codehaus.cargo.container.ContainerException: Не удалось повторно развернуть
[/var/lib/jenkins/workspace/taxi-booking-app/taxi-booking/target/taxi-booking-1.0.1.war]
в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176)
в PluginClassLoader для
deploy//hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81)
в PluginClassLoader для
deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167)
в PluginClassLoader для
deploy//hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136)
в hudson.FilePath.act(FilePath.java:1235) в
hudson.FilePath.act(FilePath.java:1218) в PluginClassLoader для
deploy//hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133)
в PluginClassLoader для
deploy//hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95)
в PluginClassLoader для
deploy//hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113)
в jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
в
hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)
в hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47)
в
hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)
в
hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:767)
в PluginClassLoader для
maven-plugin//hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1072)
в
hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711)
в hudson.model.Run.execute(Run.java:1917) в PluginClassLoader для
maven-plugin//hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
в
hudson.model.ResourceController.execute(ResourceController.java:101)
в hudson.model.Executor.run(Executor.java:446) Причина:
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:
Предоставленное вами имя пользователя не имеет права использовать текстовый
менеджер Tomcat (ошибка 403) в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:710)
в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882)
в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895)
в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161)
… 19 других Причина: java.io.IOException: Сервер вернул код ответа HTTP
403 для URL:
http://13.232.70.117:8080/manager/text/list в
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1945)
в
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1541)
в PluginClassLoader для
deploy//org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:577)
… 22 других
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:
Предоставленное вами имя пользователя не имеет права использовать текстовый
менеджер Tomcat (ошибка 403)
Спасибо,
Пиюш
Ответ или решение
Ошибка 403 при развертывании WAR-файла на Tomcat указывает на то, что ваши учетные данные не имеют достаточных прав для работы с текстовым интерфейсом менеджера Tomcat. Это может произойти из-за неправильных настроек в файлах tomcat-users.xml
и context.xml
.
Вот шаги, которые необходимо выполнить, чтобы решить эту проблему:
1. Настройка файла tomcat-users.xml
Файл tomcat-users.xml
находится в каталоге conf
вашего экземпляра Tomcat. Вам нужно открыть его и добавить или изменить учетную запись пользователя, чтобы убедиться, что у него есть соответствующие роли для доступа к менеджеру.
Пример:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="your_password" roles="manager-gui,manager-script"/>
</tomcat-users>
В этом примере мы создаем пользователя с именем admin
и паролем your_password
, которому назначены роли manager-gui
и manager-script
. Убедитесь, что пароль сложный и соответствует требованиям безопасности.
2. Проверка файла context.xml
Убедитесь, что настройки в файле context.xml
(расположенном в conf
или в директории вашего веб-приложения) не блокируют доступ к менеджеру. Обычно, специфических для менеджера настроек в этом файле нет, но в некоторых случаях могут быть заданные ограничения, зависящие от вашей конфигурации.
В большинстве случаев, по умолчанию, файл context.xml
не мешает доступу к менеджеру, но если у вас были изменения, убедитесь, что ничего не препятствует доступу.
3. Перезапуск Tomcat
После внесения изменений в файл tomcat-users.xml
, перезапустите сервер Tomcat, чтобы настройки вступили в силу. Вы можете сделать это с помощью следующих команд:
# Для систем на базе Unix
$ sudo systemctl restart tomcat
или
# Для Windows
# Откройте службу Tomcat через меню "Службы" (Services) и перезапустите её.
4. Проверка конфигурации Jenkins
Также убедитесь, что в Jenkins вы используете правильные учетные данные для доступа к Tomcat. Проверьте настройки развертывания, чтобы убедиться, что имя пользователя и пароль совпадают с теми, что вы задали в tomcat-users.xml
.
5. Тестирование доступа
После внесения изменений и перезапуска попробуйте выполнить снова развертывание через Jenkins. Если ошибка сохраняется, попробуйте зайти на сервер Tomcat через браузер, используя URL:
http://<ваш_IP>:8080/manager/text/list
Используйте те же учетные данные для проверки доступа. Если вы видите ошибку 403, проверьте еще раз настройки и роли пользователя.
Заключение
Если после выполнения всех вышеуказанных шагов проблема не решится, возможно, есть другие ограничения в конфигурации сети или брандмауэра. Убедитесь, что ваш сервер доступен приложению Jenkins и что нет никаких сетевых или программных блокировок.
Если у вас остаются трудности, пожалуйста, предоставьте дополнительные детали о конфигурации, и я постараюсь помочь вам более детально.