Einrichten von Tomcat7 auf einem virtuellen Linux-Computer mit Microsoft Azure

Wichtig

Klassische VMs werden am 1. März 2023 eingestellt.

Wenn Sie IaaS-Ressourcen aus ASM verwenden, müssen Sie die Migration bis zum 1. März 2023 abschließen. Es wird empfohlen, den Wechsel früher vorzunehmen, um die vielen verbesserten Features in Azure Resource Manager zu nutzen.

Weitere Informationen finden Sie unter Migrieren Ihrer IaaS-Ressourcen bis zum 1. März 2023 zu Azure Resource Manager.

Apache Tomcat (oder einfach Tomcat, früher auch Jakarta Tomcat) ist ein Open-Source-Webserver und Servlet-Container und wurde von der Apache Software Foundation (ASF) entwickelt. Tomcat implementiert das Java-Servlet und die Java Server Pages-Spezifikationen (JSP) von Sun Microsystems. Tomcat bietet eine reine Java-HTTP-Webserverumgebung, in der Java-Code ausgeführt wird. In der einfachsten Konfiguration wird Tomcat in einem einzelnen Betriebssystem-Prozess ausgeführt. Dieser Prozess führt eine Java Virtual Machine (JVM) aus. Jede HTTP-Anforderung von einem Browser an Tomcat wird als separater Thread im Tomcat-Prozess verarbeitet.

Hinweis

Azure bietet zwei Bereitstellungsmodelle für das Erstellen und Verwenden von Ressourcen: Azure Resource Manager und klassisch. Dieser Artikel gilt für das klassische Bereitstellungsmodell. Wir empfehlen für die meisten Neubereitstellungen das Resource Manager-Modell. Informationen zum Bereitstellen einer Ubuntu-VM mit Open JDK und Tomcat mithilfe einer Resource Manager-Vorlage finden Sie in diesem Artikel.

Ab dem 15. November 2017 sind virtuelle Computer nur in der Azure-Portal verfügbar.

In diesem Handbuch installieren Sie Tomcat7 in einem Linux-Image, das Sie in Azure bereitstellen.

Sie erhalten Informationen zu folgenden Themen:

  • Erstellen eines virtuellen Computers in Azure.
  • Vorbereiten des virtuellen Computers für Tomcat7.
  • Installieren von Tomcat7.

Es wird vorausgesetzt, dass Sie bereits über ein Azure-Abonnement verfügen. Falls nicht, können Sie sich auf der Azure-Website für eine kostenlose Testversion registrieren. Wenn Sie über ein MSDN-Abonnement verfügen, finden Sie weitere Informationen unter Microsoft Azure-Sonderpreis: MSDN-, MPN- und Bizspark-Leistungen. Weitere Informationen zu Azure finden Sie unter Was ist Azure?

In diesem Artikel wird davon ausgegangen, dass Sie über allgemeine Kenntnisse zu Tomcat und Linux verfügen.

Phase 1: Erstellen eines Image

In dieser Phase erstellen Sie einen virtuellen Computer mit einem Linux-Image in Azure.

Schritt 1: Generieren eines SSH-Authentifizierungsschlüssels

SSH ist ein wichtiges Tool für Systemadministratoren. Die Konfiguration der Zugriffssicherheit auf Grundlage eines vom Menschen bestimmten Kennworts wird jedoch nicht empfohlen. Böswillige Benutzer können über einen Benutzernamen und ein unsicheres Kennwort in Ihr System eindringen.

Die gute Nachricht ist, dass es eine Möglichkeit gibt, wie Sie den Remotezugriff zulassen können, ohne sich über Kennwörter sorgen zu müssen. Die Methode sieht die Authentifizierung mithilfe asymmetrischer Kryptografie vor. Der private Schlüssel des Benutzers ist der Schlüssel, der die Authentifizierung vornimmt. Sie können sogar das Konto des Benutzers sperren, um die Kennwortauthentifizierung zu untersagen.

Ein weiterer Vorteil dieser Methode ist, dass Sie nicht verschiedene Kennwörter benötigen, um sich auf verschiedenen Servern anzumelden. Sie können sich auf allen Servern mit dem persönlichen privaten Schlüssel authentifizieren. Dies erspart Ihnen auch, sich mehrere Kennwörter merken zu müssen.

Führen Sie die folgenden Schritte aus, um den SSH-Authentifizierungsschlüssel zu generieren.

  1. Laden Sie PuTTYgen unter http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunter, und installieren Sie das Tool.
  2. Führen Sie „Puttygen.exe“ aus.
  3. Klicken Sie auf Generieren, um die Schlüssel zu generieren. Während des Vorgangs können Sie den Zufallsfaktor durch Bewegen der Maus über den leeren Bereich im Fenster erhöhen.
    PuTTY Key Generator screenshot that shows the generate new key button
  4. Nach dem Generierungsvorgang zeigt „Puttygen.exe“ Ihren neuen öffentlichen Schlüssel.
    PuTTY Key Generator screenshot that shows the new public key and the save private key button
  5. Wählen Sie den öffentlichen Schlüssel aus. Kopieren und speichern Sie ihn in einer Datei namens „publicKey.pem“. Klicken Sie nicht auf Öffentlichen Schlüssel speichern, weil sich das Dateiformat des gespeicherten öffentlichen Schlüssels vom gewünschten öffentlichen Schlüssel unterscheidet.
  6. Klicken Sie auf "Privaten Schlüssel speichern", und speichern Sie ihn in einer Datei mit dem Namen "privateKey.ppk".

Schritt 2: Erstellen des Images im Azure-Portal

  1. Klicken Sie im Portal auf der Taskleiste auf Ressource erstellen, um ein Image zu erstellen. Wählen Sie dann das Linux-Image basierend auf Ihren Anforderungen aus. Dieses Beispiel verwendet das Ubuntu 14.04-Image. Screenshot of the portal that shows the New button

  2. Geben Sie unter Hostname den Namen der URL ein, die Sie und Internetclients für den Zugriff auf diesen virtuellen Computer verwenden. Legen Sie den letzten Teil des DNS-Namens fest, z.B. als „tomcatdemo“. Azure generiert dann diese URL: tomcatdemo.cloudapp.net.

  3. Kopieren Sie für SSH Authentication Key (SSH-Authentifizierungsschlüssel) den Schlüsselwert aus der Datei „publicKey.pem“, die den von PuttyGen generierten öffentlichen Schlüssel enthält.
    SSH Authentication Key box in the portal

  4. Konfigurieren Sie weitere Einstellungen nach Bedarf, und klicken Sie dann auf Erstellen.

Phase 2: Vorbereiten des virtuellen Computers für Tomcat7

In dieser Phase konfigurieren Sie einen Endpunkt für Tomcat-Datenverkehr und stellen dann eine Verbindung mit dem neuen virtuellen Computer her.

Schritt 1: Öffnen des HTTP-Ports, um Webzugriff zu erlauben

Endpunkte in Azure bestehen aus einem Protokoll (TCP oder UDP) sowie aus einem öffentlichen und einem privaten Port. Der private Port ist der Port, an dem der Dienst auf dem virtuellen Computer lauscht. Der öffentliche Port ist der Port, an dem der Azure-Clouddienst extern auf internetbasierten Datenverkehr lauscht.

TCP-Port 8080 ist die Standardportnummer, an der Tomcat lauscht. Wenn Sie diesen Port auf einem Azure-Endpunkt öffnen, können Sie und andere Internetclients auf Tomcat-Seiten zugreifen.

  1. Klicken Sie im Portal aufvirtuelle Computerdurchsuchen>, und klicken Sie dann auf den von Ihnen erstellten virtuellen Computer.
    Screenshot of the Virtual machines directory

  2. Klicken Sie zum Hinzufügen eines Endpunkts zu einem virtuellen Computer auf das Feld Endpunkte . Screenshot that shows the Endpoints box

  3. Klicken Sie auf Hinzufügen.

    1. Geben Sie in Endpunkt einen Endpunktnamen ein und dann unter Öffentlicher Port den Port „80“ ein.

      Wenn Sie den Port auf 80 festlegen, müssen Sie die Portnummer nicht in die URL einschließen, die Ihnen den Zugriff auf Tomcat ermöglicht. Zum Beispiel, http://tomcatdemo.cloudapp.net.

      Wenn Sie den Port auf einen anderen Wert festlegen (z.B. 81), müssen Sie die Portnummer der URL für den Zugriff auf Tomcat hinzufügen. Zum Beispiel, http://tomcatdemo.cloudapp.net:81/.

    2. Geben Sie unter Privater Port 8080 ein. Tomcat lauscht standardmäßig an TCP-Port 8080. Wenn Sie den Standardüberwachungsport von Tomcat geändert haben, sollten Sie den privaten Port so ändern, dass er mit dem Tomcat-Überwachungsport übereinstimmt.
      Screenshot of UI that shows Add command, Public Port, and Private Port

  4. Klicken Sie auf OK, um den Endpunkt Ihrem virtuellen Computer hinzuzufügen.

Schritt 2: Herstellen einer Verbindung mit dem Image, das Sie erstellt haben

Sie können ein beliebiges SSH-Tool für das Herstellen einer Verbindung mit Ihrem virtuellen Computer auswählen. In diesem Beispiel wird PuTTY verwendet.

  1. Rufen Sie den DNS-Namen Ihres virtuellen Computers aus dem Portal ab.

    1. Klicken Sie auf"Virtuelle Computerdurchsuchen>".
    2. Wählen Sie den Namen Ihres virtuellen Computers aus, und klicken Sie dann auf Eigenschaften.
    3. Rufen Sie den DNS-Namen auf der Kachel Eigenschaften im Feld Domänenname ab.
  2. Rufen Sie die Portnummer für SSH-Verbindungen aus dem Feld SSH ab.
    Screenshot that shows the SSH connection port number

  3. PuTTY herunterladen.

  4. Klicken Sie nach dem Herunterladen auf die ausführbare Datei „Putty.exe“. Konfigurieren Sie in der PuTTY-Konfiguration die grundlegenden Optionen mit dem Hostnamen und der Portnummer, die Sie aus den Eigenschaften Ihres virtuellen Computers abgerufen haben.
    Screenshot that shows the PuTTY configuration host name and port options

  5. Klicken Sie im linken Bereich auf "Verbindungs-SSH-Authentifizierung>>", und klicken Sie dann auf "Durchsuchen", um den Speicherort der Datei "privateKey.ppk" anzugeben. Die Datei „privateKey.ppk“ enthält den privaten Schlüssel, der von PuTTYgen generiert wird (siehe den Abschnitt „Phase 1: Erstellen eines Images“ dieses Artikels).
    Screenshot that shows the Connection directory hierarchy and Browse button

  6. Klicken Sie auf Öffnen. Möglicherweise wird ein Meldungsfeld angezeigt. Wenn Sie den DNS-Namen und die Portnummer richtig konfiguriert haben, klicken Sie auf Ja. Screenshot that shows the notification

  7. Sie werden aufgefordert, Ihren Benutzernamen einzugeben.
    Screenshot that shows where to enter username

  8. Geben Sie den Benutzernamen an, den Sie zum Erstellen der virtuellen Computers in „Phase 1: Erstellen eines Images“ weiter oben in diesem Artikel verwendet haben. Folgendes sollte angezeigt werden:
    Screenshot that shows the authentication confirmation

Phase 3: Installieren von Software

In dieser Phase installieren Sie die Java-Laufzeitumgebung, Tomcat7 und andere Tomcat7-Komponenten.

Java-Laufzeitumgebung

Tomcat wird in Java geschrieben. Informationen zum Abrufen vollumfänglich unterstützter Java Runtimes finden Sie unter Azure supported JDKs (Von Azure unterstützte JDKs). Sie können auch eine eigene verwenden, allerdings befasst sich der Rest dieses Artikels mit den von Azure unterstützten Versionen.

Installieren eines von Azure unterstützten JDKs

Folgen Sie den apt-get Installationsanweisungen, die auf der Azul Zulu-Enterprise für Azure-Website dokumentiert sind.

Bestätigen, dass die Java-Installation erfolgreich war

Sie können einen Befehl wie den folgenden verwenden, um zu testen, ob die Java-Laufzeitumgebung ordnungsgemäß installiert ist:
Java-Version

Es wird eine Meldung ähnlich der folgenden angezeigt:

Successful OpenJDK installation message

Installieren von Tomcat7

Geben Sie den folgenden Befehl für die Installation von Tomcat7 ein.

sudo apt-get install tomcat7  

Wenn Sie Tomcat7 nicht verwenden, verwenden Sie die entsprechende Variante dieses Befehls.

Bestätigen, dass die Tomcat7-Installation erfolgreich war

Um zu überprüfen, ob Tomcat7 erfolgreich installiert wurde, navigieren Sie zum DNS-Namen Ihres Tomcat-Servers. In diesem Artikel ist die Beispiel-URL http://tomcatexample.cloudapp.net/. Wenn sinngemäß die folgende Meldung angezeigt wird, ist Tomcat7 ordnungsgemäß installiert. Successful Tomcat7 installation message

Installieren anderer Tomcat7-Komponenten

Es gibt weitere optionale Tomcat-Komponenten, die Sie installieren können.

Verwenden Sie den Befehl sudo apt-cache search tomcat7, um alle verfügbaren Komponenten anzuzeigen. Verwenden Sie die folgenden Befehle aus, um einige nützliche Komponenten zu installieren.

sudo apt-get install tomcat7-admin      #admin web applications

sudo apt-get install tomcat7-user         #tools to create user instances  

Phase 4: Konfigurieren von Tomcat7

In dieser Phase verwalten Sie Tomcat.

Starten und Beenden von Tomcat7

Der Tomcat7-Server wird bei der Installation von Tomcat7 automatisch gestartet. Sie können den Server auch selbst mit dem folgenden Befehl starten:

sudo /etc/init.d/tomcat7 start

So beenden Sie Tomcat7

sudo /etc/init.d/tomcat7 stop

So zeigen Sie Status von Tomcat7 an

sudo /etc/init.d/tomcat7 status

So starten Sie Tomcat-Dienste neu

sudo /etc/init.d/tomcat7 restart

Tomcat7-Verwaltung

Sie können die Tomcat-Benutzerkonfigurationsdatei bearbeiten, um die Administratoranmeldeinformationen einzurichten. Verwenden Sie den folgenden Befehl:

sudo vi  /etc/tomcat7/tomcat-users.xml   

Beispiel:
Screenshot that shows the sudo vi command output

Hinweis

Erstellen Sie ein sicheres Kennwort für den Administratorbenutzernamen.

Nach der Bearbeitung dieser Datei sollten Sie Tomcat7-Dienste mit dem folgenden Befehl neu starten, um sicherzustellen, dass die Änderungen wirksam werden:

sudo /etc/init.d/tomcat7 restart  

Öffnen Sie Ihren Browser, und geben Sie http:///manager/html als URL ein. Für das Beispiel in diesem Artikel ist die URL http://tomcatexample.cloudapp.net/manager/html.

Nachdem die Verbindung hergestellt wurde, müsste in etwa Folgendes angezeigt werden:
Screenshot of the Tomcat Web Application Manager

Häufige Probleme

Auf den virtuellen Computer mit Tomcat und Moodle kann nicht über das Internet zugegriffen werden.

Symptom

Tomcat wird ausgeführt, die Tomcat-Standardseite wird jedoch nicht in Ihrem Browser angezeigt.

Mögliche Ursache

  • Der Tomcat-Überwachungsport ist nicht identisch mit dem privaten Port des Endpunkts des virtuellen Computers für Tomcat-Datenverkehr.

    Überprüfen Sie die Endpunkteinstellungen des öffentlichen und des privaten Ports, und stellen Sie sicher, dass der private Port mit dem Tomcat-Überwachungsport identisch ist. Anweisungen zum Konfigurieren von Endpunkten für den virtuellen Computer finden Sie unter „Phase1: Erstellen eines Images“ in diesem Artikel.

    Öffnen Sie zur Bestimmung des Tomcat-Überwachungsports „/etc/httpd/conf/httpd.conf“ (Red Hat-Version) oder „/etc/tomcat7/server.xml“ (Debian-Version). Standardmäßig ist der Tomcat-Überwachungsport 8080. Beispiel:

    <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"   URIEncoding="UTF-8"            redirectPort="8443" />  
    

    Wenn Sie einen virtuellen Computer wie Debian oder Ubuntu verwenden und den Standard-Überwachungsport für Tomcat (z. B. 8081) ändern möchten, sollten Sie auch den Port für das Betriebssystem öffnen. Öffnen Sie zunächst das Profil:

    sudo vi /etc/default/tomcat7  
    

    Löschen Sie dann den Kommentar der letzten Zeile und ändern Sie "Nein" zu "Ja".

    AUTHBIND=yes
    
  1. Die Firewall hat den Überwachungsport von Tomcat deaktiviert.

    Es wird nur die Tomcat-Standardseite auf dem lokalen Host angezeigt. Das Problem ist sehr wahrscheinlich, dass der Port, an dem Tomcat lauscht, durch die Firewall blockiert wird. Sie können das Tool w3m verwenden, um die Webseite zu durchsuchen. Die folgenden Befehle installieren w3m und navigieren zur Apache-Standardseite:

    sudo yum install w3m w3m-img

    w3m https://localhost:8080

Lösung

  • Wenn der Tomcat-Überwachungsport nicht mit dem privaten Port des Endpunkts für den Datenverkehr an den virtuellen Computer identisch ist, müssen Sie den privaten Port so ändern, dass dieser identisch mit dem Tomcat-Überwachungsport ist.
  1. Wenn das Problem durch die Firewall/iptables verursacht wird, fügen Sie „/etc/sysconfig/iptables“ die folgenden Zeilen hinzu. Die zweite Zeile ist nur für HTTPS-Datenverkehr erforderlich:

    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

    Wichtig

    Vergewissern Sie sich, dass sich die vorherigen Zeilen über allen Zeilen befinden, die den globalen Zugriff einschränken, wie z.B.: -A INPUT -j REJECT --reject-with icmp-host-prohibited

Führen Sie den folgenden Befehl aus, um die iptables erneut zu laden:

service iptables restart

Dies wurde unter CentOS 6.3 getestet.

Beim Hochladen von Projektdateien in das Verzeichnis „/var/lib/tomcat7/webapps“ wird der Zugriff verweigert.

Symptom

Wenn Sie einen beliebigen SFTP-Client (z.B. FileZilla) zum Herstellen einer Verbindung mit Ihrem virtuellen Computer verwenden und zu „/var/lib/tomcat7/webapps/“ navigieren, um Ihre Website zu veröffentlichen, erhalten Sie sinngemäß die folgende Fehlermeldung:

 status:    Listing directory /var/lib/tomcat7/webapps
 Command:    put "C:\Users\liang\Desktop\info.jsp" "info.jsp"
 Error:    /var/lib/tomcat7/webapps/info.jsp: open for write: permission denied
 Error:    File transfer failed

Mögliche Ursache

Sie haben keine Zugriffsberechtigungen für den Ordner "/var/lib/tomcat7/webapps".

Lösung

Sie müssen die Berechtigungen aus dem Root-Konto abrufen. Sie können den Besitzer dieses Ordners von „root“ in den Benutzernamen ändern, den Sie bei der Bereitstellung des Computers verwendet haben. Das folgende Beispiel zeigt den Kontonamen "azureuser":

 sudo chown azureuser -R /var/lib/tomcat7/webapps

Verwenden Sie die Option "-R", um die Berechtigungen auch auf alle Dateien in einem Verzeichnis anzuwenden.

Dieser Befehl funktioniert auch für Verzeichnisse. Die Option „-R“ ändert die Berechtigungen für alle Dateien und Verzeichnisse innerhalb des Verzeichnisses. Beispiel:

 sudo chown -R username:group directory  

Dieser Befehl ändert den Besitzer (Benutzer und Gruppe) für alle Dateien und Verzeichnisse im Verzeichnis.

Der folgende Befehl ändert nur die Berechtigung des Ordner „directory“. Die Dateien und Ordner im Verzeichnis werden nicht geändert.

 sudo chown username:group directory