Развертывание веб-приложения Java на виртуальной машине в Azure Stack Hub

Вы можете создать виртуальную машину для размещения веб-приложения Java в Azure Stack Hub. В рамках этой статьи вы откроете нужные порты, установите и настроите сервер Apache Tomcat на виртуальной машине Linux в Azure Stack Hub. Затем вы загрузите на сервер файл ресурсов веб-приложения Java (WAR). WAR-файл используется для распространения коллекции файлов архива Java (JAR-файлы). Это сжатые файлы, содержащие ресурсы Java, такие как классы, текст, изображения, XML- и HTML-файлы, а также другие ресурсы, которые используются для предоставления веб-приложения.

Создание виртуальной машины

  1. Настройте виртуальную машину в Azure Stack Hub, следуя инструкциям из статьи о развертывании виртуальной машины Linux для размещения веб-приложения в Azure Stack Hub.

  2. В области сети виртуальных машин разрешите доступ к следующим портам:

    Порт Протокол Описание
    80 HTTP HTTP — это протокол, который используется для доставки веб-страниц с серверов. Клиенты подключаются по протоколу HTTP, используя DNS-имя или IP-адрес.
    443 HTTPS HTTPS — это безопасная версия протокола HTTP, которая использует сертификат безопасности и обеспечивает передачу данных в зашифрованном виде.
    22 SSH Secure Shell (SSH) — это сетевой протокол с применением шифрования для безопасного обмена данными. Такое соединение используется клиентом SSH для настройки виртуальной машины и развертывания приложений.
    3389 RDP Необязательный параметр. Протокол RDP позволяет подключаться к удаленному рабочему столу, чтобы использовать графический пользовательский интерфейс на вашем компьютере.
    8080 Другой Используемый по умолчанию порт для службы Apache Tomcat. Для рабочего сервера разработки вам нужно перенаправить трафик через порты 80 и 443.

Установка Java

  1. Подключитесь к виртуальной машине c помощью клиента SSH. Инструкции см. в разделе Подключение по протоколу SSH с помощью PuTTy.

  2. В командной строке bash на виртуальной машине выполните следующую команду:

        sudo apt-get install default-jdk
    
  3. Проверьте установку. Не прерывая подключение к виртуальной машине в сеансе SSH, выполните следующую команду:

        java -version
    

Установка и настройка Tomcat

  1. Подключитесь к виртуальной машине c помощью клиента SSH. Инструкции см. в разделе Подключение по протоколу SSH с помощью PuTTy.

  2. Создайте пользователя Tomcat. Для этого сделайте следующее:

    а. Создайте группу Tomcat с помощью приведенной ниже команды:

        sudo groupadd tomcat
    

    b. Создайте пользователя Tomcat. Добавьте этого пользователя в группу Tomcat с домашним каталогом /opt/tomcat. Разверните Tomcat в этот каталог.

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. Установите Tomcat. Для этого сделайте следующее:

    а. Получите URL-адрес tar для последней версии Tomcat 8 на странице скачивания Tomcat 8.

    b. С помощью cURL скачайте последнюю версию по ссылке. Выполните следующие команды:

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

    c. Установите Tomcat в каталог /opt/tomcat. Создайте папку и откройте архив.

        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. Обновите разрешения для Tomcat с помощью следующих команд:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Создайте файл службы systemd, чтобы можно было использовать Tomcat как службу.

    а. В Tomcat нужно указать путь к установленному экземпляру ​​Java. Этот путь обычно называется JAVA_HOME. Найдите расположение, выполнив команду:

        sudo update-java-alternatives -l
    

    Должны отобразиться следующие выходные данные:

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

    Вы можете создать переменную JAVA_HOME, используя путь из выходных данных и добавив к нему /jre. В нашем примере путь будет таким: /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b. С помощью значения своего сервера создайте файл службы systemd.

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

    c. Вставьте следующее содержимое в файл службы. При необходимости измените значение JAVA_HOME таким образом, чтобы оно соответствовало значению, найденному в вашей системе. Вы также можете изменить параметры выделения памяти, указанные в 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. Сохраните файл и закройте его.

    д) Перезагрузите управляющую программу systemd, чтобы указать ей данные о служебном файле:

        sudo systemctl daemon-reload
    

    е) Запустите службу Tomcat.

        sudo systemctl start tomcat
    

    ж. Убедитесь, что она работает без ошибок. Для этого введите следующую команду:

        sudo systemctl status tomcat
    
  6. Проверьте сервер Tomcat. Для приема обычных запросов Tomcat использует порт 8080. Разрешите поток трафика на этот порт, выполнив следующую команду:

        sudo ufw allow 8080
    

    Если вы не добавили правила для входящих портов для виртуальной машины Azure Stack Hub, добавьте их сейчас. Дополнительные сведения см. в разделе о создании виртуальной машины.

  7. Откройте браузер в той же сети Azure Stack Hub, а затем откройте сервер yourmachine.local.cloudapp.azurestack.external:8080.

    Снимок экрана: страница Apache Tomcat.

    На вашем сервере загружается страница Apache Tomcat. Далее настройте сервер, чтобы получить доступ к сведениям о его состоянии, приложению диспетчера и диспетчеру узлов.

  8. Включите служебный файл, чтобы Tomcat автоматически запускался при перезагрузке сервера:

        sudo systemctl enable tomcat
    
  9. Настройте сервер Tomcat, чтобы получить доступ к веб-интерфейсу управления.

    а. Измените файл tomcat-users.xml и определите роль и пользователя, чтобы войти в систему. Определите пользователя, чтобы получить доступ к manager-gui и admin-gui.

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

    b. Добавьте в раздел <tomcat-users> следующие элементы:

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

    Ваш окончательный файл может выглядеть примерно так:

        <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. Сохраните файл и закройте его.

  10. Tomcat ограничивает доступ к приложениям менеджера и менеджера узлов для подключений, исходящих с сервера. Так как вы устанавливаете Tomcat на виртуальную машину в Azure Stack Hub, снимите это ограничение. Измените ограничения IP-адресов для этих приложений, отредактировав соответствующие файлы context.xml.

    а. Обновите context.xml в приложении диспетчера.

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

    b. Закомментируйте ограничение IP-адреса, чтобы разрешить подключения из любого расположения, или добавьте IP-адрес компьютера, который используете для подключения к 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. Сохраните файл и закройте его.

    d. Обновите context.xml приложения диспетчера узлов с помощью аналогичного обновления:

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

    д) Сохраните файл и закройте его.

  11. Перезапустите службу Tomcat, чтобы применить изменения на сервере.

        sudo systemctl restart tomcat
    
  12. Откройте браузер в той же сети Azure Stack Hub, а затем откройте сервер yourmachine.local.cloudapp.azurestack.external:8080.

    а. Щелкните Server Status (Состояние сервера), чтобы проверить состояние сервера Tomcat и убедиться, что у вас есть к нему доступ.

    b. Войдите, используя свои учетные данные Tomcat.

    Apache Tomcat на виртуальной машине Azure Stack Hub

Создание приложения

Нужно создать WAR-файл, чтобы развернуть Tomcat. Если вам нужно только проверить свою среду, ознакомьтесь с примером WAR-файла на сайте Apache TomCat.

Инструкции по разработке приложений Java в Azure см. в статье Создание и развертывание приложений Java в Azure.

Развертывание и запуск приложения

  1. Подключитесь к виртуальной машине c помощью клиента SSH. Инструкции см. в разделе Подключение по протоколу SSH с помощью PuTTy.

  2. Остановите работу службы Tomcat, чтобы загрузить на сервер пакет приложения.

        sudo systemctl stop tomcat
    
  3. Добавьте пользователя FTP в группу Tomcat, чтобы можно было выполнять запись в папку webapps. Пользователь FTP — это пользователь, которого вы определяете при создании виртуальной машины в Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Подключитесь к виртуальной машине с помощью FileZilla, чтобы очистить папку webapps, а затем загрузите новый или обновленный WAR-файл. Дополнительные сведения об использовании FileZila см. в разделе Подключение по SFTP с помощью FileZilla.

    а. Очистите папку TOMCAT_HOME/webapps.

    b. Скопируйте свой WAR-файл в папку TOMCAT_HOME/webapps (например /opt/tomcat/webapps/ ).

  5. Tomcat автоматически расширяет и развертывает приложение. Его можно просмотреть с помощью DNS-имени, которое вы создали ранее. Пример:

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

Дальнейшие действия

  • См. дополнительные сведения о разработке для Azure Stack Hub.
  • Дополнительные сведения о распространенных сценариях развертывания IaaS для Azure Stack Hub см. здесь.
  • Дополнительные сведения о языке программирования Java и дополнительные ресурсы см. на сайте Java.com.