2018-05-08 20:43:34 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2019-04-16 05:45:10 +00:00
|
|
|
set -x
|
|
|
|
|
|
|
|
function CreatePostgressqlConfig()
|
|
|
|
{
|
|
|
|
cp /etc/postgresql/10/main/postgresql.custom.conf.tmpl /etc/postgresql/10/main/postgresql.custom.conf
|
|
|
|
sudo -u postgres echo "autovacuum = $AUTOVACUUM" >> /etc/postgresql/10/main/postgresql.custom.conf
|
|
|
|
cat /etc/postgresql/10/main/postgresql.custom.conf
|
|
|
|
}
|
|
|
|
|
2018-05-08 20:43:34 +00:00
|
|
|
if [ "$#" -ne 1 ]; then
|
|
|
|
echo "usage: <import|run>"
|
|
|
|
echo "commands:"
|
|
|
|
echo " import: Set up the database and import /data.osm.pbf"
|
|
|
|
echo " run: Runs Apache and renderd to serve tiles at /tile/{z}/{x}/{y}.png"
|
|
|
|
echo "environment variables:"
|
|
|
|
echo " THREADS: defines number of threads used for importing / tile rendering"
|
2019-06-13 13:39:04 +00:00
|
|
|
echo " UPDATES: consecutive updates (enabled/disabled)"
|
2018-05-08 20:43:34 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "import" ]; then
|
|
|
|
# Initialize PostgreSQL
|
2019-04-16 05:45:10 +00:00
|
|
|
CreatePostgressqlConfig
|
2018-05-08 20:43:34 +00:00
|
|
|
service postgresql start
|
|
|
|
sudo -u postgres createuser renderer
|
|
|
|
sudo -u postgres createdb -E UTF8 -O renderer gis
|
|
|
|
sudo -u postgres psql -d gis -c "CREATE EXTENSION postgis;"
|
|
|
|
sudo -u postgres psql -d gis -c "CREATE EXTENSION hstore;"
|
|
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE geometry_columns OWNER TO renderer;"
|
|
|
|
sudo -u postgres psql -d gis -c "ALTER TABLE spatial_ref_sys OWNER TO renderer;"
|
|
|
|
|
|
|
|
# Download Luxembourg as sample if no data is provided
|
|
|
|
if [ ! -f /data.osm.pbf ]; then
|
|
|
|
echo "WARNING: No import file at /data.osm.pbf, so importing Luxembourg as example..."
|
|
|
|
wget -nv http://download.geofabrik.de/europe/luxembourg-latest.osm.pbf -O /data.osm.pbf
|
2019-06-13 13:39:04 +00:00
|
|
|
wget -nv http://download.geofabrik.de/europe/luxembourg.poly -O /data.poly
|
|
|
|
fi
|
|
|
|
|
|
|
|
# determine and set osmosis_replication_timestamp (for consecutive updates)
|
|
|
|
osmium fileinfo /data.osm.pbf > /var/lib/mod_tile/data.osm.pbf.info
|
|
|
|
osmium fileinfo /data.osm.pbf | grep 'osmosis_replication_timestamp=' | cut -b35-44 > /var/lib/mod_tile/replication_timestamp.txt
|
|
|
|
REPLICATION_TIMESTAMP=$(cat /var/lib/mod_tile/replication_timestamp.txt)
|
|
|
|
|
|
|
|
# initial setup of osmosis workspace (for consecutive updates)
|
|
|
|
sudo -u renderer openstreetmap-tiles-update-expire $REPLICATION_TIMESTAMP
|
|
|
|
|
|
|
|
# copy polygon file if available
|
|
|
|
if [ -f /data.poly ]; then
|
|
|
|
sudo -u renderer cp /data.poly /var/lib/mod_tile/data.poly
|
2018-05-08 20:43:34 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Import data
|
2019-09-18 08:19:58 +00:00
|
|
|
sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua --number-processes ${THREADS:-4} ${OSM2PGSQL_EXTRA_ARGS} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf
|
2019-06-14 21:23:42 +00:00
|
|
|
|
|
|
|
# Create indexes
|
|
|
|
sudo -u postgres psql -d gis -f indexes.sql
|
|
|
|
|
2019-03-14 09:42:58 +00:00
|
|
|
service postgresql stop
|
2018-05-08 20:43:34 +00:00
|
|
|
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" = "run" ]; then
|
2019-06-18 10:26:15 +00:00
|
|
|
# Clean /tmp
|
|
|
|
rm -rf /tmp/*
|
2019-08-20 17:40:24 +00:00
|
|
|
|
2019-06-18 10:55:51 +00:00
|
|
|
# Fix postgres data privileges
|
|
|
|
chown postgres:postgres /var/lib/postgresql -R
|
2019-06-18 10:26:15 +00:00
|
|
|
|
2019-08-31 11:44:23 +00:00
|
|
|
# Configure Apache CORS
|
|
|
|
if [ "$ALLOW_CORS" == "1" ]; then
|
|
|
|
echo "export APACHE_ARGUMENTS='-D ALLOW_CORS'" >> /etc/apache2/envvars
|
|
|
|
fi
|
|
|
|
|
2018-05-08 20:43:34 +00:00
|
|
|
# Initialize PostgreSQL and Apache
|
2019-04-16 05:45:10 +00:00
|
|
|
CreatePostgressqlConfig
|
2018-05-08 20:43:34 +00:00
|
|
|
service postgresql start
|
|
|
|
service apache2 restart
|
|
|
|
|
|
|
|
# Configure renderd threads
|
|
|
|
sed -i -E "s/num_threads=[0-9]+/num_threads=${THREADS:-4}/g" /usr/local/etc/renderd.conf
|
|
|
|
|
2019-06-13 13:39:04 +00:00
|
|
|
# start cron job to trigger consecutive updates
|
|
|
|
if [ "$UPDATES" = "enabled" ]; then
|
|
|
|
/etc/init.d/cron start
|
|
|
|
fi
|
|
|
|
|
2018-05-08 20:43:34 +00:00
|
|
|
# Run
|
|
|
|
sudo -u renderer renderd -f -c /usr/local/etc/renderd.conf
|
2019-03-14 09:42:58 +00:00
|
|
|
service postgresql stop
|
2018-05-08 20:43:34 +00:00
|
|
|
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "invalid command"
|
2019-03-14 09:42:58 +00:00
|
|
|
exit 1
|