欢迎光临
我们一直在努力

如何在Ubuntu 18.04上手动设置Prisma服务器

作者选择电子前沿基金会作为Write for DOnations计划的一部分接受捐赠。

介绍

Prisma是一个数据层,它取代了应用程序中的传统对象关系映射工具(ORM)。 Prisma支持构建GraphQL服务器和REST API,简化了数据库访问,重点关注类型安全并支持声明性数据库迁移 类型安全性有助于减少潜在的代码错误和不一致,而声明性数据库迁移允许您将数据模型存储在版本控制中。 这些功能可帮助开发人员减少专注于设置数据库访问,迁移和数据管理工作流的时间。

您可以通过多种方式部署Prisma服务器,该服务器充当数据库的代理,并远程或本地托管它。 通过Prisma服务,您可以使用GraphQL API访问数据并连接到数据库,GraphQL API允许实时操作以及创建,更新和删除数据的功能。 GraphQL是API的一种查询语言,允许用户发送查询以从其服务器访问所需的确切数据。 Prisma服务器是一个独立的组件,位于数据库之上。

在本教程中,您将在Ubuntu 18.04上手动安装Prisma服务器,并在GraphQL Playground中运行测试GraphQL查询。 您将在本地托管Prisma设置代码和开发 – 在实际构建应用程序的位置 – 同时在远程服务器上运行Prisma。 通过手动运行安装,您将对设置的底层基础架构有更深入的了解和可自定义性。

虽然本教程介绍了在Ubuntu 18.04服务器上部署Prisma的手动步骤,但您也可以使用Docker Machine以更自动化的方式完成此操作,方法是按照Prisma网站上的本教程进行操作。

注意 :本节中描述的设置不包括您通常期望的生产就绪服务器的功能,例如自动备份和主动故障转移。

先决条件

要完成本教程,您需要:

第1步 – 启动Prisma Server

Prisma CLI是用于部署和管理Prisma服务的主要工具。 要启动服务,您需要设置所需的基础结构,其中包括Prisma服务器和要连接的数据库。

Docker Compose允许您管理和运行多容器应用程序。 您将使用它来设置Prisma服务所需的基础结构。

首先,创建docker-compose.yml文件以在服务器上存储Prisma服务配置。 您将使用此文件自动启动Prisma,一个关联的数据库,并在一个步骤中配置必要的详细信息。 一旦文件与Docker Compose一起使用,它将为您的数据库配置密码,因此请务必使用安全的东西替换managementAPIsecretMYSQL_ROOT_PASSWORD的密码。 运行以下命令以创建和编辑docker-compose.yml文件:

sudo nano docker-compose.yml

将以下内容添加到文件中以定义Prisma设置的服务和卷:

Docker窗,compose.yml
version: "3"services:  prisma:    image: prismagraphql/prisma:1.20    restart: always    ports:      - "4466:4466"    environment:      PRISMA_CONFIG: |        port: 4466        managementApiSecret: my-secret        databases:          default:            connector: mysql            host: mysql            port: 3306            user: root            password: prisma            migrations: true  mysql:    image: mysql:5.7    restart: always    environment:      MYSQL_ROOT_PASSWORD: prisma    volumes:      - mysql:/var/lib/mysqlvolumes:  mysql:

此配置执行以下操作:

  • 它启动了两项服务: prisma-dbdb
  • 它引入了最新版本的Prisma。 在撰写本文时,这是Prisma 1.20。
  • 它设置Prisma将可用的端口,并指定连接到databases部分中的MySQL数据库的所有凭据。

docker-compose.yml文件设置managementApiSecret ,它可以防止其他人在了解您的端点的情况下访问您的数据。 如果您将本教程用于除测试部署之外的任何其他内容,则应将managementAPIsecret更改为更安全的内容。 当你这样做时,一定要记住它,以便稍后在prisma init过程中输入它。

此文件还会提取MySQL Docker镜像并设置这些凭据。 出于本教程的目的,此Docker Compose文件会旋转MySQL映像,但您也可以将PostgreSQL与Prisma一起使用。 这两个Docker镜像都可以在Docker hub上使用:

保存并退出该文件。

现在您已经保存了所有详细信息,您可以启动Docker容器。 -d命令告诉容器以分离模式运行,这意味着它们将在后台运行:

sudo docker-compose up -d

这将获取prismamysql的Docker镜像。 您可以使用以下命令验证Docker容器是否正在运行:

sudo docker ps

您将看到与此类似的输出:

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES24f4dd6222b1        prismagraphql/prisma:1.12   "/bin/sh -c /app/sta…"   15 seconds ago      Up 1 second         0.0.0.0:4466->4466/tcp   root_prisma_1d8cc3a393a9f        mysql:5.7                   "docker-entrypoint.s…"   15 seconds ago      Up 13 seconds       3306/tcp                 root_mysql_1

通过设置Prisma服务器和数据库,您现在可以在本地工作以部署Prisma服务。

第2步 – 在本地安装Prisma

Prisma服务器为Prisma服务提供运行时环境。 现在您已启动Prisma服务器,您可以部署Prisma服务。 您将在本地运行这些步骤,而不是在服务器上运行。

首先,创建一个单独的文件夹以包含所有Prisma文件:

mkdir prisma

然后进入该文件夹:

cd prisma

如果您使用的是MacOS,可以使用Homebrew安装Prisma。 为此,请运行以下命令以添加Prisma存储库:

brew tap prisma/prisma

然后,您可以使用以下命令安装Prisma:

brew install prisma

或者,与npm

npm install -g prisma

在本地安装Prisma后,您就可以开始使用新的Prisma服务了。

第3步 – 为新的Prisma服务创建配置

安装之后,您可以使用prisma init为新的Prisma数据库API创建文件结构,该API生成使用Prisma构建应用程序所需的文件。 您的端点将自动位于prisma.yml文件中, prisma.yml将包含您可以在下一步中查询的示例数据模型。 数据模型是Prisma API的基础,并为您的应用程序指定模型。 此时,您只是创建文件和示例数据模型。 在此步骤稍后运行prisma deploy之前,您不会对数据库进行任何更改。

现在,您可以在本地运行以下命令来创建新的文件结构:

prisma init hello-world

运行此命令后,您将看到一个交互式提示。 询问时,选择, Use other server并按ENTER

  Set up a new Prisma server or deploy to an existing server?  You can set up Prisma for local development (based on docker-compose)  Use existing database      Connect to existing database  Create new database        Set up a local database using Docker  Or deploy to an existing Prisma server:  Demo server                Hosted demo environment incl. database (requires login) Use other server           Manually provide endpoint of a running Prisma server

然后,您将提供充当Prisma服务器的服务器端点。 它看起来像: http:// SERVER_IP_ADDRESS :4466 端点以http(或https)开头并且指示了端口号是关键。

Enter the endpoint of your Prisma server http://SERVER_IP_ADDRESS:4466

对于管理API密钥,请输入您在配置文件中先前指出的短语或密码:

Enter the management API secret my-secret

对于后续选项,您可以通过按ENTERservice nameservice stage选择默认变量:

Choose a name for your service hello-worldChoose a name for your stage dev

您还可以选择Prisma客户端的编程语言。 在这种情况下,您可以选择首选语言。 您可以在此处阅读有关客户的更多信息。

  Select the programming language for the generated Prisma client (Use arrow keys) Prisma TypeScript Client  Prisma Flow Client  Prisma JavaScript Client  Prisma Go Client  Don't generate

完成提示后,您将看到以下输出,确认您所做的选择:

Created 3 new files:  prisma.yml           Prisma service definition  datamodel.prisma    GraphQL SDL-based datamodel (foundation for database)  .env                 Env file including PRISMA_API_MANAGEMENT_SECRETNext steps:  1. Open folder: cd hello-world  2. Deploy your Prisma service: prisma deploy  3. Read more about deploying services:     http://bit.ly/prisma-deploy-services

进入hello-world目录:

cd hello-world

使用prisma deploy这些更改同步到您的服务器。 这会将信息从本地计算机发送到Prisma服务器,并在Prisma服务器上创建Prisma服务:

prisma deploy

注意 :再次运行prisma deploy将更新您的Prisma服务。

您的输出将如下所示:

Creating stage dev for service hello-world Deploying service `hello-world` to stage 'dev' to server 'default' 468msChanges:  User (Type)  + Created type `User`  + Created field `id` of type `GraphQLID!`  + Created field `name` of type `String!`  + Created field `updatedAt` of type `DateTime!`  + Created field `createdAt` of type `DateTime!`Applying changes 716msYour Prisma GraphQL database endpoint is live:  HTTP:  http://SERVER_IP_ADDRESS:4466/hello-world/dev  WS:    ws://SERVER_IP_ADDRESS:4466/hello-world/dev

输出显示Prisma已根据您使用类型 User数据模型(在prisma init步骤中创建)更新了数据库。 类型是数据模型的重要组成部分; 它们代表应用程序中的项目,每种类型包含多个字段。 对于您的数据模型,描述用户的关联字段是:用户的ID,名称,创建时间以及更新时间。

如果您在此阶段遇到问题并获得不同的输出,请仔细检查您是否在交互式提示中正确输入了所有字段。 您可以通过查看prisma.yml文件的内容来完成prisma.yml操作。

运行Prisma服务后,您可以连接到两个不同的端点:

  • 管理界面,可从http:// SERVER_IP_ADDRESS :4466/management ,您可以在其中管理和部署Prisma服务。

  • 适用于Prisma服务的GraphQL API,可从http:// SERVER_IP_ADDRESS :4466/ hello-world / dev

GraphQL API探索_Your Project_

您已成功设置和部署Prisma服务器。 您现在可以在GraphQL中探索查询和突变。

第4步 – 运行示例查询

要探索另一个Prisma用例,您可以尝试使用GraphQL playground工具,它是服务器上的开源GraphQL集成开发环境(IDE)。 要访问它,请从上一步骤访问浏览器中的终端:

http://SERVER_IP_ADDRESS:4466/hello-world/dev

变异是一个GraphQL术语,它描述了一种通过GraphQL修改 – 创建,更新或删除(CRUD)后端数据的方法。 您可以发送突变以创建新用户并探索功能。 为此,请在页面左侧运行以下变异:

mutation {  createUser(data: { name: "Alice" }) {    id    name  }}

按下播放按钮后,您将在页面右侧看到结果。
GraphQL Playground创建新用户

随后,如果要使用数据库中的ID列查找用户,可以运行以下查询:

query {  user(where: { id: "cjkar2d62000k0847xuh4g70o" }) {    id    name  }}

您现在已在服务器上启动并运行Prisma服务器和服务,并且您已在GraphQL的IDE中运行测试查询。

结论

您的服务器上有一个正常运行的Prisma设置。 您可以在“ 入门指南”中查看一些其他Prisma用例和后续步骤,或者在Prisma Docs中探索Prisma的功能集。 完成本教程中的所有步骤后,您可以使用许多选项来验证与数据库的连接,一种可能是使用Prisma Client

赞(0) 打赏
未经允许不得转载:老赵部落 » 如何在Ubuntu 18.04上手动设置Prisma服务器

评论 抢沙发