Docs

Documentation versions (currently viewingVaadin 24)
Documentation translations (currently viewingChinese)

此页面为机器翻译自官方文档,原文请见 http://vaadin.com/docs。可能包含错误、不准确或表述不清之处。Vaadin 不保证或声明本翻译的准确性、可靠性或及时性。

部署项目

将您的 Vaadin 应用程序部署到 Fly.io 并连接到数据库。

在本地构建好 Vaadin walking skeleton 后,您可能希望将其部署,以便其他人(朋友、同事或客户)可以试用。

部署 Vaadin 应用程序与部署其他 Spring Boot 应用程序没有差别。大多数 Vaadin 应用都运行在单台服务器上,但只要运行环境支持 session affinity,您也可以在集群中运行它们。

Note
什么是 Session Affinity?

在集群中,session affinity 可确保来自同一用户会话的所有请求总是转发到同一台服务器。这避免了会话复制的需求,可以提升性能。其代价是,如果有服务器故障,则其上存储的所有会话都将丢失。

您将学习如何将 walking skeleton 部署到 Fly.io。目的是让您的应用能够快速运行起来,而非面向生产环境的准备。

在开始之前:

  • 注册 Fly.io 账号。

  • 安装 Fly.io CLI

  • 使用您的账号登录。

详细信息请参见 Fly.io 文档

Important

Fly.io 并非完全免费,但为新用户提供了免费试用。

部署 Skeleton

在项目根目录下,运行:

Source code
terminal
fly launch --ha=false -y

--ha=false 参数防止 Fly.io 启动多台机器。这很重要,因为 Vaadin 应用程序是 stateful 的,并且如果没有 session affinity,运行多个实例会产生会话问题。Fly.io 默认不支持 session affinity。

-y 参数会接受全部默认参数。如果移除该参数,您可以进入交互式会话变更参数配置。

部署完成后,CLI 会显示您应用可用的 URL。

添加数据库

默认情况下,新的 walking skeleton 使用内存中的 H2 数据库。这对于测试来说足够了,但应用程序重启后所有数据会丢失。为了实现更真实的部署,您需要将其连接到持久化的 PostgreSQL 数据库。

创建数据库

运行:

Source code
terminal
fly postgres create -n <postgres-app-name> --initial-cluster-size 1 --volume-size 10 --vm-size shared-cpu-1x -r arn

这将在斯德哥尔摩区域创建一个具有 10 GB 磁盘空间、1 个共享 CPU 和 256 MB 内存的单机 PostgreSQL 集群。若想进入可选项更多的交互式会话,请运行不带参数的 fly postgres create

然后将数据库连接到您的应用程序:

Source code
terminal
fly postgres attach <postgres-app-name> --app <app-name>

这会向应用添加一个 DATABASE_URL 密钥。CLI 也会在终端打印它。其格式如下:

Source code
properties
DATABASE_URL=postgres://<username>:<password>@<hostname>:5432/<database>?sslmode=disable

Java 应用需要 JDBC URL、用户名和密码而不是此 URL。您需要设置新的密钥:

Source code
terminal
fly secrets set DATABASE_JDBC_URL="jdbc:postgresql://<hostname>:5432/<database>?sslmode=disable" DATABASE_USER=[username] DATABASE_PASSWORD=[password]

DATABASE_URL 中的实际值替换占位符。

更新应用程序

为项目添加 PostgreSQL JDBC 驱动。在 pom.xml 中包含:

Source code
XML
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

然后创建新文件 src/main/resources/application-prod.properties,内容如下:

Source code
properties
spring.datasource.url=${DATABASE_JDBC_URL}
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver

重新部署应用程序:

Source code
terminal
fly deploy

您的 walking skeleton 现在已使用 PostgreSQL 替代 H2,并由 Hibernate 管理架构。

如需生产级部署,请参阅以下指南:添加 Flyway替换 H2

清理资源

为避免不必要的收费,请在完成后移除已部署资源:

Source code
terminal
fly apps destroy <app-name> <postgres-app-name> -y

这将永久删除应用和数据库。