]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/admin/Faq.md
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / docs / admin / Faq.md
index 5fb0d9aeba4a7cece5bb90e7b766744ef9a8c610..1d0252d3f9aec0e9e8eb9a5767fdcf9a573052db 100644 (file)
@@ -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 <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 [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?
 
@@ -43,61 +16,45 @@ was killed. If it looks like this:
 then you can resume with the following command:
 
 ```sh
-./utils/setup.php --index --create-search-indices --create-country-names
+nominatim import --continue indexing
 ```
 
 If the reported rank is 26 or higher, you can also safely add `--index-noanalyse`.
 
 
-### PHP "open_basedir restriction in effect" warnings
+### PostgreSQL crashed "invalid page in block"
 
-    `PHP Warning:  file_get_contents(): open_basedir restriction in effect.`
+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.
 
-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:
+If it happened during index creation you can try rerunning the step with
 
-    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.
-
-
-### PHP timzeone warnings
-
-The Apache log may contain lots of PHP warnings like this:
-    `PHP Warning:  date_default_timezone_set() function.`
-
-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
-    date.timezone = 'America/Denver'
-
-Or
-
-```
-echo "date.timezone = 'America/Denver'" > /etc/php.d/timezone.ini
+```sh
+nominatim import --continue indexing
 ```
 
-### nominatim.so version mismatch
+Otherwise it's best to start the full setup from the beginning.
 
-When running the import you may get a version mismatch:
-`COPY_END for place failed: ERROR: incompatible library "/srv/Nominatim/nominatim/build/module/nominatim.so": version mismatch`
 
-pg_config seems to use bad includes sometimes when multiple versions
-of PostgreSQL are available in the system. Make sure you remove the
-server development libraries (`postgresql-server-dev-9.5` on Ubuntu)
-and recompile (`cmake .. && make`).
+### 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.
 
-### I see the error: "function transliteration(text) does not exist"
+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.
 
-Reinstall the nominatim functions with `setup.php --create--functions`
-and check for any errors, e.g. a missing `nominatim.so` file.
+### 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"
 
@@ -105,24 +62,12 @@ The server cannot access your database. Add `&debug=1` to your URL
 to get the full error message.
 
 
-### On CentOS the website shows "Could not connect to server"
-
-`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]]
-
-However, you can solve this the quick and dirty way by commenting out that line and then run
-
-    sudo systemctl daemon-reload
-    sudo systemctl restart httpd
-
-
 ### 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.
 
@@ -133,47 +78,42 @@ The user the webserver, e.g. Apache, runs under needs to have access to the Nomi
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO "www-data";
 ```
 
-### Website reports "Could not load library "nominatim.so"
+### Setup fails with "DB Error: extension not found"
 
-Example error message
+Make sure you have the PostgreSQL extensions "hstore" and "postgis" installed.
+See the installation instructions for a full list of required packages.
 
-```
-   SELECT make_standard_name('3039 E MEADOWLARK LN') [nativecode=ERROR: could not
-   load library "/srv/nominatim/Nominatim-3.1.0/build/module/nominatim.so":
-   /srv/nominatim/Nominatim-3.1.0/build/module/nominatim.so: cannot open shared
-   object file: Permission denied
-   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`.
+### UnicodeEncodeError: 'ascii' codec can't encode character
+
+Make sure that the operating system's locale is UTF-8. With some prebuilt
+images (e.g. LXC containers from Proxmox, see
+[discussion](https://github.com/osm-search/Nominatim/discussions/2343)) or
+images that optimize for size it might be missing.
 
-The permission need to be read&executable by everybody, e.g.
+On Ubuntu you can check the locale is installed:
 
 ```
-   -rwxr-xr-x 1 nominatim nominatim 297984 build/module/nominatim.so
+   grep UTF-8 /etc/default/locale
 ```
 
-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.
+And install it using
 
-
-### Setup.php reports "Cannot redeclare getDB()"
-
-`Cannot redeclare getDB() (previously declared in /your/path/Nominatim/lib/db.php:4)`
-
-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.
-
-    sudo pear install DB
+```
+   dpkg-reconfigure locales
+```
 
 ### I forgot to delete the flatnodes file before starting an import.
 
 That's fine. For each import the flatnodes file get overwritten.
-See [https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage]()
+See [https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage](https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage)
 for more information.
 
+
+## Running your own instance
+
+### Can I import negative OSM ids into Nominatim?
+
+No, negative IDs are no longer supported by osm2pgsql. You can use
+large 64-bit IDs that are guaranteed not to clash with OSM IDs. However,
+you will not able to use a flatnode file with them.