연습 - Azure App Service에 웹앱 배포

완료됨

이 단원에서는 Java Tomcat 웹앱을 Azure App Service에 배포합니다.

Azure App Service용 Maven 플러그인

Microsoft에서 제공한 Maven Plugin으로 Java 개발자는 Azure에 애플리케이션을 보다 쉽게 배포할 수 있습니다. 이 플러그 인을 사용하여 애플리케이션을 쉽게 구성하고 Azure에 배포할 수 있습니다. 다음 섹션의 단계에 따라 플러그 인을 구성하고, 소스 코드를 컴파일하고, 앱을 배포합니다.

Azure App Service용 Maven 플러그인 구성

Azure App Service용 Maven 플러그 인을 구성하려면 다음 단계를 사용합니다.

  1. 다음 명령을 사용하여 구성을 시작합니다.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.10.0:config
    
  2. 명령을 사용하면 프롬프트에 몇 가지 질문이 나타나서 다양한 옵션을 구성할 수 있습니다. 다음 테이블의 정보에 따라 옵션과 값을 구성합니다.

    Item 입력 값
    Subscription Azure 구독을 선택합니다.
    Define value for OS(OS 값 정의) 리눅스
    Define value for pricing tier(가격 책정 계층 값 정의) B1
    Define value for Java version(Java 버전 값 정의) Java 21
    Define value for runtime stack(런타임 스택 값 정의) TOMCAT 10.0
    확인(Y/N) Y

    옵션을 구성한 후에는 일반적으로 다음과 같은 출력이 표시됩니다.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.10.0:config
    [INFO] Scanning for projects...
    [INFO]
    [INFO] -------------------< com.example:simple-tomcat-app >--------------------
    [INFO] Building simple-tomcat-app 1.0-SNAPSHOT
    [INFO]   from pom.xml
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp:2.10.0:config (default-cli) @ simple-tomcat-app ---
    Downloading from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml
    Downloading from ossrh: https://oss.sonatype.org/content/repositories/snapshots/net/minidev/json-smart/maven-metadata.xml
    Downloading from shibboleth-repo: https://build.shibboleth.net/nexus/content/repositories/releases/net/minidev/json-smart/maven-metadata.xml
    Downloaded from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml (1.3 kB at 6.3 kB/s)
    Please choose which part to config [Application]:
    * 1: Application
      2: Runtime
      3: DeploymentSlot
    Enter your choice: 1
    Define value for appName [simple-tomcat-app]: tomcatmavendemo
    Define value for resourceGroup [tomcatmavendemo-rg]: MyResourceGroup
    Define value for region [{azure.region}]: centralus
    Define value for pricingTier [B1]:
    *  1: B1
       2: B2
       3: B3
       4: D1
       5: EP1
       6: EP2
       7: EP3
       8: F1
       9: P1v2
      10: P1v3
      11: P2v2
      12: P2v3
      13: P3v2
      14: P3v3
      15: S1
      16: S2
      17: S3
      18: Y1
    Enter your choice: 1
    Please confirm webapp properties
    AppName : tomcatmavendemo
    ResourceGroup : MyResourceGroup
    Region : centralus
    PricingTier : B1
    OS : Linux
    Java Version: 21
    Web server stack: Tomcat 10.1
    Deploy to slot : false
    Confirm (Y/N) [Y]: Y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  01:49 min
    [INFO] Finished at: 2024-11-07T09:54:55-08:00
    [INFO] ------------------------------------------------------------------------
    
  3. 이제 pom.xml 파일의 <plugins> 섹션에 새 섹션이 포함되었습니다. 리소스 그룹 이름, 인스턴스 이름 또는 배포 위치를 변경하려면 <resourceGroup>, <appName> 또는 <region> 요소의 값을 변경합니다. 다음 예에서는 일반적인 pom.xml 파일을 보여 줍니다.

          <!-- Azure Web App Maven Plugin -->
    <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>2.10.0</version>
        <configuration>
            <resourceGroup>MyResourceGroup</resourceGroup>
            <appName>tomcatmavendemo</appName>
            <region>centralus</region>
            <pricingTier>B1</pricingTier>
            <runtime>
                <os>linux</os>
                <javaVersion>21</javaVersion>
                <webContainer>Tomcat 10.1</webContainer>
            </runtime>
            <deployment>
                <resources>
                    <resource>
                        <directory>${project.build.directory}</directory>
                        <includes>
                            <include>*.war</include>
                        </includes>
                    </resource>
                </resources>
            </deployment>
        </configuration>
    </plugin>
    

컴파일 및 Azure App Service에 배포

이제 Azure App Services에 배포하기 위한 설정 구성을 마쳤으므로 다음 단계에 따라 소스 코드를 컴파일하고 앱을 Azure App Services에 배포합니다.

  1. 다음 명령을 사용하여 소스 코드를 다시 컴파일합니다.

    mvn clean package
    
  2. 소스 코드를 컴파일한 후 다음 명령을 사용하여 애플리케이션을 배포합니다.

    mvn azure-webapp:deploy
    

배포가 완료되면 일반적으로 다음과 같은 출력이 표시됩니다.

[INFO] Successfully deployed the artifact to https://tomcatmavendemo.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  06:55 min
[INFO] Finished at: 2024-11-07T10:05:19-08:00
[INFO] ------------------------------------------------------------------------

보시다시피 해당 출력은 배포된 애플리케이션의 공용 URL인 Successfully deployed the artifact to https://tomcatmavendemo.azurewebsites.net을 제공합니다.

해당 애플리케이션으로 이동하면 다음 스크린샷과 비슷하게 표시됩니다.

브라우저에 배포된 웹앱을 보여 주는 스크린샷.

로그 스트림 확인

로그 스트림에 액세스하려면 다음 명령을 사용합니다.

az webapp log tail \
    --resource-group <your-resource-group> \
    --name <your-app-name>

일반적인 출력은 다음과 같습니다.

2024-11-07T18:14:37  Welcome, you are now connected to log-streaming service.
Starting Log Tail -n 10 of existing logs ----
/appsvctmp/volatile/logs/runtime/container.log
2024-11-07T18:06:05.3874260Z  java.base/java.lang.Thread.run(Thread.java:1583)
2024-11-07T18:06:05.5635356Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.5636042Z INFO: Stopping ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6020767Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.6021438Z INFO: Stopping ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.6423756Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6424403Z INFO: Destroying ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6893602Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6894311Z INFO: Destroying ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.7849816Z Done processing signal SIGTERM. Exiting now!
Ending Log Tail of existing logs ---
Starting Live Log Stream ---

연습 요약

이 단원에서는 Maven을 사용하여 Tomcat 웹앱을 만드는 방법을 알아보았습니다. 또한 서블릿을 만드는 방법과 서블릿이 작동하는 방식도 알아보았습니다. 다음으로, Tomcat을 사용하여 웹앱을 로컬로 배포했습니다. 마지막으로, 전 세계 누구나 ​​액세스할 수 있도록 Azure App Service에 배포했습니다.