Azure Stack 허브의 VM에 Java 웹 앱 배포Deploy a Java web app to a VM in Azure Stack Hub

Azure Stack 허브에서 Java 웹 앱을 호스트 하는 VM (가상 머신)을 만들 수 있습니다.You can create a virtual machine (VM) to host your Java web app in Azure Stack Hub. 이 문서에서는를 설치 하 고, 올바른 포트를 열고, Azure Stack 허브의 Linux VM에서 Apache Tomcat 서버를 구성 합니다.In this article, you install, open the right ports, and configure an Apache Tomcat server on a Linux VM in Azure Stack Hub. 그런 다음 서버에 Java WAR (웹 응용 프로그램 리소스) 파일을 로드 합니다.You then load a Java Web Application Resource (WAR) file into the server. WAR 파일은 클래스, 텍스트, 이미지, XML, HTML 등의 Java 리소스와 웹 응용 프로그램을 제공 하는 데 사용 되는 기타 리소스를 포함 하는 압축 파일, JAR (Java archive) 파일의 컬렉션을 배포 하는 데 사용 됩니다.A WAR file is used to distribute a collection of Java archive (JAR) files, compressed files that contain Java resources such as classes, text, images, XML, and HTML, and other resources that are used to deliver a web application.

VM 만들기Create a VM

  1. Azure Stack 허브에서 웹 앱을 호스트 하는 LINUX VM 배포의 지침에 따라 Azure Stack 허브에서 VM을 설정 합니다.Set up your VM in Azure Stack Hub by following the instructions in Deploy a Linux VM to host a web app in Azure Stack Hub.

  2. VM 네트워크 창에서 다음 포트에 액세스할 수 있는지 확인 합니다.In the VM network pane, make sure that the following ports are accessible:

    포트Port 프로토콜Protocol DescriptionDescription
    8080 HTTPHTTP HTTP (하이퍼텍스트 전송 프로토콜)는 서버에서 웹 페이지를 전달 하는 데 사용 되는 프로토콜입니다.Hypertext Transfer Protocol (HTTP) is the protocol that's used to deliver webpages from servers. 클라이언트는 DNS 이름 또는 IP 주소를 사용 하 여 HTTP를 통해 연결 합니다.Clients connect via HTTP with a DNS name or IP address.
    443443 HTTPSHTTPS HTTPS (하이퍼텍스트 전송 프로토콜 보안)는 보안 인증서가 필요 하 고 암호화 된 정보 전송을 허용 하는 HTTP의 보안 버전입니다.Hypertext Transfer Protocol Secure (HTTPS) is a secure version of HTTP that requires a security certificate and allows for the encrypted transmission of information.
    2222 SSHSSH SSH (Secure Shell)는 안전한 통신을 위한 암호화 된 네트워크 프로토콜입니다.Secure Shell (SSH) is an encrypted network protocol for secure communications. 이 연결을 SSH 클라이언트와 함께 사용 하 여 VM을 구성 하 고 앱을 배포 합니다.You use this connection with an SSH client to configure the VM and deploy the app.
    33893389 RDPRDP 선택 사항입니다.Optional. RDP (원격 데스크톱 프로토콜)를 사용 하면 원격 데스크톱 연결에서 컴퓨터의 그래픽 사용자 인터페이스를 사용할 수 있습니다.The Remote Desktop Protocol (RDP) allows a remote desktop connection to use a graphic user interface on your machine.
    80808080 사용자 지정Custom Apache Tomcat 서비스에 대 한 기본 포트입니다.The default port for the Apache Tomcat service. 프로덕션 서버의 경우 80 및 443를 통해 트래픽을 라우팅합니다.For a production server, you route your traffic through 80 and 443.

Java 설치Install Java

  1. SSH 클라이언트를 사용 하 여 VM에 연결 합니다.Connect to your VM by using your SSH client. 지침은 PuTTY를 사용 하 여 SSH를 통해 연결을 참조 하세요.For instructions, see Connect via SSH with PuTTY.

  2. VM의 bash 프롬프트에서 다음 명령을 실행 합니다.At the bash prompt on your VM, run the following command:

        sudo apt-get install default-jdk
    
  3. 설치의 유효성을 검사 합니다.Validate your installation. SSH 세션에서 VM에 연결 된 상태에서 다음 명령을 실행 합니다.Still connected to your VM in your SSH session, run the following command:

        java -version
    

Tomcat 설치 및 구성Install and configure Tomcat

  1. SSH 클라이언트를 사용 하 여 VM에 연결 합니다.Connect to your VM by using your SSH client. 지침은 PuTTY를 사용 하 여 SSH를 통해 연결을 참조 하세요.For instructions, see Connect via SSH with PuTTY.

  2. 다음을 수행 하 여 Tomcat 사용자를 만듭니다.Create a Tomcat user by doing the following:

    a.a. 다음 명령을 실행 하 여 새 Tomcat 그룹을 만듭니다.Create a new Tomcat group by running the following command:

        sudo groupadd tomcat
    

    b.b. 새 Tomcat 사용자를 만듭니다.Create a new Tomcat user. /Opt/tomcat 의 홈 디렉터리를 사용 하 여 Tomcat 그룹에이 사용자를 추가 합니다.Add this user to the Tomcat group with a home directory of /opt/tomcat. 다음 디렉터리에 Tomcat를 배포 합니다.You deploy Tomcat to this directory:

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. 다음을 수행 하 여 Tomcat를 설치 합니다.Install Tomcat by doing the following:

    a.a. Tomcat 8 다운로드 페이지에서 Tomcat 8의 최신 버전에 대 한 tar URL을 가져옵니다.Get the URL for the tar for the latest version of Tomcat 8 from the Tomcat 8 download page.

    b.b. 이 링크를 사용 하 여 최신 버전을 다운로드 하려면 말아 넘기기를 사용 합니다.Use cURL to download the latest version by using the link. 다음 명령을 실행 합니다.Run the following commands:

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

    다.c. /Opt/tomcat 디렉터리에 Tomcat를 설치 합니다.Install Tomcat to the /opt/tomcat directory. 폴더를 만든 다음 보관 파일을 엽니다.Create the folder, and then open the archive:

        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에 대 한 사용 권한을 업데이트 합니다.Update the permissions for Tomcat by running the following commands:

        sudo chgrp -R tomcat /opt/tomcat
        sudo chmod -R g+r conf
        sudo chmod g+x conf
    
  5. Tomcat를 서비스로 실행할 수 있도록 systemd 서비스 파일을 만듭니다.Create a systemd service file, so that you can run Tomcat as a service.

    a.a. Tomcat은 Java를 설치한 위치를 알고 있어야 합니다.Tomcat needs to know where you installed Java. 이 경로를 일반적으로 JAVA_HOME 이라고 합니다.This path is commonly referred to as JAVA_HOME. 다음을 실행 하 여 위치를 찾습니다.Find the location by running:

        sudo update-java-alternatives -l
    

    그러면 다음과 같이 생성 됩니다.This produces something like the following:

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

    출력에서 경로를 가져오고 /svha 를 추가 하 여 JAVA_HOME 변수 값을 생성할 수 있습니다.You can construct the JAVA_HOME variable value by taking the path from the output and adding /jre. 예를 들어 앞의 예제를 사용 하 여 /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre 를 사용 합니다.For example, using the preceding example, /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre.

    b.b. 서버에서 값을 사용 하 여 systemd 서비스 파일을 만듭니다.Use the value from your server to create the systemd service file:

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

    다.c. 서비스 파일에 다음 콘텐츠를 붙여 넣습니다.Paste the following contents into your service file. 필요한 경우 시스템에서 찾은 값과 일치 하도록 JAVA_HOME 값을 수정 합니다.Modify the value of JAVA_HOME, if necessary, to match the value you found on your system. CATALINA_OPTS에 지정 된 메모리 할당 설정을 수정할 수도 있습니다.You might also want to modify the memory allocation settings that are specified in 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.d. 파일을 저장하고 닫습니다.Save and close the file.

    e.e. 서비스 파일에 대해 알 수 있도록 systemd 디먼을 다시 로드 합니다.Reload the systemd daemon so that it knows about your service file:

        sudo systemctl daemon-reload
    

    f.f. Tomcat 서비스를 시작 합니다.Start the Tomcat service:

        sudo systemctl start tomcat
    

    g.g. 다음을 입력 하 여 오류 없이 시작 되었는지 확인 합니다.Verify that it started without errors by entering:

        sudo systemctl status tomcat
    
  6. Tomcat 서버를 확인 합니다.Verify the Tomcat server. Tomcat는 포트 8080를 사용 하 여 기존 요청을 수락 합니다.Tomcat uses port 8080 to accept conventional requests. 다음 명령을 실행 하 여 해당 포트에 대 한 트래픽을 허용 합니다.Allow traffic to that port by running the following command:

        sudo ufw allow 8080
    

    Azure Stack Hub VM에 대 한 인바운드 포트 규칙 을 추가 하지 않은 경우 지금 추가 합니다.If you haven't added the Inbound port rules for your Azure Stack Hub VM, add them now. 자세한 내용은 VM 만들기를 참조 하세요.For more information, see Create a VM.

  7. Azure Stack 허브와 동일한 네트워크에서 브라우저를 열고 해당 서버 (해당 하는 경우) 의 서버를 엽니다.Open a browser in the same network as your Azure Stack Hub, and then open your server, yourmachine.local.cloudapp.azurestack.external:8080.

    Apache Tomcat 페이지를 보여 주는 스크린샷

    서버의 Apache Tomcat 페이지가 로드 됩니다.The Apache Tomcat page on your server loads. 그런 다음 서버 상태, 관리자 앱 및 호스트 관리자에 액세스할 수 있도록 서버를 구성 합니다.Next, you configure the server to allow you to access the Server Status, Manager App, and Host Manager.

  8. 서버를 재부팅할 때 Tomcat가 자동으로 시작 되도록 서비스 파일을 사용 하도록 설정 합니다.Enable the service file so that Tomcat automatically starts when you reboot your server:

        sudo systemctl enable tomcat
    
  9. 웹 관리 인터페이스에 대 한 액세스를 허용 하려면 Tomcat 서버를 구성 합니다.To allow yourself access to the web management interface, configure the Tomcat server.

    a.a. tomcat-users.xml 파일을 편집 하 고 로그인 할 수 있도록 역할 및 사용자를 정의 합니다.Edit the tomcat-users.xml file, and define a role and user so that you can sign in. 및에 액세스할 사용자를 정의 manager-gui 합니다 admin-gui .Define the user to access the manager-gui and admin-gui.

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

    b.b. 섹션에 다음 요소를 추가 합니다 <tomcat-users> .Add the following elements to the <tomcat-users> section:

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

    예를 들어 최종 파일은 다음과 같을 수 있습니다.For example, your final file might look something like:

        <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. 파일을 저장하고 닫습니다.Save and close the file.

  10. Tomcat는 서버에서 들어오는 연결에 대 한 관리자호스트 관리자 앱에 대 한 액세스를 제한 합니다.Tomcat restricts access to the Manager and Host Manager apps to connections coming from the server. Azure Stack 허브의 VM에 Tomcat를 설치 하는 중 이므로이 제한을 제거 하는 것이 좋습니다.Because you're installing Tomcat on a VM in Azure Stack Hub, you'll want to remove this restriction. 적절 한 context.xml 파일을 편집 하 여 이러한 앱에 대 한 IP 주소 제한을 변경 합니다.Change the IP address restrictions on these apps by editing the appropriate context.xml files.

    a.a. 관리자 앱에서 context.xml 업데이트:Update context.xml in the Manager app:

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

    b.b. 어디에서 나 연결을 허용 하는 IP 주소 제한을 주석으로 처리 하거나 Tomcat에 연결 하는 데 사용 하 고 있는 컴퓨터의 IP 주소를 추가 합니다.Comment out the IP address restriction to allow connections from anywhere, or add the IP address of the machine you're using to connect to 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. 파일을 저장하고 닫습니다.Save and close the file.

    d.d. 유사한 업데이트를 사용 하 여 호스트 관리자 앱 context.xml 업데이트 합니다.Update context.xml the Host Manager app with a similar update:

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

    e.e. 파일을 저장하고 닫습니다.Save and close the file.

  11. 서버를 변경 내용으로 업데이트 하려면 Tomcat 서비스를 다시 시작 합니다.To update the server with the changes, restart the Tomcat service:

        sudo systemctl restart tomcat
    
  12. Azure Stack 허브와 동일한 네트워크에서 브라우저를 연 다음 서버를 엽니다.. n e t. n e t.Open a browser in the same network as your Azure Stack Hub, and then open your server: yourmachine.local.cloudapp.azurestack.external:8080.

    a.a. Tomcat 서버의 상태를 검토 하 고 액세스 권한이 있는지 확인 하려면 서버 상태 를 선택 합니다.To review the status of the Tomcat server and verify that you have access, select Server Status.

    b.b. Tomcat 자격 증명으로 로그인 합니다.Sign in with your Tomcat credentials.

    Azure Stack 허브 VM의 Apache Tomcat

앱 만들기Create an app

Tomcat에 배포할 WAR을 만들어야 합니다.You'll need to create a WAR to deploy to Tomcat. 사용자 환경만 확인 하려는 경우에는 Apache Tomcat 사이트에서 예제 전쟁을 찾을 수 있습니다.If you want only to check your environment, you can find an example WAR at the Apache Tomcat site.

Azure에서 Java 앱을 개발 하는 방법에 대 한 지침은 azure에서 java 앱 빌드 및 배포를 참조 하세요.For guidance about developing Java apps in Azure, see Build and deploy Java apps on Azure.

앱 배포 및 실행Deploy and run the app

  1. SSH 클라이언트를 사용 하 여 VM에 연결 합니다.Connect to your VM by using your SSH client. 지침은 PuTTY를 사용 하 여 SSH를 통해 연결을 참조 하세요.For instructions, see Connect via SSH with PuTTY.

  2. 앱 패키지를 사용 하 여 서버를 업데이트 하려면 Tomcat 서비스를 중지 합니다.To update the server with your app package, stop the Tomcat service:

        sudo systemctl stop tomcat
    
  3. Webapps 폴더에 쓸 수 있으려면 FTP 사용자를 Tomcat 그룹에 추가 합니다.To be able to write to the webapps folder, add your FTP user to the Tomcat group. FTP 사용자는 Azure Stack 허브에서 VM을 만들 때 정의한 사용자입니다.Your FTP user is the user you define when you create your VM in Azure Stack Hub.

        sudo usermod -a -G tomcat <VM-user>
    
  4. Webapps 폴더를 지운 다음 새 WAR 또는 업데이트 된 WAR을 로드 하려면 FileZilla를 사용 하 여 VM에 연결 합니다.To clear the webapps folder and then load your new or updated WAR, connect to your VM with FileZilla. 지침은 FileZilla를 사용 하 여 SFTP와 연결을 참조 하세요.For instructions, see Connect with SFTP with FileZilla.

    a.a. TOMCAT_HOME/webapps 를 지웁니다.Clear TOMCAT_HOME/webapps.

    b.b. TOMCAT_HOME/웹 앱 에 전쟁을 추가 합니다 (예: /opt/tomcat/webapps/).Add your WAR to TOMCAT_HOME/webapps (for example, /opt/tomcat/webapps/).

  5. Tomcat는 응용 프로그램을 자동으로 확장 하 고 배포 합니다.Tomcat automatically expands and deploys the application. 이전에 만든 DNS 이름을 사용 하 여 볼 수 있습니다.You can view it by using the DNS name you created earlier. 예를 들면 다음과 같습니다.For example:

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

다음 단계Next steps