create_database.md 4.42 KB
Newer Older
jben's avatar
jben committed
1 2 3 4 5

Prérequis sur le serveurs
=========================


Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
6 7
Postgres, postgis, installation
-------------------------------
jben's avatar
jben committed
8 9 10

    apt-get install \
        postgis \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
11
        postgresql-VERSION-postgis-scripts \
jben's avatar
jben committed
12 13 14 15
        osmosis \
        postgresql-contrib \
        postgresql-plperl

Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Conf de postgres
----------------

Ceci n'est qu'un exemple. `/etc/postgresql/VERSION/main/postgresql.conf`

    shared_buffers = 2GB
    temp_buffers = 256MB
    max_prepared_transactions = 1024
    work_mem = 1GB
    maintenance_work_mem = 1GB
    max_stack_depth = 8MB

Pour l'import initial, on se fout de la coherence en cas de crash. Ou alors on
est patient, très patient, très très patient.

    fsync = off
    synchronous_commit = off
    full_page_writes = off

Penser à revenir sur une configuration plus safe après l'import.

Penser à redémarrer postgresql (service, systemctl…)

RV
jben's avatar
jben committed
40 41 42 43 44 45
--

    apt-get install \
        build-essential \
        autoconf \
        automake \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
        libpqxx3-dev \
        git

Puis on a besoin d'un user non privilégié rv, et on fait en sorte de pouvoir s'y
connecter en ssh.

    useradd -m -s /bin/bash rv
    su rv -c 'mkdir /home/rv/.ssh'
    su rv -c 'touch /home/rv/.ssh/authorized_keys'
    cat .ssh/authorized_keys > /home/rv/.ssh/authorized_keys

Compilation et installation des sources
=======================================

Avec un utilisateur non privilégié nommé rv

    git clone https://gitlab.crans.org/leger/rv.git
jben's avatar
jben committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76

    cd rv
    sh autogen.sh
    ./configure --prefix=$HOME/local
    make
    make install


Import des données
==================

Création de la database
-----------------------
    
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
77 78
    # creation database en temps qu'utilisateur postgres
    createdb -O rv rv
jben's avatar
jben committed
79
    psql -d rv -c 'CREATE EXTENSION hstore;'
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
80
    createlang plperl rv
jben's avatar
jben committed
81
    psql -d rv \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
82
        -f /usr/share/postgresql/VERSION/contrib/postgis-VERSION/postgis.sql
jben's avatar
jben committed
83
    psql -d rv \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
84
        -f /usr/share/postgresql/VERSION/contrib/postgis-VERSION/spatial_ref_sys.sql
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
85 86 87

Schéma de la base (en tant que rv)

jben's avatar
jben committed
88 89 90 91 92 93 94
    psql -d rv \
        -f /usr/share/doc/osmosis/examples/pgsnapshot_schema_0.6.sql
    psql -d rv \
        -f /usr/share/doc/osmosis/examples/pgsnapshot_schema_0.6_action.sql

Ajouts pour rv

Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
95 96 97 98 99
    psql -d rv -f local/share/rv/sql/00-schema.sql
    psql -d rv -f local/share/rv/sql/00-schema-rv_heigt.sql
    cat local/share/rv/sql/10-fonctions-*.sql | psql -d rv
    psql -d rv -f local/share/rv/sql/20-functions-update-rv.sql
    psql -d rv -f local/share/rv/sql/30-fonctions-osmosisUpdate.sql
jben's avatar
jben committed
100 101 102 103 104 105 106 107 108

Import des données OSM
----------------------

Téléchargement :

    mkdir data/
    mkdir data/import
    wget -P data/  \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
109
        http://download.geofabrik.de/europe/france-latest.osm.pbf
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
110 111 112

alternative:
http://download.geofabrik.de/north-america/us/pennsylvania-latest.osm.pbf
jben's avatar
jben committed
113 114
        
    osmosis \
Jean-Benoist Leger's avatar
Jean-Benoist Leger committed
115
        --read-pbf file=data/france-latest.osm.pbf \
jben's avatar
jben committed
116 117
        --write-pgsql-dump directory=data/import/

118
Import initial (en tant que postgres pour avoir le droit de COPY):
jben's avatar
jben committed
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177

    dir=$(pwd)/data/import
    (
        echo "COPY nodes FROM '$dir/nodes.txt';"
        echo "COPY relation_members FROM '$dir/relation_members.txt';"
        echo "COPY relations FROM '$dir/relations.txt';"
        echo "COPY users FROM '$dir/users.txt';"
        echo "COPY way_nodes FROM '$dir/way_nodes.txt';"
        echo "COPY ways FROM '$dir/ways.txt';"
    ) \
        | xargs -d '\n' -i -P 0 psql -d rv -c {}

Une petite analyse de ce qu'on a mis :

    psql -d rv -c "VACUUM ANALYZE;"

On se casse :

    cd ..

Import des données SRTM
-----------------------
    
Récuperer la liste des tiles srtm necessaires
    
    psql -d rv \
        -t -F ' ' -A \
        -c 'SELECT DISTINCT floor(ST_X(geom)),floor(ST_Y(geom)) from nodes;' \
        > data/list_needed_srtm


Telecharger les données srtm

    mkdir data/srtmzip
    rv/utils/dlsrtm data/list_needed_srtm data/srtmzip/

Dézippage

    mkdir data/srtm
    rv/utils/unzipsrtm data/srtmzip/ data/srtm/

Remplissage paralelle de la database

    rv/utils/populate_height_table_parallel \
        data/list_needed_srtm 12 \
        rv/height/rv_populate_height_table dbname=rv data/srtm/


Une petite analyse de ce qu'on a mis :

    psql -d rv -c "VACUUM ANALYZE;"


Remplissage initial des tables perso
------------------------------------

    psql -d rv -f rv/sql/90-initial-import.sql


178 179 180 181 182
Finalisation
------------

    psql -d rv -c 'CLUSTER;'
    psql -d rv -c 'VACUUM ANALYZE;'
jben's avatar
jben committed
183 184 185 186 187 188 189 190 191


Ménage
------

Un petit coup de balai

    rm -r data/