X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/62747c934d3445b000810f8a7737ea86777995e3..1d2f4264a2453ac83492213aff37f4d294845f68:/docs/admin/Faq.md diff --git a/docs/admin/Faq.md b/docs/admin/Faq.md index 5fb0d9ae..bca6b49d 100644 --- a/docs/admin/Faq.md +++ b/docs/admin/Faq.md @@ -1,33 +1,6 @@ -# Running Your Own Instance +# Troubleshooting Nominatim Installations -### 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 --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 [https://help.openstreetmap.org/questions/64662/nominatim-flatnode-with-negative-id]() - -### Missing XML or text declaration - -The website might show: `XML Parsing Error: XML or text declaration not at start of entity Location.` - -Make sure there are no spaces at the beginning of your `settings/local.php` file. - - -# Installation +## Installation Issues ### Can a stopped/killed import process be resumed? @@ -49,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.` @@ -71,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 @@ -93,11 +83,41 @@ 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` and check for any errors, e.g. a missing `nominatim.so` file. +### I see the error: "ERROR: mmap (remap) failed" + +This may be a simple out-of-memory error. Try reducing the memory used +for `--osm2pgsql-cache`. Also make sure that overcommitting memory is +allowed: `cat /proc/sys/vm/overcommit_memory` should print 0 or 1. + +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 +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 website shows: "Could not get word tokens" @@ -109,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 [[#PostgreSQL_UNIX_Socket_Location_on_CentOS|preferred solution]] +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 @@ -122,7 +143,10 @@ However, you can solve this the quick and dirty way by commenting out that line ### 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. @@ -145,9 +169,10 @@ Example error message CONTEXT: PL/pgSQL function make_standard_name(text) line 5 at assignment] ``` -The user the webserver, e.g. Apache, runs under needs to have access to that file. Same for the user the Postgres runs as. 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 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 @@ -155,21 +180,24 @@ The permission need to be read&executable by everybody, e.g. Try `chmod a+r nominatim.so; chmod a+x nominatim.so`. -### Setup.php fails with "DB Error: extension not found" - -Make sure you have the Postgres extensions hstore and postgis installed. -See the installation instruction for a full list of required packages. +When running SELinux, make sure that the +[context is set up correctly](../appendix/Install-on-Centos-7/#adding-selinux-security-settings). +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 -### 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. @@ -177,3 +205,17 @@ That's fine. For each import the flatnodes file get overwritten. See [https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage]() for more information. + +## Running your own instance + +### Can I import negative OSM ids into Nominatim? + +See [this question of Stackoverflow](https://help.openstreetmap.org/questions/64662/nominatim-flatnode-with-negative-id). + +### Missing XML or text declaration + +The website might show: `XML Parsing Error: XML or text declaration not at start of entity Location.` + +Make sure there are no spaces at the beginning of your `settings/local.php` file. + +