Wdrażanie aplikacji internetowej Java na maszynie wirtualnej w usłudze Azure Stack Hub

Możesz utworzyć maszynę wirtualną do hostowania aplikacji internetowej Java w usłudze Azure Stack Hub. W tym artykule zainstalujesz odpowiednie porty i skonfigurujesz serwer Apache Tomcat na maszynie wirtualnej z systemem Linux w usłudze Azure Stack Hub. Następnie załadujesz plik zasobu aplikacji internetowej Java (WAR) na serwer. Plik WAR służy do dystrybucji kolekcji plików archiwum Java (JAR), skompresowanych plików zawierających zasoby Java, takie jak klasy, tekst, obrazy, XML i HTML oraz inne zasoby używane do dostarczania aplikacji internetowej.

Tworzenie maszyny wirtualnej

  1. Skonfiguruj maszynę wirtualną w usłudze Azure Stack Hub, postępując zgodnie z instrukcjami w temacie Deploy a Linux VM to host a web app in Azure Stack Hub (Wdrażanie maszyny wirtualnej z systemem Linux w celu hostowania aplikacji internetowej w usłudze Azure Stack Hub).

  2. W okienku Sieć maszyn wirtualnych upewnij się, że dostępne są następujące porty:

    Port Protokół Opis
    80 HTTP Protokół HTTP (Hypertext Transfer Protocol) to protokół używany do dostarczania stron internetowych z serwerów. Klienci łączą się za pośrednictwem protokołu HTTP z nazwą DNS lub adresem IP.
    443 HTTPS Hypertext Transfer Protocol Secure (HTTPS) to bezpieczna wersja protokołu HTTP, która wymaga certyfikatu zabezpieczeń i umożliwia zaszyfrowaną transmisję informacji.
    22 Protokół SSH Secure Shell (SSH) to szyfrowany protokół sieciowy do bezpiecznej komunikacji. To połączenie jest używane z klientem SSH, aby skonfigurować maszynę wirtualną i wdrożyć aplikację.
    3389 RDP Opcjonalny. Protokół RDP (Remote Desktop Protocol) umożliwia podłączanie pulpitu zdalnego do korzystania z graficznego interfejsu użytkownika na maszynie.
    8080 Niestandardowy Domyślny port usługi Apache Tomcat. W przypadku serwera produkcyjnego ruch jest kierowany przez 80 i 443.

Instalowanie języka Java

  1. Nawiąż połączenie z maszyną wirtualną przy użyciu klienta SSH. Aby uzyskać instrukcje, zobacz Connect via SSH with PuTTY (Nawiązywanie połączenia za pośrednictwem protokołu SSH za pomocą platformy PuTTY).

  2. W wierszu polecenia powłoki bash na maszynie wirtualnej uruchom następujące polecenie:

        sudo apt-get install default-jdk
    
  3. Zweryfikuj instalację. Nadal połączone z maszyną wirtualną w sesji SSH uruchom następujące polecenie:

        java -version
    

Instalowanie i konfigurowanie serwera Tomcat

  1. Nawiąż połączenie z maszyną wirtualną przy użyciu klienta SSH. Aby uzyskać instrukcje, zobacz Connect via SSH with PuTTY (Nawiązywanie połączenia za pośrednictwem protokołu SSH za pomocą platformy PuTTY).

  2. Utwórz użytkownika tomcat, wykonując następujące czynności:

    a. Utwórz nową grupę Tomcat, uruchamiając następujące polecenie:

        sudo groupadd tomcat
    

    b. Utwórz nowego użytkownika serwera Tomcat. Dodaj tego użytkownika do grupy Tomcat z katalogiem głównym /opt/tomcat. Wdrożysz program Tomcat w tym katalogu:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Zainstaluj aplikację Tomcat, wykonując następujące czynności:

    a. Pobierz adres URL tar dla najnowszej wersji serwera Tomcat 8 ze strony pobierania Tomcat 8.

    b. Użyj narzędzia cURL, aby pobrać najnowszą wersję przy użyciu linku. Uruchom następujące polecenia:

        cd /tmp 
        curl -O <URL for the tar for the latest version of Tomcat 8>
    

    c. Zainstaluj serwer Tomcat w katalogu /opt/tomcat . Utwórz folder, a następnie otwórz archiwum:

        sudo mkdir /opt/tomcat
        sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
        sudo chown -R tomcat webapps/ work/ temp/ logs/
    
  4. Zaktualizuj uprawnienia serwera Tomcat, uruchamiając następujące polecenia:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Utwórz plik usługi systemowej , aby można było uruchomić usługę Tomcat jako usługę.

    a. Tomcat musi wiedzieć, gdzie zainstalowano środowisko Java. Ta ścieżka jest często określana jako JAVA_HOME. Znajdź lokalizację, uruchamiając polecenie:

        sudo update-java-alternatives -l
    

    Spowoduje to wygenerowanie czegoś podobnego do następującego:

        Output
        java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
    

    Możesz skonstruować wartość zmiennej JAVA_HOME , wybierając ścieżkę z danych wyjściowych i dodając /jre. Na przykład, korzystając z poprzedniego przykładu, /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. Użyj wartości z serwera, aby utworzyć plik usługi systemd:

        sudo nano /etc/systemd/system/tomcat.service
    

    c. Wklej następującą zawartość do pliku usługi. Zmodyfikuj wartość JAVA_HOME, jeśli jest to konieczne, aby dopasować wartość znalezioną w systemie. Możesz również zmodyfikować ustawienia alokacji pamięci określone w CATALINA_OPTS:

        [Unit]
        Description=Apache Tomcat Web Application Container
        After=network.target
    
        [Service]
        Type=forking
    
        Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
        Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
        Environment=CATALINA_HOME=/opt/tomcat
        Environment=CATALINA_BASE=/opt/tomcat
        Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
        Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
    
        ExecStart=/opt/tomcat/bin/startup.sh
        ExecStop=/opt/tomcat/bin/shutdown.sh
    
        User=tomcat
        Group=tomcat
        UMask=0007
        RestartSec=10
        Restart=always
    
        [Install]
        WantedBy=multi-user.target
    

    d. Zapisz i zamknij plik.

    e. Załaduj ponownie demona systemowego, aby wiedział o pliku usługi:

        sudo systemctl daemon-reload
    

    f. Uruchom usługę Tomcat:

        sudo systemctl start tomcat
    

    g. Sprawdź, czy została uruchomiona bez błędów, wprowadzając następujące informacje:

        sudo systemctl status tomcat
    
  6. Sprawdź serwer Tomcat. Tomcat używa portu 8080 do akceptowania konwencjonalnych żądań. Zezwalaj na ruch do tego portu, uruchamiając następujące polecenie:

        sudo ufw allow 8080
    

    Jeśli nie dodano reguł portów przychodzących dla maszyny wirtualnej usługi Azure Stack Hub, dodaj je teraz. Aby uzyskać więcej informacji, zobacz Tworzenie maszyny wirtualnej.

  7. Otwórz przeglądarkę w tej samej sieci co usługa Azure Stack Hub, a następnie otwórz serwer yourmachine.local.cloudapp.azurestack.external:8080.

    Zrzut ekranu przedstawiający stronę Apache Tomcat.

    Strona Apache Tomcat na serwerze zostanie załadowana. Następnie skonfigurujesz serwer, aby umożliwić dostęp do stanu serwera, aplikacji Menedżera i Menedżera hosta.

  8. Włącz plik usługi, aby program Tomcat automatycznie uruchamiał się po ponownym uruchomieniu serwera:

        sudo systemctl enable tomcat
    
  9. Aby umożliwić sobie dostęp do interfejsu zarządzania internetowego, skonfiguruj serwer Tomcat.

    a. Edytuj plik tomcat-users.xml i zdefiniuj rolę i użytkownika, aby móc się zalogować. Zdefiniuj użytkownika, aby uzyskać dostęp do obiektów manager-gui i admin-gui.

        sudo nano /opt/tomcat/conf/tomcat-users.xml
    

    b. Dodaj następujące elementy do <tomcat-users> sekcji:

        <role rolename="tomcat"/>
        <user username="<username>" password="<password>" roles="tomcat,manager-gui,admin-gui"/>
    

    Na przykład ostateczny plik może wyglądać następująco:

        <tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
        <role rolename="tomcat"/>
        <user username="tomcatuser" password="changemepassword" roles="tomcat,manager-gui,admin-gui"/>
        </tomcat-users>
    

    c. Zapisz i zamknij plik.

  10. Serwer Tomcat ogranicza dostęp do aplikacji Menedżer i Menedżer hosta do połączeń pochodzących z serwera. Ponieważ instalujesz aplikację Tomcat na maszynie wirtualnej w usłudze Azure Stack Hub, musisz usunąć to ograniczenie. Zmień ograniczenia adresów IP dla tych aplikacji, edytując odpowiednie plikicontext.xml .

    a. Zaktualizuj context.xml w aplikacji Menedżer:

        sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
    

    b. Oznacz jako komentarz ograniczenie adresu IP, aby zezwolić na połączenia z dowolnego miejsca lub dodać adres IP maszyny, której używasz do nawiązywania połączenia z serwerem Tomcat.

    <Context antiResourceLocking="false" privileged="true" >
        <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
    </Context>
    

    c. Zapisz i zamknij plik.

    d. Zaktualizuj context.xml aplikacji Menedżer hostów przy użyciu podobnej aktualizacji:

        sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
    

    e. Zapisz i zamknij plik.

  11. Aby zaktualizować serwer za pomocą zmian, uruchom ponownie usługę Tomcat:

        sudo systemctl restart tomcat
    
  12. Otwórz przeglądarkę w tej samej sieci co usługa Azure Stack Hub, a następnie otwórz serwer: yourmachine.local.cloudapp.azurestack.external:8080.

    a. Aby przejrzeć stan serwera Tomcat i sprawdzić, czy masz dostęp, wybierz pozycję Stan serwera.

    b. Zaloguj się przy użyciu poświadczeń serwera Tomcat.

    Serwer Apache Tomcat na maszynie wirtualnej usługi Azure Stack Hub

Tworzenie aplikacji

Musisz utworzyć war, aby wdrożyć go w usłudze Tomcat. Jeśli chcesz tylko sprawdzić środowisko, możesz znaleźć przykład WAR w witrynie Apache Tomcat.

Aby uzyskać wskazówki dotyczące tworzenia aplikacji Java na platformie Azure, zobacz Tworzenie i wdrażanie aplikacji Java na platformie Azure.

Wdrażanie i uruchamianie aplikacji

  1. Nawiąż połączenie z maszyną wirtualną przy użyciu klienta SSH. Aby uzyskać instrukcje, zobacz Connect via SSH with PuTTY (Nawiązywanie połączenia za pośrednictwem protokołu SSH za pomocą platformy PuTTY).

  2. Aby zaktualizować serwer przy użyciu pakietu aplikacji, zatrzymaj usługę Tomcat:

        sudo systemctl stop tomcat
    
  3. Aby móc zapisywać w folderze webapps, dodaj użytkownika FTP do grupy Tomcat. Użytkownik FTP jest użytkownikiem zdefiniowanym podczas tworzenia maszyny wirtualnej w usłudze Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Aby wyczyścić folder aplikacji internetowych, a następnie załadować nową lub zaktualizowaną aplikację WAR, połącz się z maszyną wirtualną za pomocą narzędzia FileZilla. Aby uzyskać instrukcje, zobacz Connect with SFTP with FileZilla (Nawiązywanie połączenia za pomocą protokołu SFTP za pomocą usługi FileZilla).

    a. Wyczyść TOMCAT_HOME/aplikacje internetowe.

    b. Dodaj aplikację WAR do aplikacji TOMCAT_HOME/webapps (na przykład /opt/tomcat/webapps/).

  5. Tomcat automatycznie rozszerza i wdraża aplikację. Można go wyświetlić przy użyciu utworzonej wcześniej nazwy DNS. Na przykład:

       http://yourmachine.local.cloudapp.azurestack.external:8080/sample
    

Następne kroki