將 Java Web 應用程式部署至 Azure Stack Hub 中的 VM
您可以在 Azure Stack Hub 中建立用來裝載 Java Web 應用程式的虛擬機器 (VM)。 在本文中,您可以在 Azure Stack Hub 中的 Linux VM 上安裝、開啟正確的連接埠,並設定 Apache Tomcat 伺服器。 接著,您可以再將 Java Web 應用程式資源 (WAR) 檔案載入伺服器。 WAR 檔案用於散發 Java 封存 (JAR) 檔案、含有類別、文字、影像、XML 和 HTML 等 Java 資源的壓縮檔案,以及其他用來提供 Web 應用程式的資源。
建立 VM
請依照在 Azure Stack Hub 中部署用來裝載 Web 應用程式的 Linux VM 中的指示,在 Azure Stack Hub 中設定 VM。
在 VM 網路窗格中,確定可存取下列連接埠:
連接埠 通訊協定 描述 80 HTTP 超文字傳輸通訊協定 (HTTP) 是用於從伺服器提供網頁的通訊協定。 用戶端會使用 DNS 名稱或 IP 位址透過 HTTP 連線。 443 HTTPS 超文字傳輸通訊協定安全 (HTTPS) 是安全的 HTTP 版本,其需要安全性憑證並允許加密的資訊傳輸。 22 SSH 安全殼層 (SSH) 是安全通訊的加密網路通訊協定。 您會使用此連線與 SSH 用戶端來設定 VM 及部署應用程式。 3389 RDP 選擇性。 遠端桌面通訊協定 (RDP) 可讓遠端桌面連線在您的機器上使用圖形化使用者介面。 8080 Custom Apache Tomcat 服務的預設連接埠。 針對生產伺服器,您可透過 80 和 443 來傳送流量。
安裝 Java
使用 SSH 用戶端連線到 VM。 如需指示,請參閱透過 SSH 與 PuTTY 進行連線。
在您 VM 的 Bash 提示字元中,執行下列命令:
sudo apt-get install default-jdk
驗證您的安裝。 在仍處於您的 SSH 工作階段中,且仍與 VM 保持連線的情況下,執行下列命令:
java -version
安裝和設定 Tomcat
使用 SSH 用戶端連線到 VM。 如需指示,請參閱透過 SSH 與 PuTTY 進行連線。
執行下列動作來建立 Tomcat 使用者:
a. 執行下列命令來建立新的 Tomcat 群組:
sudo groupadd tomcat
b. 建立新的 Tomcat 使用者。 將此使用者新增至主目錄為 /opt/tomcat 的 Tomcat 群組。 您可將 Tomcat 部署到此目錄:
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
執行下列動作來安裝 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>
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。
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. 使用您伺服器的值建立 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 伺服器。
a. 編輯 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 位址限制。
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>
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。
a. 若要檢閱 Tomcat 伺服器的狀態並確認您有存取權,請選取 [伺服器狀態] 。
b. 使用您的 Tomcat 認證登入。
建立應用程式
您必須建立 WAR 才能部署至 Tomcat。 如果只想要檢查環境,您可以在 Apache TomCat 網站找到範例 War。
如需在 Azure 中開發 Java 應用程式的指引,請參閱在 Azure 上建置和部署 Java 應用程式。
部署並執行應用程式
使用 SSH 用戶端連線到 VM。 如需指示,請參閱透過 SSH 與 PuTTY 進行連線。
若要以您的應用程式套件更新伺服器,請停止 Tomcat 服務:
sudo systemctl stop tomcat
將您的 FTP 使用者新增至 tomcat 群組,您就能夠寫入 webapps 資料夾。 您的 FTP 使用者是您在 Azure Stack Hub 中建立 VM 時所定義的使用者。
sudo usermod -a -G tomcat <VM-user>
若要清除 webapps 資料夾,然後載入新的或更新的 WAR,請使用 FileZilla 連線至您的 VM。 如需相關指示,請參閱使用 FileZilla 與 SFTP 連線。
a. 清除 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。