安装
发布页面有 适用于 macOS、Windows、Linux 和 FreeBSD 的预编译二进制文件 。Linux 二进制文件是一个静态可执行文件,可以在任何 Linux 发行版上运行。
您也可以使用您的操作系统包管理器。
您可以从 Homebrew 官方仓库 安装 PostgREST。
brew install postgrest
您可以从 官方端口 安装 PostgREST。
pkg install hs-postgrest
您可以从 社区仓库 安装 PostgREST。
pacman -S postgrest
您可以从 nixpkgs 安装 PostgREST。
nix-env -i haskellPackages.postgrest
您可以使用 Chocolatey 或 Scoop 安装 PostgREST。
choco install postgrest
scoop install postgrest
支持的 PostgreSQL 版本
支持 |
PostgreSQL >= 9.6 |
PostgREST 支持从 9.6 开始的所有 PostgreSQL 版本。
注意
对 PostgreSQL 版本 9.6、10 和 11 的支持已弃用。从该版本开始,PostgREST 将只支持非生命周期结束的 PostgreSQL 版本。
运行 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
程序不在您的系统路径中。

它通常位于 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
。