Skip to content
master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

resto

[WARNING] This repository is for resto v5+. For prior resto version, please check the resto v2.x branch

Code Climate Average time to resolve an issue Percentage of issues still open

resto is a metadata catalog and a search engine dedicated to geospatialized data. Originally, it’s main purpose it to handle Earth Observation satellite imagery but it can be used to store any kind of metadata localized in time and space.

resto search API is compliant with the CEOS OpenSearch Best Practice Document and is mentioned in ESA's "Exploitation Platform Common Core Components" as the closest implementation of a catalogue component according to the requirements specified in ESA's "Exploitation Platform Open Architecture"

Online demo

You an try resto capability from the online demo !

References

Here are some projects that use resto.

If you plan to use resto and would like to have your project added to this list, feel free to contact support

Installation

Prerequesites

resto installation and deployment is based on docker-compose. It can run on any OS as long as the following software are up and running:

  • bash
  • Docker engine (i.e. docker)
  • Docker compose (i.e. docker-compose)
  • PostgreSQL client (i.e. psql)

Configuration

All configuration options are defined within the config.env file.

For a local installation, you can leave it untouched. Otherwise, just make your own configuration. It's self explanatory (send me an email if not ;)

Note that each time you change the configuration file, you should undeploy then redeploy the service.

External Database

resto can use an external PostgreSQL database (version 11+).

The following extensions must be installed on the target database:

  • postgis
  • postgis_topology
  • unaccent
  • uuid-ossp
  • pg_trgm

For instance suppose that the external database is "resto" :

    DATABASE_NAME=resto

    PGPASSWORD=${DATABASE_SUPERUSER_PASSWORD} createdb -X -v ON_ERROR_STOP=1 -h "${DATABASE_HOST}" -p "${DATABASE_PORT}" -U "${DATABASE_SUPERUSER_NAME}" ${DATABASE_NAME}

    PGPASSWORD=${DATABASE_SUPERUSER_PASSWORD} psql -X -v ON_ERROR_STOP=1 -h "${DATABASE_HOST}" -p "${DATABASE_PORT}" -U "${DATABASE_SUPERUSER_NAME}" -d "${DATABASE_NAME}" -f ./build/resto-database/sql/00_resto_extensions.sql

Where DATABASE_SUPERUSER_NAME is a database user with sufficient privileges to install extensions ("postgres" user for instance)

A normal PG user with create schema and insert on spatial_ref_sys rights is necessary in order for resto to operate. To give a user the suitable rights, run the following sql commands:

    grant create on database <dbname> to <dbuser>;
    grant insert on table spatial_ref_sys to <dbuser>;

resto tables, functions and triggers will be installed in a resto schema by running scripts/installOnExternalDB.sh:

    ./scripts/installOnExternalDB.sh -e <config file>

Note: The insert on spatial_ref_sys right can be revoked once the database is installed (first deploy) by running:

revoke insert on table spatial_ref_sys from <dbuser>; 

Hardware

[IMPORTANT] In production mode (see below), the default configuration of the PostgreSQL server is for a 64Go RAM server. Changes this in configuration file accordingly to your real configuration

Building and deploying

After reviewing your configuration file, run one of following command:

(for production)

    ./deploy prod

(for development)

    ./deploy dev

Docker images

On first deployment, the following images are pulled from dockerhub:

  • ubuntu
  • mdillon/postgis
  • php

And the following images are built from local Dockerfiles:

  • jjrom/resto
  • jjrom/resto-database

Docker volumes

The following permanent docker volumes are created on first deployment:

  • resto_database_data - contains resto database (i.e. PostgreSQL PGDATA directory)
  • resto_static_content - contains static files uploaded to the server (e.g. user's avatar pictures)

Docker network

The docker network rnet is created on first deployment. This network is shared by the following images

Production vs development

The development environment differs from the production environment by the following aspects:

  • The source code under /app directory is mount within the container
  • The Xdebug extension is enabled
  • PHP opcache is disabled
  • All SQL requests are logged
  • The default postgres configuration is set for a small configuration (i.e. 4Go RAM)

FAQ

Test the service

Resolve the endpoint provided by the deploy script

    curl http://localhost:5252

If evertyhing runs fine, it should display

    {"status":"success","message":"Hello"}

How do i undeploy the service ?

Assuming that the application name is "resto" (see deploy "-p" option)

    ./undeploy resto

How do i check the logs of the running application ?

Assuming that the application name is "resto" (see deploy "-p" option)

    docker-compose --project-name resto -f docker-compose.yml -f docker-compose-restodb.yml logs -f

How to i build locally the docker images

Use docker-compose:

    # This will build the application server image (i.e. jjrom/resto)
    docker-compose -f docker-compose.yml build

    # This will build the database server image (i.e. jjrom/resto-database)
    docker-compose -f docker-compose-restodb.yml build

Support

resto is developped and maintained by jeobrowser.

For questions, support or anything related to resto feel free to contact

    jeobrowser
    50 quai de Tounis
    31000 Toulouse
    Tel   : +33 6 19 59 17 35
    email : jerome.gasperi@gmail.com
You can’t perform that action at this time.