2 *Note:* these installation instructions are also available in executable
3 form for use with vagrant under `vagrant/Install-on-Centos-7.sh`.
5 Installing the Required Software
6 ================================
8 These instructions expect that you have a freshly installed CentOS version 7.
9 Make sure all packages are up-to-date by running:
13 The standard CentOS repositories don't contain all the required packages,
14 you need to enable the EPEL repository as well. To enable it on CentOS,
15 install the epel-release RPM by running:
17 sudo yum install -y epel-release
19 Now you can install all packages needed for Nominatim:
21 sudo yum install -y postgresql-server postgresql-contrib postgresql-devel postgis postgis-utils \
22 git cmake make gcc gcc-c++ libtool policycoreutils-python \
23 php-pgsql php php-pear php-pear-DB php-intl libpqxx-devel proj-epsg \
24 bzip2-devel proj-devel geos-devel libxml2-devel boost-devel expat-devel zlib-devel
26 If you want to run the test suite, you need to install the following
29 sudo yum install -y python-pip python-Levenshtein python-psycopg2 \
30 python-numpy php-phpunit-PHPUnit
31 pip install --user --upgrade pip setuptools lettuce==0.2.18 six==1.9 \
32 haversine Shapely pytidylib
33 sudo pear install PHP_CodeSniffer
39 The following steps are meant to configure a fresh CentOS installation
40 for use with Nominatim. You may skip some of the steps if you have your
41 OS already configured.
43 Creating Dedicated User Accounts
44 --------------------------------
46 Nominatim will run as a global service on your machine. It is therefore
47 best to install it under its own separate user account. In the following
48 we assume this user is called nominatim and the installation will be in
49 /srv/nominatim. To create the user and directory run:
51 sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim
53 You may find a more suitable location if you wish.
55 To be able to copy and paste instructions from this manual, export
56 user name and home directory now like this:
58 export USERNAME=nominatim
59 export USERHOME=/srv/nominatim
61 **Never, ever run the installation as a root user.** You have been warned.
63 Make sure that system servers can read from the home directory:
70 CentOS does not automatically create a database cluster. Therefore, start
71 with initializing the database, then enable the server to start at boot:
73 sudo postgresql-setup initdb
74 sudo systemctl enable postgresql
77 Next tune the postgresql configuration, which is located in
78 `/var/lib/pgsql/data/postgresql.conf`. See section *Postgres Tuning* in
79 [the installation page](Installation.md) for the parameters to change.
81 Now start the postgresql service after updating this config file.
83 sudo systemctl restart postgresql
86 Finally, we need to add two postgres users: one for the user that does
87 the import and another for the webserver which should access the database
91 sudo -u postgres createuser -s $USERNAME
92 sudo -u postgres createuser apache
95 Setting up the Apache Webserver
96 -------------------------------
98 You need to create an alias to the website directory in your apache
99 configuration. Add a separate nominatim configuration to your webserver:
102 sudo tee /etc/httpd/conf.d/nominatim.conf << EOFAPACHECONF
103 <Directory "$USERHOME/Nominatim/build/website">
104 Options FollowSymLinks MultiViews
105 AddType text/html .php
106 DirectoryIndex search.php
110 Alias /nominatim $USERHOME/Nominatim/build/website
120 sudo systemctl restart httpd
123 Adding SELinux Security Settings
124 --------------------------------
126 It is a good idea to leave SELinux enabled and enforcing, particularly
127 with a web server accessible from the Internet. At a minimum the
128 following SELinux labeling should be done for Nominatim:
130 sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
131 sudo semanage fcontext -a -t lib_t "$USERHOME/Nominatim/module/nominatim.so"
132 sudo restorecon -R -v $USERHOME/Nominatim
138 Building and Configuration
139 --------------------------
141 Get the source code from Github and change into the source directory
146 git clone --recursive git://github.com/openstreetmap/Nominatim.git
153 When installing the latest source from github, you also need to
154 download the country grid:
157 wget -O data/country_osm_grid.sql.gz http://www.nominatim.org/data/country_grid.sql.gz
160 The code must be built in a separate directory. Create this directory,
161 then configure and build Nominatim in there:
165 cmake $USERHOME/Nominatim
168 You need to create a minimal configuration file that tells nominatim
169 the name of your webserver user and the URL of the website:
172 tee settings/local.php << EOF
174 @define('CONST_Database_Web_User', 'apache');
175 @define('CONST_Website_BaseURL', '/nominatim/');
180 Nominatim is now ready to use. Continue with
181 [importing a database from OSM data](Import-and-Update.md).