J'ai un environnement compatible PCI DSS qui exécute plusieurs applications et je veux redémarrer une seule application sans redémarrer le serveur. Je n'ai pas le gestionnaire car apparemment ce n'est pas autorisé dans cet environnement.
Comment puis-je redémarrer une seule application Web via la ligne de commande?
Je sais que je suis en retard à la fête, mais une petite astuce que vous pouvez faire pour recharger l'application à partir de la ligne de commande est d'aller sur le web.xml de l'application et de simplement la toucher.
touch web.xml
Tomcat recharge l'application à chaque fois qu'il remarque un changement sur ce fichier, si vous le touchez simplement, vous ne modifiez pas réellement le fichier, juste l'horodatage.
Voici comment je le fais:
${Tomcat}/conf/Tomcat-users.xml
:<user username="admin" password="secret" roles="manager-gui,manager-script"/>
Sinon, vous obtiendrez une erreur 403 en raison de la protection contre la falsification des demandes intersites (CSRF).
Utilisez curl
ou tout autre outil de ligne de commande que vous souhaitez pour récupérer l'URl <yourserver>/manager/text/reload?path=/<context_path>
:
curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath
Sans accès à l'application gestionnaire, vous ne pouvez pas le faire. Si vous pouvez accéder à l'application gestionnaire et que vous souhaitez toujours utiliser la ligne de commande au lieu de votre navigateur Web, vous pouvez essayer ceci script de ligne de commande pour gérer Tomcat appelé Tomcat-manager. Il nécessite Python, mais vous permet de faire des choses à partir d'un shell Unix comme:
$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ reload /myapp
et:
$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
les travaux changent le nom de app.war en temp app.war.bkp (n'importe quel nom pour la sauvegarde), puis lorsque Tomcat supprime le dossier source de webapp, changez le nom de .bkp en nom d'origine. cela ne fonctionne que pour l'utilisateur d'accès à la console.
Malheureusement, je ne pense pas qu'il existe un moyen de le faire à partir de la ligne de commande. Au lieu de cela, je recommanderais de voir s'il existe un moyen d'héberger la seule application dont vous avez besoin pour redémarrer dans une instance distincte de Tomcat afin de pouvoir redémarrer cette instance sans affecter les autres applications.