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).
This commit is contained in:
Sarah Hoffmann
2016-06-07 00:17:15 +02:00
parent ff6c3a705b
commit d1b1acaf1d
5 changed files with 133 additions and 69 deletions

6
Vagrantfile vendored
View File

@@ -3,12 +3,14 @@
Vagrant.configure("2") do |config| Vagrant.configure("2") do |config|
# Apache webserver # 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. # If true, then any SSH connections made will enable agent forwarding.
config.ssh.forward_agent = true 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| config.vm.define "ubuntu" do |sub|
sub.vm.box = "ubuntu/trusty64" sub.vm.box = "ubuntu/trusty64"

View File

@@ -6,8 +6,9 @@ set (INSTALLDOCFILES
foreach (df ${INSTALLDOCFILES}) foreach (df ${INSTALLDOCFILES})
ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${df}.md 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 MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/vagrant/${df}.sh
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bash2md.sh
COMMENT "Creating markdown docs from vagrant/${df}.sh" COMMENT "Creating markdown docs from vagrant/${df}.sh"
) )
@@ -16,3 +17,11 @@ ADD_CUSTOM_TARGET( md_install_${df} ALL
) )
endforeach() endforeach()
set (GENERALDOCFILES
Import_and_update.md
)
foreach (df ${GENERALDOCFILES})
CONFIGURE_FILE(${df} ${df})
endforeach()

77
docs/Import_and_update.md Normal file
View File

@@ -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 <your data 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

7
docs/bash2md.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
#
# Extract markdown-formatted documentation from a source file
#
# Usage: bash2md.sh <infile> <outfile>
sed '/^#!/d;s:^#\( \|$\)::;s/.*#DOCS://' $1 > $2

View File

@@ -1,29 +1,22 @@
#!/bin/bash #!/bin/bash
# #
# Installing the Required Software
# ================================
#
# *Note:* these installation instructions are also available in executable # *Note:* these installation instructions are also available in executable
# form for use with vagrant in the vagrant/ directory. # 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. # These instructions expect that you have a freshly installed CentOS version 7.
# Make sure all packages are are up-to-date by running: # Make sure all packages are are up-to-date by running:
# #
sudo yum update -y sudo yum update -y
#
# Setting up Repositories
# -----------------------
#
# The standard CentOS repositories don't contain all the required packages, # 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, # you need to enable the EPEL repository as well. To enable it on CentOS,
# install the epel-release RPM by running: # install the epel-release RPM by running:
sudo yum install -y epel-release sudo yum install -y epel-release
#
# Getting the Software Packages
# -----------------------------
#
# Now you can install all packages needed for Nominatim: # Now you can install all packages needed for Nominatim:
sudo yum install -y postgresql-server postgresql-contrib postgresql-devel postgis postgis-utils \ 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 createuser -s $USERNAME
sudo -u postgres apache sudo -u postgres createuser apache
# #
# Setting up the Apache Webserver # Setting up the Apache Webserver
# ------------------------------- # -------------------------------
# #
# You need to create an alias to the website directory in your apache # 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
<Directory "$USERHOME/build/website"> #DOCS:<Directory "$USERHOME/Nominatim/build/website">
Options FollowSymLinks MultiViews
AddType text/html .php
</Directory>
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 # Adding SELinux Security Settings
@@ -113,77 +125,34 @@
# #
# Get the source code from Github and change into the source directory # Get the source code from Github and change into the source directory
# #
if [ "x$CHECKOUT" == "xy" ]; then #DOCS:
cd $USERHOME cd $USERHOME
sudo -u $USERNAME git clone --recursive git://github.com/twain47/Nominatim.git 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, # The code is built in a special directory. Create this directory,
# then configure and build Nominatim in there: # then configure and build Nominatim in there:
#DOCS: cd Nominatim
sudo -u $USERNAME mkdir build sudo -u $USERNAME mkdir build
cd build cd build
sudo -u $USERNAME cmake ../Nominatim sudo -u $USERNAME cmake $USERHOME/Nominatim
sudo -u $USERNAME make sudo -u $USERNAME make
# You need to create a minimal configuration file that tells nominatim # You need to create a minimal configuration file that tells nominatim
# the name of your webserver user: # the name of your webserver user:
#DOCS:``` #DOCS:```
sudo -u $USERNAME tee << EOF sudo -u $USERNAME cat > settings/local.php << EOF
<?php <?php
@define('CONST_Database_Web_User', 'apache'); @define('CONST_Database_Web_User', 'apache');
EOF EOF
#DOCS:``` #DOCS:```
# 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
# ---------------------------
#
# The following data is optional but download is strongly recommended:
#
# sudo -u $USERNAME wget -O data/wikipedia_article.sql.bin http://www.nominatim.org/data/wikipedia_article.sql.bin
# sudo -u $USERNAME wget -O data/wikipedia_redirect.sql.bin http://www.nominatim.org/data/wikipedia_redirect.sql.bin
# sudo -u $USERNAME wget -O data/gb_postcode_data.sql.gz http://www.nominatim.org/data/gb_postcode_data.sql.gz
#
#
# Initial Import of the Data
# --------------------------
#
# **Attention:** 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 <your data 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
Nominatim is now ready to use. Continue with
[importing a database from OSM data](Import_and_update.md).