我是否需要在 Linux 服务器上安装 Tomcat 和 MySQL 才能部署 Grails 应用程序?

Do I need to install Tomcat and MySQL on the Linux server to deploy Grails app?

我的 Grails 应用基于

我需要在服务器上安装 Tomcat 吗?

我需要在服务器上安装 MySQL 吗?

Tomcat 和 MySQL 都没有安装在开发环境中(在我的电脑上),但它似乎可以工作。

显然你必须在服务器上安装 mysql 和 tomcat。

在开发过程中,您 运行 从控制台获取 grails,因此您不需要 tomcat,因为它将使用嵌入式 tomcat,但您仍然需要安装 mysql,如果你想使用 mysql.

但是在生产环境中,您使用 'grails war command' 创建了一个 war 应用程序,然后像任何其他 war 一样将此 war 部署到 Web 容器,所以您需要 tomcat 并且还需要安装 mysql。

一言以蔽之'Yes'。

事实是,当您在开发环境中使用 grails 作为 'Apache Tomcat plugin' 提供的嵌入式 tomcat 服务器时,该版本对应于 grails 版本。

您尚未安装 mysql,但您声明了 'it seems working'。那很好笑!但它不是 mysql 没有安装就工作的(!),而是 'H2 Database Plugin' 提供的集成数据库。

因此,当您在 Linux 或其他服务器中部署您的 grails 应用程序时,您当然需要一个 tomcat 服务器来处理用户对该应用程序的请求,以及一个用于保存数据的数据库.

容器

虽然所有其他答案都指出,您已经需要一个容器(这当然是真的),但也可以选择使用其中一个“独立”插件(例如 https://grails.org/plugin/standalone)。这会将您的应用程序打包为一个胖罐子,其中容器和您的应用程序是罐子的一部分,您只需 运行 by java -jar myapp.jar (当然,您会将其集成到您的常规启动脚本中服务器)。

这通常是不错的选择,因为许多 WAR 部署的应用程序无论如何都不需要任何完整的容器功能,您可以为 [=26= 配置所有内容]您的 工作量,并且不必为所有 运行ning 战争(或您的运营团队)妥协。不利的一面是,如果容器存在安全问题等,您将不得不推出一个新的罐子。

/对于使用 Spring Bootstrap 的 grails 3,这甚至是默认选项,因为这是首选的部署方式。 Spring Boot 1.2 默认支持 Tomcat、Jetty 和 Undertow。/

数据库

您可以使用来自“其他地方”的 MySQL。但这是吹毛求疵,因为你真的需要一个 MySQL 某处 (顺便说一句:你真的应该开始使用 MySQL 也用于你的开发环境,否则你会一旦你把你的东西投入生产,就会有一些惊喜。

另请注意,您还可以继续将 H2(请参阅您的数据源配置)与文件一起使用。对于您正在存储的少量数据来说,这是一个不错的选择(可以让您免于安装数据库服务器),还有其他免费的数据库服务器,如 PostgreSQL。