X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/fc961c14fa3762530123e7aad3fae77b6e89be65..4e59efa1783534a262e49901b6bfbf84b2d7f108:/VAGRANT.md diff --git a/VAGRANT.md b/VAGRANT.md index 504d28f3..4ff9d4bd 100644 --- a/VAGRANT.md +++ b/VAGRANT.md @@ -1,11 +1,11 @@ # Install Nominatim in a virtual machine for development and testing -This document describes how you can install Nominatim inside a Ubuntu 14 +This document describes how you can install Nominatim inside a Ubuntu 24 virtual machine on your desktop/laptop (host machine). The goal is to give you a development environment to easily edit code and run the test suite without affecting the rest of your system. -The installation can run largely unsupervised. You should expect 1-2h from +The installation can run largely unsupervised. You should expect 1h from start to finish depending on how fast your computer and download speed is. @@ -15,156 +15,118 @@ is. 2. [Vagrant](https://www.vagrantup.com/downloads.html) -3. Nominatim - - git clone --recursive https://github.com/twain47/Nominatim.git - - If you haven't used `--recursive`, then you can load the submodules using - - git submodule init - git submodule update - +3. Nominatim + git clone https://github.com/openstreetmap/Nominatim.git ## Installation 1. Start the virtual machine - vagrant up + vagrant up ubuntu24-nginx 2. Log into the virtual machine - vagrant ssh + vagrant ssh ubuntu24-nginx 3. Import a small country (Monaco) - You need to give the virtual machine more memory (2GB) for an import, - see `Vagrantfile`. Otherwise 1GB is enough. - See the FAQ how to skip this step and point Nominatim to an existing database. - ``` - # inside the virtual machine: - cd Nominatim - wget --no-verbose --output-document=data/monaco.osm.pbf http://download.geofabrik.de/europe/monaco-latest.osm.pbf - ./utils/setup.php --osm-file data/monaco.osm.pbf --osm2pgsql-cache 1000 --all 2>&1 | tee monaco.$$.log - ./utils/specialphrases.php --countries > data/specialphrases_countries.sql - psql -d nominatim -f data/specialphrases_countries.sql - ``` + ``` + # inside the virtual machine: + cd nominatim-project + wget --no-verbose --output-document=monaco.osm.pbf http://download.geofabrik.de/europe/monaco-latest.osm.pbf + nominatim import --osm-file monaco.osm.pbf 2>&1 | tee monaco.$$.log + ``` - To repeat an import you'd need to delete the database first + To repeat an import you'd need to delete the database first - dropdb --username postgres -if-exists nominatim + dropdb --if-exists nominatim ## Development Vagrant maps the virtual machine's port 8089 to your host machine. Thus you can -see Nominatim in action on [locahost:8089](http://localhost:8089/nominatim/). +see Nominatim in action on [localhost:8089](http://localhost:8089/nominatim/). You edit code on your host machine in any editor you like. There is no need to restart any software: just refresh your browser window. -PHP errors are written to `/var/log/apache2/error.log`. - -With `echo` and `var_dump()` you write into the output (HTML/XML/JSON) when -you either add `&debug=1` to the URL (preferred) or set -`@define('CONST_Debug', true);` in `settings/local.php`. - - - - -## Running functional tests - -Tests in `/features/db` and `/features/osm2pgsql` have to pass 100%. Other -tests might require full planet-wide data. Sadly even if you have your own -planet-wide data there will be enough differences to the openstreetmap.org -installation to cause false positives in the other tests (see FAQ). - -To run the full test suite - - cd ~/Nominatim/tests - NOMINATIM_SERVER=http://localhost:8089/nominatim lettuce features - -To run a single file - - NOMINATIM_SERVER=http://localhost:8089/nominatim lettuce features/api/reverse.feature - -To run specific tests you can add tags just before the `Scenario line`, e.g. - - @bug-34 - Scenario: address lookup for non-existing or invalid node, way, relation - -and then - - NOMINATIM_SERVER=http://localhost:8089/nominatim lettuce -t bug-34 - - -## Running unit tests - - cd ~/Nominatim/tests-php - phpunit ./ - - +Use the functions of the `log()` object to create temporary debug output. +Add `&debug=1` to the URL to see the output. +In the Python BDD test you can use `logger.info()` for temporary debug +statements. +For more information on running tests, see +https://nominatim.org/release-docs/develop/develop/Testing/ ## FAQ ##### Will it run on Windows? -Yes, Vagrant and Virtualbox can be installed on MS Windows just fine. You need a 64bit -version of Windows. +Yes, Vagrant and Virtualbox can be installed on MS Windows just fine. You need +a 64bit version of Windows. + +##### Will it run on Apple Silicon? +You might need to replace Virtualbox with [Parallels](https://www.parallels.com/products/desktop/). +There is no free/open source version of Parallels. ##### Why Monaco, can I use another country? -Of course! The Monaco import takes less than 30 minutes and works with 2GB RAM. +Of course! The Monaco import takes less than 10 minutes and works with 2GB RAM. ##### Will the results be the same as those from nominatim.openstreetmap.org? -No. Long running Nominatim installations will differ once new import features (or +No. Long-running Nominatim installations will differ once new import features (or bug fixes) get added since those usually only get applied to new/changed data. Also this document skips the optional Wikipedia data import which affects ranking -of search results. See [Nominatim instllation](http://wiki.openstreetmap.org/wiki/Nominatim/Installation) for details. +of search results. See [Nominatim installation](https://nominatim.org/release-docs/latest/admin/Installation) +for details. -##### Why Ubuntu, can I test CentOS/CoreOS/FreeBSD? +##### Why Ubuntu? Can I test CentOS/Fedora/CoreOS/FreeBSD? -In general Nominatim will run in all these environment. The installation steps +There used to be a Vagrant script for CentOS available, but the Nominatim directory +isn't symlinked/mounted to the host which makes development trickier. We used +it mainly for debugging installation with SELinux. + +In general Nominatim will run in the other environments. The installation steps are slightly different, e.g. the name of the package manager, Apache2 package name, location of files. We chose Ubuntu because that is closest to the nominatim.openstreetmap.org production environment. -You can configure/download other Vagrant boxes from [vagrantbox.es](http://www.vagrantbox.es/). - +You can configure/download other Vagrant boxes from +[https://app.vagrantup.com/boxes/search](https://app.vagrantup.com/boxes/search). ##### How can I connect to an existing database? -Let's say you have a Postgres database named `nominatim_it` on server `your-server.com` and port `5432`. The Postgres username is `postgres`. You can edit `settings/local.php` and point Nominatim to it. +Let's say you have a Postgres database named `nominatim_it` on server `your-server.com` +and port `5432`. The Postgres username is `postgres`. You can edit the `.env` in your +project directory and point Nominatim to it. - pgsql://postgres@your-server.com:5432/nominatim_it - -No data import necessary, no restarting necessary. + NOMINATIM_DATABASE_DSN="pgsql:host=your-server.com;port=5432;user=postgres;dbname=nominatim_it + +No data import or restarting necessary. If the Postgres installation is behind a firewall, you can try ssh -L 9999:localhost:5432 your-username@your-server.com inside the virtual machine. It will map the port to `localhost:9999` and then -you edit `settings/local.php` with +you edit `.env` file with - pgsql://postgres@localhost:9999/nominatim_it + NOMINATIM_DATABASE_DSN="pgsql:host=localhost;port=9999;user=postgres;dbname=nominatim_it" -To access postgres directly remember to specify the hostname, e.g. `psql --host localhost --port 9999 nominatim_it` +To access postgres directly remember to specify the hostname, +e.g. `psql --host localhost --port 9999 nominatim_it` ##### My computer is slow and the import takes too long. Can I start the virtual machine "in the cloud"? -Yes. It's possible to start the virtual machine on [Amazon AWS (plugin)](https://github.com/mitchellh/vagrant-aws) or [DigitalOcean (plugin)](https://github.com/smdahlen/vagrant-digitalocean). - - - - +Yes. It's possible to start the virtual machine on [Amazon AWS (plugin)](https://github.com/mitchellh/vagrant-aws) +or [DigitalOcean (plugin)](https://github.com/smdahlen/vagrant-digitalocean).