PostgRESTインストール


背景の説明
PostgRESTは、CRUD操作のためにrestapiインタフェースを直接生成するために使用され、バックエンドの開発作業量を低減し、高度に一貫した仕様のデータを提供するインタフェースであり、いくつかのシーンで重要な応用価値を有する.
環境説明OSバージョン:CentOS Linux release 7.1908 PostgreSQLバージョン:PostgreSQL 10、インストールプロセスは別のBlogを参照できます.
注意PostgREST依存PostgreSQL 9.5以上
1.データベースとアクセスアカウントの準備
psqlコマンドラインに入り、devuserを作成し、このユーザーのデータベースdevdbを作成します.
psql -U postgres
postgres=# CREATE USER devuser WITH PASSWORD '******';
CREATE ROLE
postgres=# CREATE DATABASE devdb OWNER devuser ENCODING = 'UTF8';

devuserを使用してログインし、テストテーブルを作成し、数行のレコードを挿入し、表示します.
psql -U devuser --password devdb
devdb=> create table rest_data(id int,rest_content varchar(12));
devdb=> insert into rest_data values(1,'Hello');
devdb=> insert into rest_data values(2,'world');
devdb=> insert into rest_data values(3,'This');
devdb=> insert into rest_data values(4,'is');
devdb=> insert into rest_data values(5,'a');
devdb=> insert into rest_data values(6,'restapi');
devdb=> select * from rest_data ;
devdb=> \q

2.メディアのインストールの準備
PostgRESTはHaskellで作成されているので、直接コンパイルする場合はHaskell環境を用意する必要があります.ここではコンパイルしたreleaseバージョンを直接採用し、releaseバージョンのアドレスを参照します.
wget https://github.com/PostgREST/postgrest/releases/download/v6.0.2/postgrest-v6.0.2-centos7.tar.xz
tar -xvf postgrest-v6.0.2-centos7.tar.xz

このファイルを解凍するとpostgrestプログラムファイルが1つしか見えません.このファイルを直接実行し、ヒントを表示します.
Missing: FILENAME

Usage: postgrest FILENAME
  PostgREST 6.0.2 (713b214) / create a REST API to an existing Postgres database

Available options:
  -h,--help                Show this help text
  FILENAME                 Path to configuration file

Example Config File:
  db-uri = "postgres://user:pass@localhost:5432/dbname"
  db-schema = "public" # this schema gets added to the search_path of every request
  db-anon-role = "postgres"
  db-pool = 10
  db-pool-timeout = 10
  
  server-host = "!4"
  server-port = 3000
  
 ...

この実行ファイルの実行には、プロファイルパラメータが必要です.
3.ソフトウェアインストールディレクトリの計画
厳密に区別するために、PostgREST関連ファイル/usr/local/pgrestディレクトリの下で、このディレクトリにbin、cfg、logフォルダをそれぞれ作成し、実行ファイル、プロファイル、ログファイルをそれぞれ格納します.
mkdir -p /usr/local/pgrest/bin
mkdir -p /usr/local/pgrest/cfg
mkdir -p /usr/local/pgrest/log

実行ファイルを/usr/local/pgrest/binディレクトリに移動
mv postgrest /usr/local/pgrest/bin/

プロファイルの作成/usr/local/pgrest/cfg/default.conf
vi  /usr/local/pgrest/cfg/default.conf

#     
db-uri = "postgres://devuser:****@192.168.56.120:5432/devdb"
db-schema = "public" # this schema gets added to the search_path of every request
db-anon-role = "devuser"
db-pool = 10
db-pool-timeout = 10

server-host = "!4"
server-port = 3000

注意:
  • db-uriのdevuserは私が最初に準備したユーザー名で、コロンの後ろにパスワードがあります.
  • db-anon-roleはdevuserが持つ役割で、ここで私は彼自身を書きます.
  • server-portはサービスポートで、ここでは3000で、必要に応じて自分で
  • を修正することができます.
    テストの実行
    /usr/local/pgrest/bin/postgrest /usr/local/pgrest/cfg/default.conf
    Attempting to connect to the database...
    Listening on port 3000
    Connection successful
    

    もう一つのウィンドウをcurlでインタフェースにアクセスしてみてください.
     curl -X GET "http://192.168.56.120:3000/rest_data?limit=10"
         :
    [{"id":1,"rest_content":"Hello"}, 
     {"id":2,"rest_content":"world"}, 
     {"id":3,"rest_content":"This"}, 
     {"id":4,"rest_content":"is"}, 
     {"id":5,"rest_content":"a"}, 
     {"id":6,"rest_content":"restapi"}]
    

    起動スクリプト/usr/local/pgrest/startup.shを追加し、必要に応じてシステムサービスを行うことができます.
    vi /usr/local/pgrest/startup.sh
    
    #!/bin/bash
    start_time=$(date +%Y%m%d%H%M%S)
    /usr/local/pgrest/bin/postgrest /usr/local/pgrest/cfg/default.conf > /usr/local/pgrest/log/log_postgrest_${start_time}.log