在 Ubuntu 18.04/CentOS 7 上安装 Hasura GraphQL 引擎在 Ubuntu 18.04/CentOS 7 上安装 Hasura GraphQL 引擎在 Ubuntu 18.04/CentOS 7 上安装 Hasura GraphQL 引擎在 Ubuntu 18.04/CentOS 7 上安装 Hasura GraphQL 引擎
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Ubuntu 18.04/CentOS 7 上安装 Hasura GraphQL 引擎

发表 admin at 2025年2月28日
类别
  • 未分类
标签

本指南将帮助您在 Ubuntu 18.04/CentOS 7 上设置 Hasura GraphQL 引擎和 Postgres 数据库。Hasura GraphQL 引擎是一个高性能 GraphQL 服务器,使您能够立即在 Postgres 数据库上设置 GraphQL 服务器和事件触发器。 GraphQL Engine 将自动生成 GraphQL 模式并处理 GraphQL 查询、订阅和变更。

使用 Hasura GraphQL Engine,构建 GraphQL 应用程序或将现有应用程序迁移到 Postgres 支持的 GraphQL 将变得非常容易。您将通过 Postgres 获得即时的实时 GraphQL API。

第1步:安装PostgreSQL数据库服务器

使用 Hasura GraphQL 引擎时,您有两种运行 PostgreSQL 数据库服务器的选项。

  1. 在虚拟机/物理主机上运行
  2. 在容器内运行它

如果您不熟悉 Docker 容器管理,我建议您在主机系统中运行数据库服务器。请按照下面的指南在 Ubuntu 18.04/CentOS 7 上安装 Postgres。

如何在 CentOS 7 上安装 PostgreSQL

在 Ubuntu 18.04/Ubuntu 16.04 上安装 PostgreSQL

步骤2:在Ubuntu 18.04/CentOS 7上安装Docker

Hasura GraphQL Engine 将在 Docker 容器中运行。这意味着您需要在主机系统上安装 Docker 引擎。以下指南将会有所帮助。

如何在 Ubuntu/Debian/Fedora/Arch/CentOS 上安装 Docker CE

安装 Docker 后,继续执行步骤 3。

步骤3:在Ubuntu 18.04/CentOS 7上部署Hasura GraphQL引擎

下载 docker-run.sh bash 脚本:

wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-run/docker-run.sh

docker-run.sh 脚本中有一个示例 docker run 命令。必须对该命令进行以下更改:

  • 数据库网址
  • 网络配置

数据库网址

编辑 HASURA_GRAPHQL_DATABASE_URL env 变量值,以便您可以连接到 Postgres 实例。请参阅下面的示例:

postgres://admin:password@localhost:5432/my-db
postgres://admin:@localhost:5432/my-db (if there is no password)

HASURA_GRAPHQL_DATABASE_URL 示例:

    postgres://admin:password@localhost:5432/my-db
  • postgres://admin:@localhost:5432/my-db (如果没有密码)

网络配置

如果您的 Postgres 实例在 localhost 上运行,则需要对 dockerrun 命令进行以下更改,以允许 Docker 容器访问主机的网络:

添加 --net=host 标志以访问主机的 Postgres 服务。

您的命令应如下所示:

docker run -d --net=host \
  -e HASURA_GRAPHQL_DATABASE_URL=postgres://username:password@hostname:port/dbname \
  -e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
  hasura/graphql-engine:latest

要检查容器是否已启动并正在运行,请运行 docker ps 命令。

$ sudo docker ps
CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS              PORTS               NAMES
5fa940fa91ad        hasura/graphql-engine:v1.0.0-alpha40   "graphql-engine serve"   9 seconds ago       Up 8 seconds                            nostalgic_hypatia

该服务应绑定到端口 8080 上的主机网络。

~# ss -tunelp | grep 8080
tcp    LISTEN   0  128  0.0.0.0:8080  0.0.0.0:*   users:(("graphql-engine",pid=12999,fd=17)) ino:83522 sk:a <-> 

通过服务器 IP 和端口 8080 访问 GraphQL 控制台。

保护 GraphQL 端点的安全

默认情况下,GraphQL 控制台可公开访问。为了保护 GraphQL 端点和 Hasura 控制台,您需要配置管理密钥。您的 docker run 命令将如下所示。

docker run -d -p 8080:8080 \
  -e HASURA_GRAPHQL_DATABASE_URL=postgres://username:password@hostname:port/dbname \
  -e HASURA_GRAPHQL_ENABLE_CONSOLE=true \
  -e HASURA_GRAPHQL_ADMIN_SECRET=myadminsecretkey \
  hasura/graphql-engine:latest

访问 GraphQL 控制台时,系统会要求您提供管理员密码。

在 Docker 中运行 Hasura GraphQL 引擎和 Postgres

如果您需要简单快速地设置 GraphQL 环境,可以在 docker 中运行 Postgres 和 GraphQL。

第 1 步:安装 Docker Compose

下载之前,请在官方 Compose 版本页面上查看 Docker Compose 的最新版本。截至撰写本文时,最新版本为“1.23.2 ”。

export VER="1.23.2"

下载保存到变量 VER 的最新稳定版本。

sudo curl -L "https://github.com/docker/compose/releases/download/${VER}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

上面的命令会将文件保存到 /usr/local/bin/docker-compose。对二进制文件应用可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

显示 Docker compose 版本。

$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01

设置配置撰写命令行完成

Compose 具有 bash 和 zsh shell 的命令完成功能。

对于 Bash 用户

将完成脚本放入 /etc/bash_completion.d/ 中。

sudo curl -L https://raw.githubusercontent.com/docker/compose/${VER}/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

获取文件或重新登录以享受完成功能。

source /etc/bash_completion.d/docker-compose

对于 Zsh 用户

在 ~/.zsh/completion/ 中下载完成脚本

mkdir -p ~/.zsh/completion
curl -L https://raw.githubusercontent.com/docker/compose/${VER}/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose

通过添加 ~/.zshrc 将该目录包含在您的 $fpath 中:

fpath=(~/.zsh/completion $fpath)

确保 compinit 已加载,或者通过添加 ~/.zshrc 来完成:

autoload -Uz compinit && compinit -i

然后重新加载你的外壳:

exec $SHELL -l

第2步:下载docker-compose文件

运行以下命令下载 Hasura 的 docker compose 文件。

mkdir graphql
cd graphql
wget https://raw.githubusercontent.com/hasura/graphql-engine/master/install-manifests/docker-compose/docker-compose.yaml

您可以编辑环境部分以添加管理员密码。

version: '3.6'
services:
  postgres:
    image: postgres
    restart: always
    volumes:
    - db_data:/var/lib/postgresql/data
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-alpha40
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    restart: always
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:@postgres:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      ASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
  db_data:

第 3 步:运行 Hasura GraphQL 引擎和 Postgres

开始使用:

$ docker-compose up -d
.....
Creating graphql_postgres_1 … done
Creating graphql_graphql-engine_1 … done

检查容器是否正在运行:

$ docker ps
CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
ac0063626d8a        hasura/graphql-engine:v1.0.0-alpha40   "graphql-engine serve"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->8080/tcp   graphql_graphql-engine_1
2928f0f1537e        postgres                               "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        5432/tcp                 graphql_postgres_1

对 docker-compose 文件进行更改后,重新启动容器。

$ docker-compose restart 
Restarting graphql_graphql-engine_1 … done
Restarting graphql_postgres_1       … done

第4步:访问Hasura控制台

打开Hasura控制台服务器IP端口8080。

您现在已准备好进行第一个 graphql 查询或设置第一个事件触发器。从 Hasura GraphQL Engine 文档了解更多信息。

©2015-2025 Norria support@norria.com