./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
这将在 build/libs
目录中生成一个可以部署到容器的 WAR 文件。
请注意,默认情况下,Grails 会在 WAR 文件中包含一个可嵌入的 Tomcat 版本,以便它可以运行(请参阅上一节),如果您部署到不同版本的 Tomcat,这可能会导致问题。 如果您不打算使用嵌入式容器,那么您应该在部署到 build.gradle
中的生产容器之前删除 Tomcat 依赖项或将范围更改为 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 连接器。 如果您希望同时拥有两者,则需要以编程方式配置其中之一。 (有关如何执行此操作的更多信息,请参阅下面的操作指南。) |
还有其他相关设置。 进一步参考