本文介绍在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
该服务应该在端口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控制台:
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控制台时,系统会要求你提供管理员密钥:
四、在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命令查看:
在docker-compose文件上进行更改时,请重新启动容器: $ docker-compose restart Restarting graphql_graphql-engine_1 … done Restarting graphql_postgres_1 … done 5、访问Hasura控制台 打开Hasura控制台服务器IP端口8080:
到了这一步,就可以使用第一个graphql查询器设置你的第一个事件触发器了。
相关主题 |