將 Java Web 應用程式部署至 Azure Stack Hub 中的 VM
您可以建立虛擬機器 (VM) 以在 Azure Stack Hub 中裝載 Java Web 應用程式。 在本文中,您會安裝、開啟正確的埠,並在 Azure Stack Hub 的 Linux VM 上設定 Apache Tomcat 伺服器。 接著,您會將 Java Web 應用程式資源 (WAR) 檔案載入伺服器。 WAR 檔案可用來散發 Java 封存 (JAR) 檔案的集合、包含 Java 資源的壓縮檔,例如類別、文字、影像、XML 和 HTML,以及用來傳遞 Web 應用程式的其他資源。
建立 VM
在 Azure Stack Hub 中設定您的 VM,依照 在 Azure Stack Hub 部署 Linux VM 來裝載 Web 應用程式的指示。
在 [VM 網络] 窗格中,確定可存取下列埠:
港口 協定 描述 80 HTTP 超文本傳輸通訊協定 (HTTP) 是用來從伺服器傳遞網頁的通訊協定。 用戶端會透過 HTTP 與 DNS 名稱或 IP 位址進行連線。 443 HTTPS 超文本傳輸通訊協定安全 (HTTPS) 是一種安全版本的 HTTP,需要安全性憑證,並允許加密的資訊傳輸。 22 SSH 安全殼層 (SSH) 是加密的網路通訊協定,用於安全通訊。 您可以使用此連線搭配 SSH 用戶端來設定 VM 並部署應用程式。 3389 RDP (遠端桌面協議) 自選。 遠端桌面通訊協定 (RDP) 可讓遠端桌面連線在您的電腦上使用圖形使用者介面。 8080 習慣 Apache Tomcat 服務的預設埠。 針對生產伺服器,您可以透過 80 和 443 路由傳送流量。
安裝Java
使用 SSH 用戶端連線到您的 VM。 如需指示,請參閱 使用 SSH 連線通過 PuTTY。
在 VM 上的 bash 提示字元中,執行下列命令:
sudo apt-get install default-jdk
驗證您的安裝。 仍然在您的 SSH 會話中連接到 VM,請執行以下命令:
java -version
安裝和設定 Tomcat
使用 SSH 用戶端連線到您的 VM。 如需指示,請參閱 使用 PuTTY 透過 SSH 連線。
執行下列動作來建立 Tomcat 使用者:
一個。 執行下列命令來建立新的 Tomcat 群組:
sudo groupadd tomcat
b. 建立新的 Tomcat 使用者。 將此使用者新增至 Tomcat 群組,其主目錄為 /opt/tomcat。 您將 Tomcat 部署至此目錄:
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
執行下列動作來安裝 Tomcat:
一個。 從 Tomcat 8 下載頁面取得最新版 Tomcat 8 的 tar 檔案的 URL。
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/
執行下列命令來更新 Tomcat 的權限:
sudo chgrp -R tomcat /opt/tomcat sudo chmod -R g+r conf sudo chmod g+x conf
建立 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
您可以從輸出中取得路徑,並新增 /jre ,以建構 JAVA_HOME 變數值。 例如,使用上述範例,/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. 儲存並關閉檔案。
e. 重載 systemd 精靈,讓它知道您的服務檔案:
sudo systemctl daemon-reload
f. 啟動 Tomcat 服務:
sudo systemctl start tomcat
g. 輸入下列項目來確認它已經正常啟動,沒有發生錯誤:
sudo systemctl status tomcat
確認 Tomcat 伺服器。 Tomcat 使用埠 8080 接受傳統要求。 執行下列命令以允許該連接埠的流量:
sudo ufw allow 8080
如果您尚未為 Azure Stack Hub VM 新增 輸入埠規則,請立即加以新增。 如需詳細資訊,請參閱 建立 VM。
在與 Azure Stack Hub 相同的網路中開啟瀏覽器,然後開啟您的伺服器,yourmachine.local.cloudapp.azurestack.external:8080。
伺服器上的 Apache Tomcat 頁面將載入。 接下來,您會將伺服器設定為可讓您存取伺服器狀態、管理員應用程式和主機管理員。
啟用服務檔案,以便在重新啟動伺服器時自動啟動 Tomcat:
sudo systemctl enable tomcat
若要允許自己存取 Web 管理介面,請設定 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. 儲存並關閉檔案。
Tomcat 會將存取 管理員 和 主機管理員 應用程式限制為來自伺服器的連線。 因為您要在 Azure Stack Hub 中的 VM 上安裝 Tomcat,因此您會想要移除此限制。 編輯適當的 context.xml 檔案,以變更這些應用程式的IP位址限制。
一個。 更新管理員應用程式中的 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>
c. 儲存並關閉檔案。
d. 更新主機管理員應用程式 context.xml,使用類似的更新:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
e. 儲存並關閉檔案。
要將變更更新至伺服器,請重新啟動 Tomcat 服務。
sudo systemctl restart tomcat
在與 Azure Stack Hub 相同的網路中開啟瀏覽器,然後開啟您的伺服器:yourmachine.local.cloudapp.azurestack.external:8080。
一個。 若要檢閱 Tomcat 伺服器的狀態,並確認您有存取權,請選擇 [伺服器狀態]。
b. 使用 Tomcat 認證登入。
建立應用程式
您必須建立 WAR 以部署至 Tomcat。 如果您只想檢查您的環境,您可以在 Apache Tomcat 網站找到範例 WAR。
如需在 Azure 中開發 Java 應用程式的指引,請參閱 在 Azure上建置及部署 Java 應用程式。
部署並執行應用程式
使用 SSH 用戶端連線到您的 VM。 請參閱 使用 PuTTY 透過 SSH 連線的指示。
若要使用您的應用程式套件更新伺服器,請停止 Tomcat 服務:
sudo systemctl stop tomcat
若要能夠寫入 webapps 資料夾,請將 FTP 使用者新增至 Tomcat 群組。 FTP 使用者是您您在 Azure Stack Hub 中建立 VM 時所定義的使用者。
sudo usermod -a -G tomcat <VM-user>
若要清除 webapps 資料夾,然後載入新的或更新的 WAR,請使用 FileZilla 連線到您的 VM。 如需指示,請參閱 使用 FileZilla 與 SFTP 連線。
一個。 清除 TOMCAT_HOME/webapps。
b. 將WAR 新增至 TOMCAT_HOME/webapps (例如,/opt/tomcat/webapps/)。
Tomcat 會自動展開和部署應用程式。 您可以使用您稍早建立的 DNS 名稱來檢視它。 例如:
http://yourmachine.local.cloudapp.azurestack.external:8080/sample
後續步驟
- 深入瞭解如何 Azure Stack Hub進行開發。
- 瞭解 Azure Stack Hub 常見的部署作為 IaaS。
- 若要瞭解 Java 程式設計語言並尋找 Java 的其他資源,請參閱 Java.com。