diff --git a/Vagrantfile b/Vagrantfile index 889bad36..09e7eab9 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -3,12 +3,14 @@ Vagrant.configure("2") do |config| # Apache webserver - config.vm.network "forwarded_port", guest: 8089, host: 8089 + config.vm.network "forwarded_port", guest: 80, host: 8089 # If true, then any SSH connections made will enable agent forwarding. config.ssh.forward_agent = true - #config.vm.synced_folder ".", "/home/vagrant/Nominatim" + if ENV['CHECKOUT'] != 'y' then + config.vm.synced_folder ".", "/home/vagrant/Nominatim" + end config.vm.define "ubuntu" do |sub| sub.vm.box = "ubuntu/trusty64" diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index fb121c8f..fd7b808f 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -6,8 +6,9 @@ set (INSTALLDOCFILES foreach (df ${INSTALLDOCFILES}) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${df}.md - COMMAND sed [=['/^#!/d;s:^#\( \|$$\)::;s/.*#DOCS://']=] ${PROJECT_SOURCE_DIR}/vagrant/${df}.sh > ${CMAKE_CURRENT_BINARY_DIR}/${df}.md + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh ${PROJECT_SOURCE_DIR}/vagrant/${df}.sh ${CMAKE_CURRENT_BINARY_DIR}/${df}.md MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/vagrant/${df}.sh + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh COMMENT "Creating markdown docs from vagrant/${df}.sh" ) @@ -16,3 +17,11 @@ ADD_CUSTOM_TARGET( md_install_${df} ALL ) endforeach() +set (GENERALDOCFILES + Import_and_update.md + ) + +foreach (df ${GENERALDOCFILES}) + CONFIGURE_FILE(${df} ${df}) +endforeach() + diff --git a/docs/Import_and_update.md b/docs/Import_and_update.md new file mode 100644 index 00000000..c2dcf937 --- /dev/null +++ b/docs/Import_and_update.md @@ -0,0 +1,77 @@ +Importing a new database +======================== + +The following instructions explain how to create a Nominatim database +from an OSM planet file and how to keep the database up to date. It +is assumed that you have already sucessfully installed the Nominatim +software itself, if not return to the [prerequisites page](Prerequisites.md). + +Configuration setup in settings/local.php +----------------------------------------- + +There are lots of configuration settings you can tweak. Have a look +at `settings/settings.php` for a full list. Most should have a sensible default. +If you plan to import a large dataset (e.g. Europe, North America, planet), +you should also enable flatnode storage of node locations. With this +setting enabled, node coordinates are stored in a simple file instead +of the database. This will save you import time and disk storage. +Add to your settings/local.php: + + @define('CONST_Osm2pgsql_Flatnode_File', '/path/to/flatnode.file'); + + +Downloading additional data +--------------------------- + +### Wikipedia rankings + +Wikipedia can be used as an optional auxiliary data source to help indicate +the importance of osm features. Nominatim will work without this information +but it will improve the quality of the results if this is installed. +This data is available as a binary download: + + cd $NOMINATIM_SOURCE_DIR/data + wget http://www.nominatim.org/data/wikipedia_article.sql.bin + wget http://www.nominatim.org/data/wikipedia_redirect.sql.bin + +Combined the 2 files are around 1.5GB and add around 30GB to the install +size of nominatim. They also increase the install time by an hour or so. + +### UK postcodes + +Nominatim can use postcodes from an external source to improve searches that involve a UK postcode. This data can be optionally downloaded: + + cd $NOMINATIM_SOURCE_DIR/data + wget http://www.nominatim.org/data/gb_postcode_data.sql.gz + + +Initial Import of the Data +-------------------------- + +**Important:** first try the import with a small excerpt, for example from Geofabrik. + +Download the data to import and load the data with the following command: + + ./utils/setup.php --osm-file --all [--osm2pgsql-cache 28000] 2>&1 | tee setup.log + +The --osm2pgsql-cache parameter is optional but strongly recommended for +planet imports. It sets the node cache size for the osm2pgsql import part +(see -C parameter in osm2pgsql help). 28GB are recommended for a full planet +imports, for excerpts you can use less. +Adapt to your available RAM to avoid swapping. + +The import will take as little as an hour for a small country extract +and as much as 10 days for a full-scale planet import on less powerful +hardware. + + +Loading Additional Datasets +--------------------------- + +The following commands will create additional entries for countries and POI searches: + + ./utils/specialphrases.php --countries > data/specialphrases_countries.sql + psql -d nominatim -f data/specialphrases_countries.sql + ./utils/specialphrases.php --wiki-import > data/specialphrases.sql + psql -d nominatim -f data/specialphrases.sql + diff --git a/docs/bash2md.sh b/docs/bash2md.sh new file mode 100755 index 00000000..a62fbd1e --- /dev/null +++ b/docs/bash2md.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Extract markdown-formatted documentation from a source file +# +# Usage: bash2md.sh + +sed '/^#!/d;s:^#\( \|$\)::;s/.*#DOCS://' $1 > $2 diff --git a/vagrant/install-on-centos-7.sh b/vagrant/install-on-centos-7.sh index 1780a6cd..32a12e9e 100755 --- a/vagrant/install-on-centos-7.sh +++ b/vagrant/install-on-centos-7.sh @@ -1,29 +1,22 @@ #!/bin/bash # -# Installing the Required Software -# ================================ -# # *Note:* these installation instructions are also available in executable # form for use with vagrant in the vagrant/ directory. # +# Installing the Required Software +# ================================ +# # These instructions expect that you have a freshly installed CentOS version 7. # Make sure all packages are are up-to-date by running: # sudo yum update -y -# -# Setting up Repositories -# ----------------------- -# + # The standard CentOS repositories don't contain all the required packages, # you need to enable the EPEL repository as well. To enable it on CentOS, # install the epel-release RPM by running: sudo yum install -y epel-release -# -# Getting the Software Packages -# ----------------------------- -# # Now you can install all packages needed for Nominatim: sudo yum install -y postgresql-server postgresql-contrib postgresql-devel postgis postgis-utils \ @@ -83,14 +76,33 @@ # sudo -u postgres createuser -s $USERNAME - sudo -u postgres apache + sudo -u postgres createuser apache # # Setting up the Apache Webserver # ------------------------------- # # You need to create an alias to the website directory in your apache -# configuration. This can be most easily done by XXX +# configuration. Add a separate nominatim configuration to your webserver: + +#DOCS:``` +sudo cat > /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF + #DOCS: + Options FollowSymLinks MultiViews + AddType text/html .php + + +Alias /nominatim $USERHOME/build/website #DOCS:Alias /nominatim $USERHOME/Nominatim/build/website +EOFAPACHECONF +#DOCS:``` + +sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS: + +# +# Then reload apache +# + + sudo systemctl restart httpd # # Adding SELinux Security Settings @@ -113,77 +125,34 @@ # # Get the source code from Github and change into the source directory # +if [ "x$CHECKOUT" == "xy" ]; then #DOCS: cd $USERHOME sudo -u $USERNAME git clone --recursive git://github.com/twain47/Nominatim.git +#DOCS: cd Nominatim + +else #DOCS: + cd $USERHOME #DOCS: +fi #DOCS: # The code is built in a special directory. Create this directory, # then configure and build Nominatim in there: -#DOCS: cd Nominatim sudo -u $USERNAME mkdir build cd build - sudo -u $USERNAME cmake ../Nominatim + sudo -u $USERNAME cmake $USERHOME/Nominatim sudo -u $USERNAME make # You need to create a minimal configuration file that tells nominatim # the name of your webserver user: #DOCS:``` -sudo -u $USERNAME tee << EOF +sudo -u $USERNAME cat > settings/local.php << EOF --all [--osm2pgsql-cache 28000] 2>&1 | tee setup.log -# -# The --osm2pgsql-cache parameter is optional but strongly recommended for -# planet imports. It sets the node cache size for the osm2pgsql import part -# (see -C parameter in osm2pgsql help). 28GB are recommended for a full planet -# imports, for excerpts you can use less. -# Adapt to your available RAM to avoid swapping. -# -# The import will take as little as an hour for a small country extract -# and as much as 10 days for a full-scale planet import on less powerful -# hardware. -# -# -# Loading Additional Datasets -# --------------------------- -# -# The following commands will create additional entries for countries and POI searches: -# -# ./utils/specialphrases.php --countries > data/specialphrases_countries.sql -# psql -d nominatim -f data/specialphrases_countries.sql -# ./utils/specialphrases.php --wiki-import > data/specialphrases.sql -# psql -d nominatim -f data/specialphrases.sql +Nominatim is now ready to use. Continue with +[importing a database from OSM data](Import_and_update.md).