FORDECyT 2018-10
Uses a stripped version of pgserver (PostGIS http API server) to serve cached mapbox vector tiles (mvt), geojson, geobuf
Built on Node Express
Requirements
- Access to a PostGIS server
- Node and npm
PostgreSQL user
User should only have SELECT right on tables. You can create one as follows:
-- Create a group
CREATE ROLE readaccess;
-- Grant access to existing tables
GRANT USAGE ON SCHEMA public TO readaccess;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readaccess;
-- Create a final user with password
CREATE USER <user> WITH PASSWORD '<pw>';
GRANT readaccess TO <user>;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;
-- Grant access to future tables on role and user
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readaccess;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <user>;
Make sure to edit /etc/postgresql/10/main/pg_hba.conf line
local all all peer
to
local all all md5
Apache and NodeJS to serve through port :80
Edit your site on etc/apache2/sites-enabled
.
Either at the end of your site config or at the end the VirtualHost directive of add the following:
<VirtualHost *:80>
...
ProxyRequests on
ProxyPass /[path]/ http://localhost:[port]/[path]/
</VirtualHost>
Enable the following apache modules:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
And restart Apache:
sudo service apache2 restart
Now you can serve your app through port 80 instead of 8090 or something else.
NodeJS requests will be routed to port 8090 :)
Installation
If you don't have git, you can download a zip file of the project instead.
git clone this_repository
cd this_repository
npm install
cp config/dbconfig.example.json config/dbconfig.json
# now edit config/dbconfig.json for your PostGIS database
node pgserver.js
or
npm run dev / npm run start
# point your browser to [http://localhost:8090](http://localhost:8090) for more info
Attributions
pgserver's API is based on Dirt Simple PostGIS http API