]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/admin/Installation.md
add typing extensions for Ubuntu22.04
[nominatim.git] / docs / admin / Installation.md
index b9c78004759ce00059f72888519580fd2c7a4993..d7d35b7e218bf6259d58704d582675138a099bbc 100644 (file)
@@ -7,7 +7,6 @@ the following operating systems:
   * [Ubuntu 20.04](../appendix/Install-on-Ubuntu-20.md)
   * [Ubuntu 18.04](../appendix/Install-on-Ubuntu-18.md)
   * [CentOS 8](../appendix/Install-on-Centos-8.md)
   * [Ubuntu 20.04](../appendix/Install-on-Ubuntu-20.md)
   * [Ubuntu 18.04](../appendix/Install-on-Ubuntu-18.md)
   * [CentOS 8](../appendix/Install-on-Centos-8.md)
-  * [CentOS 7.2](../appendix/Install-on-Centos-7.md)
 
 These OS-specific instructions can also be found in executable form
 in the `vagrant/` directory.
 
 These OS-specific instructions can also be found in executable form
 in the `vagrant/` directory.
@@ -17,12 +16,18 @@ and can't offer support.
 
   * [Docker](https://github.com/mediagis/nominatim-docker)
   * [Docker on Kubernetes](https://github.com/peter-evans/nominatim-k8s)
 
   * [Docker](https://github.com/mediagis/nominatim-docker)
   * [Docker on Kubernetes](https://github.com/peter-evans/nominatim-k8s)
+  * [Kubernetes with Helm](https://github.com/robjuz/helm-charts/blob/master/charts/nominatim/README.md)
   * [Ansible](https://github.com/synthesio/infra-ansible-nominatim)
 
 ## Prerequisites
 
 ### Software
 
   * [Ansible](https://github.com/synthesio/infra-ansible-nominatim)
 
 ## Prerequisites
 
 ### Software
 
+!!! Warning
+    For larger installations you **must have** PostgreSQL 11+ and Postgis 3+
+    otherwise import and queries will be slow to the point of being unusable.
+    Query performance has marked improvements with PostgrSQL 13+ and Postgis 3.2+.
+
 For compiling:
 
   * [cmake](https://cmake.org/)
 For compiling:
 
   * [cmake](https://cmake.org/)
@@ -30,29 +35,35 @@ For compiling:
   * [proj](https://proj.org/)
   * [bzip2](http://www.bzip.org/)
   * [zlib](https://www.zlib.net/)
   * [proj](https://proj.org/)
   * [bzip2](http://www.bzip.org/)
   * [zlib](https://www.zlib.net/)
+  * [ICU](http://site.icu-project.org/)
   * [Boost libraries](https://www.boost.org/), including system and filesystem
   * PostgreSQL client libraries
   * a recent C++ compiler (gcc 5+ or Clang 3.8+)
 
 For running Nominatim:
 
   * [Boost libraries](https://www.boost.org/), including system and filesystem
   * PostgreSQL client libraries
   * a recent C++ compiler (gcc 5+ or Clang 3.8+)
 
 For running Nominatim:
 
-  * [PostgreSQL](https://www.postgresql.org) (9.3+)
-  * [PostGIS](https://postgis.org) (2.2+)
-  * [Python 3](https://www.python.org/)
-  * [Psycopg2](https://initd.org/psycopg)
+  * [PostgreSQL](https://www.postgresql.org) (9.6+ will work, 11+ strongly recommended)
+  * [PostGIS](https://postgis.net) (2.2+ will work, 3.0+ strongly recommended)
+  * [Python 3](https://www.python.org/) (3.6+)
+  * [Python Typing Extensions](https://github.com/python/typing_extensions)
+  * [Psycopg2](https://www.psycopg.org) (2.7+)
+  * [Python Dotenv](https://github.com/theskumar/python-dotenv)
+  * [psutil](https://github.com/giampaolo/psutil)
+  * [Jinja2](https://palletsprojects.com/p/jinja/)
+  * [PyICU](https://pypi.org/project/PyICU/)
+  * [PyYaml](https://pyyaml.org/) (5.1+)
+  * [datrie](https://github.com/pytries/datrie)
   * [PHP](https://php.net) (7.0 or later)
   * PHP-pgsql
   * PHP-intl (bundled with PHP)
   * [PHP](https://php.net) (7.0 or later)
   * PHP-pgsql
   * PHP-intl (bundled with PHP)
+  * PHP-cgi (for running queries from the command line)
 
 For running continuous updates:
 
 
 For running continuous updates:
 
-  * [pyosmium](https://osmcode.org/pyosmium/) (with Python 3)
-
-For running tests:
+  * [pyosmium](https://osmcode.org/pyosmium/)
 
 
-  * [behave](http://pythonhosted.org/behave/)
-  * [nose](https://nose.readthedocs.io)
-  * [phpunit](https://phpunit.de) >= 7.3
+For dependencies for running tests and building documentation, see
+the [Development section](../develop/Development-Environment.md).
 
 ### Hardware
 
 
 ### Hardware
 
@@ -60,12 +71,12 @@ A minimum of 2GB of RAM is required or installation will fail. For a full
 planet import 64GB of RAM or more are strongly recommended. Do not report
 out of memory problems if you have less than 64GB RAM.
 
 planet import 64GB of RAM or more are strongly recommended. Do not report
 out of memory problems if you have less than 64GB RAM.
 
-For a full planet install you will need at least 800GB of hard disk space
-(take into account that the OSM database is growing fast). SSD disks
-will help considerably to speed up import and queries.
+For a full planet install you will need at least 900GB of hard disk space.
+Take into account that the OSM database is growing fast.
+Fast disks are essential. Using NVME disks is recommended.
 
 Even on a well configured machine the import of a full planet takes
 
 Even on a well configured machine the import of a full planet takes
-at least 2 days. Without SSDs 7-8 days are more realistic.
+around 2 days. On traditional spinning disks, 7-8 days are more realistic.
 
 ## Tuning the PostgreSQL database
 
 
 ## Tuning the PostgreSQL database
 
@@ -79,8 +90,7 @@ your `postgresql.conf` file.
     work_mem = (50MB)
     effective_cache_size = (24GB)
     synchronous_commit = off
     work_mem = (50MB)
     effective_cache_size = (24GB)
     synchronous_commit = off
-    checkpoint_segments = 100 # only for postgresql <= 9.4
-    max_wal_size = 1GB # postgresql > 9.4
+    max_wal_size = 1GB
     checkpoint_timeout = 10min
     checkpoint_completion_target = 0.9
 
     checkpoint_timeout = 10min
     checkpoint_completion_target = 0.9
 
@@ -120,7 +130,7 @@ If you want to install latest development version from github, make sure to
 also check out the osm2pgsql subproject:
 
 ```
 also check out the osm2pgsql subproject:
 
 ```
-git clone --recursive git://github.com/openstreetmap/Nominatim.git
+git clone --recursive https://github.com/openstreetmap/Nominatim.git
 ```
 
 The development version does not include the country grid. Download it separately:
 ```
 
 The development version does not include the country grid. Download it separately:
@@ -145,6 +155,27 @@ build at the same level as the Nominatim source directory run:
 ```
 cmake ../Nominatim
 make
 ```
 cmake ../Nominatim
 make
+sudo make install
+```
+
+!!! warning
+    The default installation no longer compiles the PostgreSQL module that
+    is needed for the legacy tokenizer from older Nominatim versions. If you
+    are upgrading an older database or want to run the
+    [legacy tokenizer](../customize/Tokenizers.md#legacy-tokenizer) for
+    some other reason, you need to enable the PostgreSQL module via
+    cmake: `cmake -DBUILD_MODULE=on ../Nominatim`. To compile the module
+    you need to have the server development headers for PostgreSQL installed.
+    On Ubuntu/Debian run: `sudo apt install postgresql-server-dev-<postgresql version>`
+
+
+Nominatim installs itself into `/usr/local` per default. To choose a different
+installation directory add `-DCMAKE_INSTALL_PREFIX=<install root>` to the
+cmake command. Make sure that the `bin` directory is available in your path
+in that case, e.g.
+
+```
+export PATH=<install root>/bin:$PATH
 ```
 
 Now continue with [importing the database](Import.md).
 ```
 
 Now continue with [importing the database](Import.md).