]> git.openstreetmap.org Git - nominatim.git/blob - docs/Install-on-Ubuntu-16.md
de84f5564f33abee885a95c4b529fbbbe49c8c73
[nominatim.git] / docs / Install-on-Ubuntu-16.md
1
2
3
4
5
6
7
8
9 *Note:* these installation instructions are also available in executable
10         form for use with vagrant under vagrant/Install-on-Ubuntu-16.sh.
11
12 Installing the Required Software
13 ================================
14
15 These instructions expect that you have a freshly installed Ubuntu 16.04.
16
17 Make sure all packages are are up-to-date by running:
18
19
20
21     sudo apt-get update -qq
22
23 Now you can install all packages needed for Nominatim:
24
25     sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
26                             libboost-filesystem-dev libexpat1-dev zlib1g-dev libxml2-dev\
27                             libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev \
28                             postgresql-server-dev-9.5 postgresql-9.5-postgis-2.2 postgresql-contrib-9.5 \
29                             apache2 php php-pgsql libapache2-mod-php php-pear php-db \
30                             php-intl git
31
32 If you want to run the test suite, you need to install the following
33 additional packages:
34
35     sudo apt-get install -y python3-setuptools python3-dev python3-pip \
36                             python3-psycopg2 python3-tidylib phpunit php-cgi
37
38     pip3 install --user behave nose # urllib3
39     sudo pear install PHP_CodeSniffer
40
41
42 System Configuration
43 ====================
44
45 The following steps are meant to configure a fresh Ubuntu installation
46 for use with Nominatim. You may skip some of the steps if you have your
47 OS already configured.
48
49 Creating Dedicated User Accounts
50 --------------------------------
51
52 Nominatim will run as a global service on your machine. It is therefore
53 best to install it under its own separate user account. In the following
54 we assume this user is called nominatim and the installation will be in
55 /srv/nominatim. To create the user and directory run:
56
57     sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
58
59 You may find a more suitable location if you wish.
60
61 To be able to copy and paste instructions from this manual, export
62 user name and home directory now like this:
63
64     export USERNAME=nominatim
65     export USERHOME=/srv/nominatim
66
67 **Never, ever run the installation as a root user.** You have been warned.
68
69 Make sure that system servers can read from the home directory:
70
71     chmod a+x $USERHOME
72
73 Setting up PostgreSQL
74 ---------------------
75
76 Tune the postgresql configuration, which is located in 
77 `/etc/postgresql/9.5/main/postgresql.conf`. See section *Postgres Tuning* in
78 [the installation page](Installation.md) for the parameters to change.
79
80 Restart the postgresql service after updating this config file.
81
82     sudo systemctl restart postgresql
83
84
85 Finally, we need to add two postgres users: one for the user that does
86 the import and another for the webserver which should access the database
87 for reading only:
88
89
90     sudo -u postgres createuser -s $USERNAME
91     sudo -u postgres createuser www-data
92
93
94 Setting up the Apache Webserver
95 -------------------------------
96
97 You need to create an alias to the website directory in your apache
98 configuration. Add a separate nominatim configuration to your webserver:
99
100 ```
101 sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
102 <Directory "$USERHOME/Nominatim/build/website">
103   Options FollowSymLinks MultiViews
104   AddType text/html   .php
105   DirectoryIndex search.php
106   Require all granted
107 </Directory>
108
109 Alias /nominatim $USERHOME/Nominatim/build/website
110 EOFAPACHECONF
111 ```
112
113
114
115
116 Then enable the configuration and restart apache
117
118
119     sudo a2enconf nominatim
120     sudo systemctl restart apache2
121
122
123 Installing Nominatim
124 ====================
125
126 Building and Configuration
127 --------------------------
128
129 Get the source code from Github and change into the source directory
130
131
132
133     cd $USERHOME
134     git clone --recursive git://github.com/openstreetmap/Nominatim.git
135     cd Nominatim
136
137
138
139
140
141 When installing the latest source from github, you also need to
142 download the country grid:
143
144
145     wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
146
147
148 The code must be built in a separate directory. Create this directory,
149 then configure and build Nominatim in there:
150
151
152     mkdir build
153     cd build
154     cmake $USERHOME/Nominatim
155     make
156
157 You need to create a minimal configuration file that tells nominatim
158 where it is located on the webserver:
159
160 ```
161 tee settings/local.php << EOF
162 <?php
163  @define('CONST_Website_BaseURL', '/nominatim/');
164 EOF
165 ```
166
167
168 Nominatim is now ready to use. Continue with
169 [importing a database from OSM data](Import-and-Update.md).