云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

2019-03-26 10:30:30作者:陈雄稿源:云网牛站

本文介绍在Ubuntu 18.04/CentOS 7上安装和设置Hasura GraphQL Engine(引擎)的方法,它是一个高性能的GraphQL服务器,使你可以在Postgres数据库中无需设置GraphQL服务器和事件触发器,使用它 可以构建GraphQL应用程序或将现有应用程序移至Postgres支持的GraphQL。

 

一、安装PostgreSQL数据库参考文章

在使用Hasura GraphQL Engine时,你有两种运行PostgreSQL数据库的选项:在虚拟机/物理主机上运行它及在容器内运行它。

如果对Docker容器管理不满意,我建议你在主机系统中运行数据库,参考:

在Ubuntu 18.04/Ubuntu 16.04上安装PostgreSQL 11的说明

在CentOS 7系统上安装PostgreSQL 11的步骤

 

二、在Ubuntu 18.04/CentOS 7上安装Docker参考文章

Hasura GraphQL Engine将在Docker Container中运行,这意味着你需要在主机系统上安装Docker Engine,参考:在Ubuntu/Debian/Fedora/Arch/CentOS上安装Docker CE的方法

 

三、在Ubuntu 18.04/CentOS 7上部署Hasura GraphQL Engine

下载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命令,必须进行更改:数据库URL、网络配置。

1、数据库URL

编辑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(如果没有密码)

2、网络配置

如果你的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

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

该服务应该在端口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控制台:

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

3、保护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控制台时,系统会要求你提供管理员密钥:

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

 

四、在Docker中运行Hasura GraphQL Engine和Postgres

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

1、安装Docker Compose

当前的Docker Compose版本为1.23.2:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/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版本,运行docker-compose --version命令:

$ docker-compose --version

docker-compose version 1.23.2, build 1110ad01

2、设置Compose Command-line completion

Compose具有bash和zsh shell的command completion功能。

1]、对于Bash用户

将脚本放在/etc/bash_completion.d/中:

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

获取文件或重新登录:

source /etc/bash_completion.d/docker-compose

2]、对于Zsh用户

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

mkdir -p ~/.zsh/completion

curl -L https://raw.githubusercontent.com/docker/compose/1.23.2/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose

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

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

确保加载compinit或通过添加~/.zshrc来执行:

autoload -Uz compinit && compinit -i

然后重新加载你的shell:

exec $SHELL -l

3、下载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:

4、运行Hasura GraphQL Engine和Postgres

开始使用:

$ docker-compose up -d

.....

Creating graphql_postgres_1 … done

Creating graphql_graphql-engine_1 … done

检查容器是否正在运行,运行docker ps命令查看:

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

在docker-compose文件上进行更改时,请重新启动容器:

$ docker-compose restart 

Restarting graphql_graphql-engine_1 … done

Restarting graphql_postgres_1       … done

5、访问Hasura控制台

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

在Ubuntu 18.04/CentOS 7上安装Hasura GraphQL Engine

到了这一步,就可以使用第一个graphql查询器设置你的第一个事件触发器了。

 

相关主题

如何在Ubuntu 18.04上安装和使用PostgreSQL

精选文章
热门文章