安装

发布页面有 适用于 macOS、Windows、Linux 和 FreeBSD 的预编译二进制文件 。Linux 二进制文件是一个静态可执行文件,可以在任何 Linux 发行版上运行。

您也可以使用您的操作系统包管理器。

您可以从 Homebrew 官方仓库 安装 PostgREST。

brew install postgrest

支持的 PostgreSQL 版本

支持

PostgreSQL >= 9.6

PostgREST 支持从 9.6 开始的所有 PostgreSQL 版本。

注意

对 PostgreSQL 版本 9.6、10 和 11 的支持已弃用。从该版本开始,PostgREST 将只支持非生命周期结束的 PostgreSQL 版本。

参见 https://postgresql.ac.cn/support/versioning/.

运行 PostgREST

如果您从发布页面下载了 PostgREST,请先解压缩文件以获取可执行文件。

# For UNIX platforms
tar Jxf postgrest-[version]-[platform].tar.xz

# On Windows you should unzip the file

现在,您可以使用 --help 标志运行 PostgREST 以查看使用说明

# Running postgrest binary
./postgrest --help

# Running postgrest installed from a package manager
postgrest --help

# You should see a usage help message

PostgREST 服务器读取配置文件作为其唯一参数

postgrest /path/to/postgrest.conf

# You can also generate a sample config file with
# postgrest -e > postgrest.conf
# You'll need to edit this file and remove the usage parts for postgrest to read it

有关配置文件的完整参考,请参见 配置.

注意

如果您在 Windows 上看到这样的对话框,可能是因为 pg_config 程序不在您的系统路径中。

../_images/win-err-dialog.png

它通常位于 C:Program FilesPostgreSQL<version>bin。有关如何修改系统路径的说明,请参见此 文章

要测试系统路径是否设置正确,请从命令行运行 pg_config。您应该看到它输出路径列表。

Docker

您可以使用以下命令获取 官方 PostgREST Docker 镜像

docker pull postgrest/postgrest

要配置容器镜像,请使用 环境变量.

有两种方法可以运行 PostgREST 容器:使用现有的外部数据库或通过 docker-compose。

带有原生 PostgreSQL 的容器化 PostgREST

在 Docker 中运行 PostgREST 的第一种方法是将其连接到主机上现有的原生数据库。

# Run the server
docker run --rm --net=host \
  -e PGRST_DB_URI="postgres://app_user:password@localhost/postgres" \
  postgrest/postgrest

上面的数据库连接字符串只是一个示例。根据需要调整角色和密码。您可能需要编辑 PostgreSQL 的 pg_hba.conf 以授予用户本地登录访问权限。

注意

Mac 上的 Docker 不支持 --net=host 标志。相反,您需要为主机创建一个 IP 地址别名。容器内部对 IP 地址的请求无法解析,并回退到主机解析。

sudo ifconfig lo0 10.0.0.10 alias

然后,您应该在数据库连接字符串中使用 10.0.0.10 作为主机。另外,请记住在 postgresql.conf 中的 listen_address 中包含 IP 地址。例如

listen_addresses = 'localhost,10.0.0.10'

您可能还需要在 pg_hba.conf 中添加一个新的 IPv4 本地连接。例如

host    all             all             10.0.0.10/32            trust

然后,docker 命令将如下所示

# Run the server
docker run --rm -p 3000:3000 \
  -e PGRST_DB_URI="postgres://app_user:password@10.0.0.10/postgres" \
  postgrest/postgrest

使用 docker-compose 容器化 PostgREST *和* 数据库

为了避免完全安装数据库,您可以将数据库和服务器都运行在容器中,并使用 docker-compose 将它们链接在一起。使用此配置

# docker-compose.yml

version: '3'
services:
  server:
    image: postgrest/postgrest
    ports:
      - "3000:3000"
    environment:
      PGRST_DB_URI: postgres://app_user:password@db:5432/app_db
      PGRST_OPENAPI_SERVER_PROXY_URI: http://127.0.0.1:3000
    depends_on:
      - db
  db:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: app_db
      POSTGRES_USER: app_user
      POSTGRES_PASSWORD: password
  # Uncomment this if you want to persist the data.
  # volumes:
  #   - "./pgdata:/var/lib/postgresql/data"

进入您保存此文件的目录并运行 docker-compose up。您将看到数据库和 PostgREST 的日志,并且能够在端口 3000 上访问后者。

如果您想在浏览器中直观地查看您的 API,可以将 swagger-ui 添加到您的 docker-compose.yml

# in services:
  swagger:
    image: swaggerapi/swagger-ui
    ports:
      - "8080:8080"
    expose:
      - "8080"
    environment:
      API_URL: https://#:3000/

这样,您就可以在浏览器中端口 8080 上看到 swagger-ui。

从源代码构建

当您的系统不存在预构建的二进制文件时,您可以从源代码构建项目。

您可以使用 Stack 从源代码构建 PostgREST。它将在您的系统上安装任何必要的 Haskell 依赖项。

  • 安装 Stack 到您的平台

  • 安装库依赖项

    操作系统

    依赖项

    Ubuntu/Debian

    libpq-dev, libgmp-dev, zlib1g-dev

    CentOS/Fedora/Red Hat

    postgresql-devel, zlib-devel, gmp-devel

    BSD

    postgresql12-client

    macOS

    libpq, gmp

  • 构建并安装二进制文件

    git clone https://github.com/PostgREST/postgrest.git
    cd postgrest
    
    # adjust local-bin-path to taste
    stack build --install-ghc --copy-bins --local-bin-path /usr/local/bin
    

注意

  • 如果构建失败,并且您的系统内存小于 1GB,请尝试添加交换文件。

  • –install-ghc 标志仅在第一次构建时需要,在后续构建中可以省略。

  • 检查服务器是否已安装:postgrest --help