Azure Stack Hub에서 VM에 Java 웹앱 배포

Azure Stack Hub에서 Java 웹앱을 호스트하는 VM(가상 머신)을 만들 수 있습니다. 이 문서에서는 Azure Stack Hub의 Linux VM에서 Apache Tomcat 서버를 설치하고, 올바른 포트를 열고, 구성합니다. 그런 다음 WAR(Java Web Application Resource) 파일을 서버에 로드합니다. WAR 파일은 JAVA 보관 파일, 클래스, 텍스트, 이미지, XML 및 HTML과 같은 Java 리소스를 포함하는 압축된 파일 및 웹 애플리케이션을 제공하는 데 사용되는 기타 리소스의 컬렉션을 배포하는 데 사용됩니다.

VM 만들기

  1. Azure Stack Hub에서 웹앱을 호스트하는 Linux VM 배포의 지침에 따라 Azure Stack Hub에서 VM을 설정합니다.

  2. VM 네트워크 창에서 다음 포트에 액세스할 수 있는지 확인합니다.

    포트 프로토콜 Description
    80 HTTP HTTP(Hypertext Transfer Protocol)는 서버에서 웹 페이지를 배달하는 데 사용되는 프로토콜입니다. 클라이언트는 DNS 이름 또는 IP 주소를 사용하여 HTTP를 통해 연결합니다.
    443 HTTPS HTTPS(Hypertext Transfer Protocol Secure)는 보안 인증서가 필요하고 암호화된 정보 전송을 허용하는 HTTP의 보안 버전입니다.
    22 SSH SSH(Secure Shell)는 보안 통신을 위한 암호화된 네트워크 프로토콜입니다. 이 연결을 SSH 클라이언트와 함께 사용하여 VM을 구성하고 앱을 배포합니다.
    3389 RDP 선택 사항입니다. RDP(원격 데스크톱 프로토콜)를 사용하면 원격 데스크톱 연결에서 컴퓨터의 그래픽 사용자 인터페이스를 사용할 수 있습니다.
    8080 사용자 지정 Apache Tomcat 서비스의 기본 포트입니다. 프로덕션 서버의 경우 트래픽을 80 및 443을 통해 라우팅합니다.

Java 설치

  1. SSH 클라이언트를 사용하여 VM에 연결합니다. 자세한 내용은 PuTTY를 사용하여 SSH를 통해 연결을 참조하세요.

  2. VM의 bash 프롬프트에서 다음 명령을 실행합니다.

        sudo apt-get install default-jdk
    
  3. 설치 유효성을 검사합니다. 여전히 SSH 세션에서 VM에 연결하고 다음 명령을 실행합니다.

        java -version
    

Tomcat 설치 및 구성

  1. SSH 클라이언트를 사용하여 VM에 연결합니다. 자세한 내용은 PuTTY를 사용하여 SSH를 통해 연결을 참조하세요.

  2. 다음을 수행하여 Tomcat 사용자를 만듭니다.

    a. 다음 명령을 실행하여 새 Tomcat 그룹을 만듭니다.

        sudo groupadd tomcat
    

    b. 새 Tomcat 사용자를 만듭니다. 홈 디렉터리가 /opt/tomcat인 Tomcat 그룹에 이 사용자를 추가합니다. 이 디렉터리에 Tomcat을 배포합니다.

        sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    
  3. 다음을 수행하여 Tomcat을 설치합니다.

    a. Tomcat 8 다운로드 페이지에서 최신 버전의 Tomcat 8에 대한 tar URL을 가져옵니다.

    b. cURL 사용하여 링크를 사용하여 최신 버전을 다운로드합니다. 다음 명령을 실행합니다.

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

    다. /opt/tomcat 디렉터리에 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. Tomcat을 서비스로 실행할 수 있도록 시스템 서비스 파일을 만듭니다.

    a. 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
    

    출력에서 경로를 가져와 /jre를 추가하여 JAVA_HOME 변수 값을 생성할 수 있습니다. 예를 들어 앞의 예제 인 /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre를 사용하세요.

    b. 서버의 값을 사용하여 시스템 서비스 파일을 만듭니다.

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

    다. 다음 내용을 서비스 파일에 붙여넣습니다. 필요한 경우 시스템에서 찾은 값과 일치하도록 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. 파일을 저장하고 닫습니다.

    e. 서비스 파일에 대해 알 수 있도록 시스템 디먼을 다시 로드합니다.

        sudo systemctl daemon-reload
    

    f. Tomcat 서비스를 시작합니다.

        sudo systemctl start tomcat
    

    g. 다음을 입력하여 오류 없이 시작되었는지 확인합니다.

        sudo systemctl status tomcat
    
  6. Tomcat 서버를 확인합니다. Tomcat은 포트 8080을 사용하여 기존 요청을 수락합니다. 다음 명령을 실행하여 해당 포트에 대한 트래픽을 허용합니다.

        sudo ufw allow 8080
    

    Azure Stack Hub VM에 대한 인바운드 포트 규칙을 추가하지 않은 경우 지금 추가합니다. 자세한 내용은 VM 만들기를 참조하세요.

  7. Azure Stack Hub와 동일한 네트워크에서 브라우저를 연 다음 서버 yourmachine.local.cloudapp.azurestack.external:8080을 엽니다.

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

    서버의 Apache Tomcat 페이지가 로드됩니다. 다음으로 서버 상태, 관리자 앱 및 호스트 관리자에 액세스할 수 있도록 서버를 구성합니다.

  8. 서버를 다시 부팅할 때 Tomcat이 자동으로 시작되도록 서비스 파일을 사용하도록 설정합니다.

        sudo systemctl enable tomcat
    
  9. 웹 관리 인터페이스에 대한 액세스를 허용하려면 Tomcat 서버를 구성합니다.

    a. tomcat-users.xml 파일을 편집하고 로그인할 수 있도록 역할 및 사용자를 정의합니다. 및 admin-gui에 액세스할 사용자를 정의합니다manager-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>
    

    다. 파일을 저장하고 닫습니다.

  10. Tomcat은 관리자호스트 관리자 앱에 대한 액세스를 서버에서 오는 연결로 제한합니다. Azure Stack Hub의 VM에 Tomcat을 설치하기 때문에 이 제한을 제거하려고 합니다. 적절한 context.xml 파일을 편집하여 이러한 앱의 IP 주소 제한을 변경합니다.

    a. 관리자 앱에서 context.xml 업데이트합니다.

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

    b. 어디서나 연결을 허용하도록 IP 주소 제한을 주석으로 처리하거나 Tomcat에 연결하는 데 사용하는 컴퓨터의 IP 주소를 추가합니다.

    <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>
    

    다. 파일을 저장하고 닫습니다.

    d. 비슷한 업데이트로 호스트 관리자 앱을 context.xml 업데이트합니다.

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

    e. 파일을 저장하고 닫습니다.

  11. 변경 내용으로 서버를 업데이트하려면 Tomcat 서비스를 다시 시작합니다.

        sudo systemctl restart tomcat
    
  12. Azure Stack Hub와 동일한 네트워크에서 브라우저를 연 다음 서버 yourmachine.local.cloudapp.azurestack.external:8080을 엽니다.

    a. Tomcat 서버의 상태 검토하고 액세스 권한이 있는지 확인하려면 서버 상태를 선택합니다.

    b. Tomcat 자격 증명으로 로그인합니다.

    Azure Stack Hub VM의 Apache Tomcat

앱 만들기

Tomcat에 배포할 WAR을 만들어야 합니다. 환경을 검사 경우 Apache Tomcat 사이트에서 WAR 예제를 찾을 수 있습니다.

Azure에서 Java 앱을 개발하는 방법에 대한 지침은 Azure 에서 Java 앱 빌드 및 배포를 참조하세요.

앱 배포 및 실행

  1. SSH 클라이언트를 사용하여 VM에 연결합니다. 자세한 내용은 PuTTY를 사용하여 SSH를 통해 연결을 참조하세요.

  2. 앱 패키지로 서버를 업데이트하려면 Tomcat 서비스를 중지합니다.

        sudo systemctl stop tomcat
    
  3. webapps 폴더에 쓸 수 있도록 FTP 사용자를 Tomcat 그룹에 추가합니다. FTP 사용자는 Azure Stack Hub에서 VM을 만들 때 정의하는 사용자입니다.

        sudo usermod -a -G tomcat <VM-user>
    
  4. webapps 폴더를 지우고 새 WAR 또는 업데이트된 WAR을 로드하려면 FileZilla를 사용하여 VM에 연결합니다. 자세한 내용은 FileZilla를 사용하여 SFTP로 연결을 참조하세요.

    a. TOMCAT_HOME/웹앱을 지웁니다.

    b. war를 TOMCAT_HOME/webapps에 추가합니다(예: /opt/tomcat/webapps/).

  5. Tomcat은 애플리케이션을 자동으로 확장하고 배포합니다. 앞에서 만든 DNS 이름을 사용하여 볼 수 있습니다. 예를 들면 다음과 같습니다.

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

다음 단계