./gradlew bootRun -Dgrails.env=prod
20 部署
版本 6.2.0
20 部署
Grails 應用程式可以使用多種方式部署,每種方式都有其優缺點。
20.1 獨立
"./gradlew bootRun"
您現在應該非常熟悉此方法,因為這是開發階段執行應用程式最常見的方法。會啟動一個嵌入式 Tomcat 伺服器,從開發來源載入 Web 應用程式,因此它可以擷取應用程式檔案的任何變更。
您可以使用下列方式在生產環境中執行應用程式
您可以使用 bootRun
Gradle 工作來執行應用程式。下一個指令使用 Gradle Wrapper。
./gradlew bootRun
您可以指定提供 grails.env
系統屬性的環境。
./gradlew -Dgrails.env=prod bootRun
可執行 WAR 或 JAR 檔案
在 Grails 3.0 或以上版本中部署的另一種方式是使用對可執行 JAR 或 WAR 檔案的新支援。若要建立可執行檔案,請執行 grails package
grails package
或者,您可以使用 assemble
Gradle 任務。
./gradlew assemble
然後,您可以使用 Java 安裝來執行 WAR 檔案或 JAR
java -Dgrails.env=prod -jar build/libs/mywar-0.1.war (or .jar)
TAR/ZIP 發行
注意:TAR/ZIP 發行組裝已從 Grails 3.1 中移除。 |
20.2 容器部署(例如 Tomcat)
Grails 應用程式可以部署到 Servlet 容器或應用程式伺服器。
WAR 檔案
在生產環境中部署 Grails 應用程式的常見方法是透過 WAR 檔案部署到現有的 Servlet 容器。容器允許多個應用程式在同一個埠上部署,但路徑不同。
建立 WAR 檔案就像執行 war 指令一樣簡單
grails war
這將產生一個 WAR 檔案,可以部署到容器中的 build/libs
目錄。
請注意,Grails 預設會在 WAR 檔案中包含一個 Tomcat 的可嵌入版本,以便它可以執行(請參閱前一節),如果您部署到不同版本的 Tomcat,這可能會造成問題。如果您不打算使用嵌入式容器,則應移除 Tomcat 相依性,或在 build.gradle
中將範圍變更為 testImplementation
,然後再部署到您的生產容器
testImplementation "org.springframework.boot:spring-boot-starter-tomcat"
應用程式伺服器
Grails 架構要求執行時期容器支援 Servlet 3.0 以上版本。預設情況下,Grails 架構應用程式會與一個可嵌入的 Tomcat 捆綁在一起,並且測試主要使用 Tomcat 進行。任何符合最低要求的 Servlet 容器都應該能夠執行 Grails 架構應用程式,但對於特定容器的錯誤或設定,可能需要一些解決方法。
20.3 部署設定任務
設定獨立部署的 HTTPS 和 SSL 憑證
若要設定 SSL 憑證並在 HTTPS 埠上監聽(而不是 HTTP),請將下列屬性新增到 application.yml
server:
port: 8443 # The port to listen on
ssl:
enabled: true # Activate HTTPS mode on the server port
key-store: <the-location-of-your-keystore> # e.g. /etc/tomcat7/keystore/tomcat.keystore
key-store-password: <your-key-store-password> # e.g. changeit
key-alias: <your-key-alias> # e.g. tomcat
key-password: <usually-the-same-as-your-key-store-password>
這些設定會控制生產部署的嵌入式 Tomcat 容器。或者,可以在命令列中指定這些屬性。範例:-Dserver.ssl.enabled=true -Dserver.ssl.key-store=/path/to/keystore
。
不支援透過應用程式屬性設定 HTTP 和 HTTPS 連接器。如果您想要同時擁有這兩個連接器,則需要以程式設計方式設定其中一個。(可以在下列操作指南中找到更多相關資訊。) |
還有其他相關設定。進一步參考