]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/admin/Faq.md
Upgrade Travis-CI from Ubuntu 18 to 20
[nominatim.git] / docs / admin / Faq.md
index db5e101c83dbfafc579ad03ea693b029343fdb66..bca6b49ddd6c6fae26da3df26ce6611c7e179c62 100644 (file)
@@ -22,21 +22,38 @@ then you can resume with the following command:
 If the reported rank is 26 or higher, you can also safely add `--index-noanalyse`.
 
 
+### PostgreSQL crashed "invalid page in block"
+
+Usually serious problem, can be a hardware issue, not all data written to disc
+for example. Check PostgreSQL log file and search PostgreSQL issues/mailing
+list for hints.
+
+If it happened during index creation you can try rerunning the step with
+
+```sh
+./utils/setup.php --create-search-indices --ignore-errors
+```
+
+Otherwise it's best to start the full setup from the beginning.
+
+
 ### PHP "open_basedir restriction in effect" warnings
 
-    `PHP Warning:  file_get_contents(): open_basedir restriction in effect.`
+    PHP Warning:  file_get_contents(): open_basedir restriction in effect.
 
-You need to adjust the [open_basedir](http://www.php.net/manual/en/ini.core.php#ini.open-basedir) setting
-in your PHP configuration (`php.ini file`). By default this setting may look like this:
+You need to adjust the
+[open_basedir](https://www.php.net/manual/en/ini.core.php#ini.open-basedir)
+setting in your PHP configuration (`php.ini` file). By default this setting may
+look like this:
 
     open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/
 
-Either add reported directories to the list or disable this setting temporarily by 
-dding ";" at the beginning of the line. Don't forget to enable this setting again
-once you are done with the PHP command line operations.
+Either add reported directories to the list or disable this setting temporarily
+by adding ";" at the beginning of the line. Don't forget to enable this setting
+again once you are done with the PHP command line operations.
 
 
-### PHP timzeone warnings
+### PHP timezeone warnings
 
 The Apache log may contain lots of PHP warnings like this:
     `PHP Warning:  date_default_timezone_set() function.`
@@ -44,9 +61,9 @@ The Apache log may contain lots of PHP warnings like this:
 You should set the default time zone as instructed in the warning in
 your `php.ini` file. Find the entry about timezone and set it to
 something like this:
-  
+
     ; Defines the default timezone used by the date functions
-    ; http://php.net/date.timezone
+    ; https://php.net/date.timezone
     date.timezone = 'America/Denver'
 
 Or
@@ -66,6 +83,14 @@ server development libraries (`postgresql-server-dev-9.5` on Ubuntu)
 and recompile (`cmake .. && make`).
 
 
+### I see the error "ERROR: permission denied for language c"
+
+`nominatim.so`, written in C, is required to be installed on the database
+server. Some managed database (cloud) services like Amazon RDS do not allow
+this. There is currently no work-around other than installing a database
+on a non-managed machine.
+
+
 ### I see the error: "function transliteration(text) does not exist"
 
 Reinstall the nominatim functions with `setup.php --create--functions`
@@ -81,13 +106,18 @@ If you are using a flatnode file, then it may also be that the underlying
 filesystem does not fully support 'mmap'. A notable candidate is virtualbox's
 vboxfs.
 
+### I see the error: "clang: Command not found" on CentOS
+
+On CentOS 7 users reported `/opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found`.
+Double-check clang is installed. Instead of `make` try running `make CLANG=true`.
+
 ### nominatim UPDATE failed: ERROR: buffer 179261 is not owned by resource owner Portal
 
-Several users [reported this](https://github.com/openstreetmap/Nominatim/issues/1168) during the initial import of the database. It's 
-something Postgresql internal Nominatim doesn't control. And Postgresql forums
+Several users [reported this](https://github.com/openstreetmap/Nominatim/issues/1168) during the initial import of the database. It's
+something PostgreSQL internal Nominatim doesn't control. And PostgreSQL forums
 suggest it's threading related but definitely some kind of crash of a process.
 Users reported either rebooting the server, different hardware or just trying
-the import again worked. 
+the import again worked.
 
 ### The website shows: "Could not get word tokens"
 
@@ -99,10 +129,11 @@ to get the full error message.
 
 `could not connect to server: No such file or directory`
 
-On CentOS v7 the PostgreSQL server is started with `systemd`.
-Check if `/usr/lib/systemd/system/httpd.service` contains a line `PrivateTmp=true`.
-If so then Apache cannot see the `/tmp/.s.PGSQL.5432` file. It's a good security feature,
-so use the [preferred solution](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
+On CentOS v7 the PostgreSQL server is started with `systemd`. Check if
+`/usr/lib/systemd/system/httpd.service` contains a line `PrivateTmp=true`. If
+so then Apache cannot see the `/tmp/.s.PGSQL.5432` file. It's a good security
+feature, so use the
+[preferred solution](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
 
 However, you can solve this the quick and dirty way by commenting out that line and then run
 
@@ -110,14 +141,12 @@ However, you can solve this the quick and dirty way by commenting out that line
     sudo systemctl restart httpd
 
 
-### "must be an array or an object that implements Countable" warning in /usr/share/pear/DB.php
-
-The warning started with PHP 7.2. Make sure you have at least [version 1.9.3 of PEAR DB](https://github.com/pear/DB/releases)
-installed.
-
 ### Website reports "DB Error: insufficient permissions"
 
-The user the webserver, e.g. Apache, runs under needs to have access to the Nominatim database. You can find the user like [this](https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as), for default Ubuntu operating system for example it's `www-data`.
+The user the webserver, e.g. Apache, runs under needs to have access to the
+Nominatim database. You can find the user like
+[this](https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as),
+for default Ubuntu operating system for example it's `www-data`.
 
 1. Repeat the `createuser` step of the installation instructions.
 
@@ -140,9 +169,10 @@ Example error message
    CONTEXT: PL/pgSQL function make_standard_name(text) line 5 at assignment]
 ```
 
-The Postgresql database, i.e. user postgres, needs to have access to that file.
+The PostgreSQL database, i.e. user `postgres`, needs to have access to that file.
 
-The permission need to be read & executable by everybody, e.g.
+The permission need to be read & executable by everybody, but not writeable
+by everybody, e.g.
 
 ```
    -rwxr-xr-x 1 nominatim nominatim 297984 build/module/nominatim.so
@@ -153,21 +183,21 @@ Try `chmod a+r nominatim.so; chmod a+x nominatim.so`.
 When running SELinux, make sure that the
 [context is set up correctly](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
 
-### Setup.php fails with "DB Error: extension not found"
+When you recently updated your operating system, updated PostgreSQL to
+a new version or moved files (e.g. the build directory) you should
+recreate `nominatim.so`. Try
 
-Make sure you have the Postgres extensions hstore and postgis installed.
-See the installation instruction for a full list of required packages.
-
-
-### Setup.php reports "Cannot redeclare getDB()"
+```
+   cd build
+   rm -r module/
+   cmake $main_Nominatim_path && make
+```
 
-`Cannot redeclare getDB() (previously declared in /your/path/Nominatim/lib/db.php:4)`
+### Setup.php fails with "DB Error: extension not found"
 
-The message is a bit misleading as PHP needs to load the file `DB.php` and
-instead re-loads Nominatim's `db.php`. To solve this make sure you
-have the [Pear module 'DB'](http://pear.php.net/package/DB/) installed.
+Make sure you have the PostgreSQL extensions "hstore" and "postgis" installed.
+See the installation instructions for a full list of required packages.
 
-    sudo pear install DB
 
 ### I forgot to delete the flatnodes file before starting an import.
 
@@ -178,22 +208,6 @@ for more information.
 
 ## Running your own instance
 
-### Can I import multiple countries and keep them up to date?
-
-You should use the extracts and updates from https://download.geofabrik.de.
-For the initial import, download the countries you need and merge them.
-See [OSM Help](https://help.openstreetmap.org/questions/48843/merging-two-or-more-geographical-areas-to-import-two-or-more-osm-files-in-nominatim)
-for examples how to do that. Use the resulting single osm file when
-running `setup.php`.
-
-For updates you need to download the change files for each country
-once per day and apply them **separately** using
-
-    ./utils/update.php --import-diff <filename> --index
-    
-See [this issue](https://github.com/openstreetmap/Nominatim/issues/60#issuecomment-18679446)
-for a script that runs the updates using osmosis.
-
 ### Can I import negative OSM ids into Nominatim?
 
 See [this question of Stackoverflow](https://help.openstreetmap.org/questions/64662/nominatim-flatnode-with-negative-id).