Deployment der Webanwendung auf einem Tomcat Läuft
Ich würde gerne sammeln, einige best-practices bei der Bereitstellung einer web-Anwendung auf einem Tomcat läuft. Vor nicht langer Zeit hatte ich, um zu beschreiben das deployment-Prozesses unserer web-Anwendung und der Prozess schien eher verwirrend.
Sagen, wir haben eine Anwendung in einer war-Datei (foo.Krieg) richtig konfiguriert und benötigt keine zusätzliche Konfiguration. In diesem Fall wird der deployment-Prozess ist ziemlich einfach:
- Kopieren Sie die foo.war-Datei $CATALINA_HOME/webapps Verzeichnis. Wenn die Anwendung korrekt gestartet wird, wird die Anwendung automatisch bereitstellen zu $CATALINA_HOME/webapps/foo-Verzeichnis.
Um die Bereitstellung der Anwendung:
- Entfernen Sie die foo.war-Datei aus dem $CATALINA_HOME/webapps. Wenn die Anwendung entlädt richtig, es wird ausgeladen und die $CATALINA_HOME/webapps/foo entfernt werden.
Nun möchte ich diese überschreiben Kontext-Parameter in meiner Laufenden Anwendung. Nach dem Lesen der docs, alles, was ich tun müssen:
- Erstellen context.xml Datei namens foo.xml
- Kopieren Sie die Datei $CATALINA_BASE/conf/[enginename]/[hostname]/- Verzeichnis.
Leider, das hat nicht funktioniert: würde die Anwendung nicht neu starten. Empirisch fanden wir heraus, dass die einzige funktionierende Lösung ist, wenn die war-Datei bereitgestellt wird, an einen Ort außerhalb der $CATALINA_HOME/webapps.
Außerdem werden die default-Werte der konfigurierbare Kontext-Parameter in der war-Datei sollte angegeben werden, in der web.xml da context.xml in die war-Datei wird nicht gelesen, wenn es eine context.xml außerhalb.
Hier ist ein einfaches Beispiel der foo.xml:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/path-to-deployment-directory/foo.war">
<Parameter name="myparam" value="newvalue" override="false"/>
</Context>
Sicher, dass Sie überschreiben=false für den parameter, wenn Sie möchten die 'newvalue' zu überschreiben, wird der angegebene Wert in der Nachkriegszeit web.xml. Dies war offensichtlich nicht für uns.
So, das bereitstellen einer Anwendung auf einem Tomcat läuft:
- Erstellen context.xml Datei namens foo.xml
- Kopieren Sie die Datei $CATALINA_BASE/conf/[enginename]/[hostname]/- Verzeichnis.
- Kopieren Sie die foo.Krieg an der angegebenen Position in der docBase der foo.xml; die Anwendung wird automatisch bereitstellen.
Anwendung von neuen context-Parameter:
- Fügen Sie die parameter-Werte der foo.xml und speichern Sie die Datei; die Anwendung erneut bereitstellen automatisch.
Um die Bereitstellung der Anwendung:
- Entfernen foo.xml von den $CATALINA_BASE/conf/[enginename]/[hostname]/- Verzeichnis
Beachten Sie, dass das entfernen der foo.Krieg wird auch funktionieren, allerdings wird das entfernen foo.xml wie gut.
Inzwischen habe ich die folgenden Fragen:
- Ist es ein best-practice auf alle zum bereitstellen einer web-Anwendung ohne stoppen des tomcat? Ich habe gehört, eine Meinung, die Bereitstellung einer Laufenden tomcat ist nie gebraucht, da die Menschen führen Sie jede Anwendung in einem separaten tomcat.
- Ist es eine gute Idee zu kopieren war-Dateien nach $CATALINA_HOME/webapps oder Sie sollten besser werden in einem separaten Ort aufbewahrt?
- Wie kann ich die Konfiguration einer Applikation bereitgestellt $CATALINA_HOME/webapps
- Warum gibt es keine INFO-Zeile in der catalina.für die Bereitstellung einer Anwendung und es ist eine für deimplementierung? Ist es konfigurierbar?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf Frage (1), Tomcat funktioniert großartig für das bereitstellen von servlets in einen Laufenden server. Es kann sein Anliegen w.r.t. Sicherheit oder möglicherweise D. O. S. oder die Bereitstellung Gründe, warum Sie separate server-Instanzen.
Haben Sie die Flexibilität, das zu tun, aber es ist oft bequemer für die Bereitstellung auf einem bereits Laufenden server. Dies ist eine INTEGRIERTE Funktion in die servlet-Architektur. 🙂
For (2), wieder ist es in Ihrem Ermessen, wo Sie Sie Kriegen. Es klingt wie Sie bereits haben es konfiguriert ein nicht-standard - (non-Standard soll ich sagen) Weg. Überprüfen Sie Ihre server.xml - Datei für die Einstellungen in den server-Instanz(en). Überprüfen Sie für Attribute wie
unpackWARs
undautoDeploy
.Für (3) und (4) sowie (1,2) Fragen, ist es wahrscheinlich eine gute Idee, konsultieren Sie den Tomcat-docs für Ihre Tomcat-version auf Ihrem deployment-Modell. Sie sollten in der Lage sein, die gleichen docs, um herauszufinden, wie Ihr server konfiguriert wurde.
Sehen Tomcat Web-Application Deployment im Tomcat-Handbuch, anpassen für Ihre Tomcat-version.
Eine Lösung wäre, verwenden Sie die manager-Anwendung. Wenn Sie sich entscheiden, die sicher, es zu benutzen, dann können Sie einfach installieren, starten, stoppen und deinstallieren von Anwendungen:
http://localhost:8080/manager/deploy?path=%5Bcontext_path%5D
http://localhost:8080/manager/start?path=%5Bcontext_path%5D
http://localhost:8080/manager/stop?path=%5Bcontext_path%5D
http://localhost:8080/manager/undeploy?path=%5Bcontext_path%5D
Gibt es ant-tasks, die Ihnen helfen können, mit diesen.
Ich vermute, aber nicht sicher wissen, dass das stoppen und starten einer Anwendung machen, Lesen Sie die context.xml.
Bezüglich deiner zweiten Frage, ich glaube, es ist besser für die Wartung Gründen halten Sie die war-Dateien im webapps-Verzeichnis.