X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/8c3a0efe8b75a06279998e66a932d8a56c483961..0fabeefc3e65318509a979f327d12e50a67fc802:/docs/admin/Advanced-Installations.md diff --git a/docs/admin/Advanced-Installations.md b/docs/admin/Advanced-Installations.md index 8486b6a2..ee38f3e4 100644 --- a/docs/admin/Advanced-Installations.md +++ b/docs/admin/Advanced-Installations.md @@ -5,9 +5,34 @@ your Nominatim database. It is assumed that you have already successfully installed the Nominatim software itself, if not return to the [installation page](Installation.md). -## Importing multiple regions +## Importing multiple regions (without updates) -To import multiple regions in your database, you need to configure and run `utils/import_multiple_regions.sh` file. This script will set up the update directory which has the following structure: +To import multiple regions in your database you can simply give multiple +OSM files to the import command: + +``` +nominatim import --osm-file file1.pbf --osm-file file2.pbf +``` + +If you already have imported a file and want to add another one, you can +use the add-data function to import the additional data as follows: + +``` +nominatim add-data --file +nominatim refresh --postcodes +nominatim index -j +``` + +Please note that adding additional data is always significantly slower than +the original import. + +## Importing multiple regions (with updates) + +If you want to import multiple regions _and_ be able to keep them up-to-date +with updates, then you can use the scripts provided in the `utils` directory. + +These scripts will set up an `update` directory in your project directory, +which has the following structure: ```bash update @@ -17,7 +42,6 @@ update    │   └── monaco    │   └── sequence.state    └── tmp - ├── combined.osm.pbf └── europe ├── andorra-latest.osm.pbf └── monaco-latest.osm.pbf @@ -25,85 +49,121 @@ update ``` -The `sequence.state` files will contain the sequence ID, which will be used by pyosmium to get updates. The tmp folder is used for import dump. +The `sequence.state` files contain the sequence ID for each region. They will +be used by pyosmium to get updates. The `tmp` folder is used for import dump and +can be deleted once the import is complete. -### Configuring multiple regions -The file `import_multiple_regions.sh` needs to be edited as per your requirement: +### Setting up multiple regions -1. List of countries. eg: +Create a project directory as described for the +[simple import](Import.md#creating-the-project-directory). If necessary, +you can also add an `.env` configuration with customized options. In particular, +you need to make sure that `NOMINATIM_REPLICATION_UPDATE_INTERVAL` and +`NOMINATIM_REPLICATION_RECHECK_INTERVAL` are set according to the update +interval of the extract server you use. - COUNTRIES="europe/monaco europe/andorra" +Copy the scripts `utils/import_multiple_regions.sh` and `utils/update_database.sh` +into the project directory. -2. Path to Build directory. eg: +Now customize both files as per your requirements - NOMINATIMBUILD="/srv/nominatim/build" +1. List of countries. e.g. -3. Path to Update directory. eg: - - UPDATEDIR="/srv/nominatim/update" + COUNTRIES="europe/monaco europe/andorra" + +2. URL to the service providing the extracts and updates. eg: -4. Replication URL. eg: - BASEURL="https://download.geofabrik.de" DOWNCOUNTRYPOSTFIX="-latest.osm.pbf" - -!!! tip - If your database already exists and you want to add more countries, replace the setting up part - `${SETUPFILE} --osm-file ${UPDATEDIR}/tmp/combined.osm.pbf --all 2>&1` - with `${UPDATEFILE} --import-file ${UPDATEDIR}/tmp/combined.osm.pbf 2>&1`. -### Setting up multiple regions +5. Followup in the update script can be set according to your installation. + E.g. for Photon, + + FOLLOWUP="curl http://localhost:2322/nominatim-update" -Run the following command from your Nominatim directory after configuring the file. + will handle the indexing. - bash ./utils/import_multiple_regions.sh -!!! danger "Important" - This file uses osmium-tool. It must be installed before executing the import script. - Installation instructions can be found [here](https://osmcode.org/osmium-tool/manual.html#installation). +To start the initial import, change into the project directory and run -## Updating multiple regions +``` + bash import_multiple_regions.sh +``` -To import multiple regions in your database, you need to configure and run ```utils/update_database.sh```. -This uses the update directory set up while setting up the DB. +### Updating the database -### Configuring multiple regions +Change into the project directory and run the following command: -The file `update_database.sh` needs to be edited as per your requirement: + bash update_database.sh -1. List of countries. eg: +This will get diffs from the replication server, import diffs and index +the database. The default replication server in the +script([Geofabrik](https://download.geofabrik.de)) provides daily updates. - COUNTRIES="europe/monaco europe/andorra" +## Importing Nominatim to an external PostgreSQL database -2. Path to Build directory. eg: +You can install Nominatim using a database that runs on a different server when +you have physical access to the file system on the other server. Nominatim +uses a custom normalization library that needs to be made accessible to the +PostgreSQL server. This section explains how to set up the normalization +library. - NOMINATIMBUILD="/srv/nominatim/build" +### Option 1: Compiling the library on the database server -3. Path to Update directory. eg: - - UPDATEDIR="/srv/nominatim/update" +The most sure way to get a working library is to compile it on the database +server. From the prerequisites you need at least cmake, gcc and the +PostgreSQL server package. -4. Replication URL. eg: - - BASEURL="https://download.geofabrik.de" - DOWNCOUNTRYPOSTFIX="-updates" +Clone or unpack the Nominatim source code, enter the source directory and +create and enter a build directory. -5. Followup can be set according to your installation. eg: For Photon, +```sh +cd Nominatim +mkdir build +cd build +``` - FOLLOWUP="curl http://localhost:2322/nominatim-update" +Now configure cmake to only build the PostgreSQL module and build it: - will handle the indexing. +``` +cmake -DBUILD_IMPORTER=off -DBUILD_API=off -DBUILD_TESTS=off -DBUILD_DOCS=off -DBUILD_OSM2PGSQL=off .. +make +``` -### Updating the database +When done, you find the normalization library in `build/module/nominatim.so`. +Copy it to a place where it is readable and executable by the PostgreSQL server +process. -Run the following command from your Nominatim directory after configuring the file. +### Option 2: Compiling the library on the import machine - bash ./utils/update_database.sh +You can also compile the normalization library on the machine from where you +run the import. -This will get diffs from the replication server, import diffs and index the database. The default replication server in the script([Geofabrik](https://download.geofabrik.de)) provides daily updates. +!!! important + You can only do this when the database server and the import machine have + the same architecture and run the same version of Linux. Otherwise there is + no guarantee that the compiled library is compatible with the PostgreSQL + server running on the database server. -## Verification and further setup +Make sure that the PostgreSQL server package is installed on the machine +**with the same version as on the database server**. You do not need to install +the PostgreSQL server itself. -Instructions for import verification and other details like importing Wikidata can be found in [import and update page](Import-and-Update.md) +Download and compile Nominatim as per standard instructions. Once done, you find +the normalization library in `build/module/nominatim.so`. Copy the file to +the database server at a location where it is readable and executable by the +PostgreSQL server process. + +### Running the import + +On the client side you now need to configure the import to point to the +correct location of the library **on the database server**. Add the following +line to your your `.env` file: + +```php +NOMINATIM_DATABASE_MODULE_PATH="" +``` +Now change the `NOMINATIM_DATABASE_DSN` to point to your remote server and continue +to follow the [standard instructions for importing](/admin/Import).