From d1b1acaf1dce32d0e7dfd6879459e51fd6d55535 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 7 Jun 2016 00:17:15 +0200 Subject: [PATCH] split instruction into software installation and import Basically leaves the part that needs to be done by the automatic vagrant script in the bash script and moves the remaining part into an OS-independent md file. Also fixes some of the instructions for CentOS. Now almost runs through (some minor issue with permission remains). --- Vagrantfile | 6 +- docs/CMakeLists.txt | 11 +++- docs/Import_and_update.md | 77 +++++++++++++++++++++++++ docs/bash2md.sh | 7 +++ vagrant/install-on-centos-7.sh | 101 ++++++++++++--------------------- 5 files changed, 133 insertions(+), 69 deletions(-) create mode 100644 docs/Import_and_update.md create mode 100755 docs/bash2md.sh 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). -- 2.45.1