mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-14 01:47:57 +00:00
Compare commits
14 Commits
v4.3.2
...
docs-3.5.x
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ba1ee6981 | ||
|
|
ff9ffa0351 | ||
|
|
4a6f7e3095 | ||
|
|
d15f57e589 | ||
|
|
96e7310aa6 | ||
|
|
5167168516 | ||
|
|
b052e5eb37 | ||
|
|
f6c00b9721 | ||
|
|
b62b7ffc0e | ||
|
|
d4f615232b | ||
|
|
dc854d379b | ||
|
|
e1b4c0a20e | ||
|
|
0d90f41f1c | ||
|
|
3dd182a915 |
@@ -63,7 +63,7 @@ Run the following command from your Nominatim directory after configuring the fi
|
||||
This file uses osmium-tool. It must be installed before executing the import script.
|
||||
Installation instructions can be found [here](https://osmcode.org/osmium-tool/manual.html#installation).
|
||||
|
||||
## Updating multiple regions
|
||||
### Updating multiple regions
|
||||
|
||||
To import multiple regions in your database, you need to configure and run ```utils/update_database.sh```.
|
||||
This uses the update directory set up while setting up the DB.
|
||||
@@ -103,7 +103,69 @@ Run the following command from your Nominatim directory after configuring the fi
|
||||
|
||||
This will get diffs from the replication server, import diffs and index the database. The default replication server in the script([Geofabrik](https://download.geofabrik.de)) provides daily updates.
|
||||
|
||||
## Verification and further setup
|
||||
## Importing Nominatim to an external PostgreSQL database
|
||||
|
||||
Instructions for import verification and other details like importing Wikidata can be found in [import and update page](Import-and-Update.md)
|
||||
You can install Nominatim using a database that runs on a different server when
|
||||
you have physical access to the file system on the other server. Nominatim
|
||||
uses a custom normalization library that needs to be made accessible to the
|
||||
PostgreSQL server. This section explains how to set up the normalization
|
||||
library.
|
||||
|
||||
### Option 1: Compiling the library on the database server
|
||||
|
||||
The most sure way to get a working library is to compile it on the database
|
||||
server. From the prerequisites you need at least cmake, gcc and the
|
||||
PostgreSQL server package.
|
||||
|
||||
Clone or unpack the Nominatim source code, enter the source directory and
|
||||
create and enter a build directory.
|
||||
|
||||
```sh
|
||||
cd Nominatim
|
||||
mkdir build
|
||||
cd build
|
||||
```
|
||||
|
||||
Now configure cmake to only build the PostgreSQL module and build it:
|
||||
|
||||
```
|
||||
cmake -DBUILD_IMPORTER=off -DBUILD_API=off -DBUILD_TESTS=off -DBUILD_DOCS=off -DBUILD_OSM2PGSQL=off ..
|
||||
make
|
||||
```
|
||||
|
||||
When done, you find the normalization library in `build/module/nominatim.so`.
|
||||
Copy it to a place where it is readable and executable by the PostgreSQL server
|
||||
process.
|
||||
|
||||
### Option 2: Compiling the library on the import machine
|
||||
|
||||
You can also compile the normalization library on the machine from where you
|
||||
run the import.
|
||||
|
||||
!!! important
|
||||
You can only do this when the database server and the import machine have
|
||||
the same architecture and run the same version of Linux. Otherwise there is
|
||||
no guarantee that the compiled library is compatible with the PostgreSQL
|
||||
server running on the database server.
|
||||
|
||||
Make sure that the PostgreSQL server package is installed on the machine
|
||||
**with the same version as on the database server**. You do not need to install
|
||||
the PostgreSQL server itself.
|
||||
|
||||
Download and compile Nominatim as per standard instructions. Once done, you find
|
||||
the nomrmalization library in `build/module/nominatim.so`. Copy the file to
|
||||
the database server at a location where it is readable and executable by the
|
||||
PostgreSQL server process.
|
||||
|
||||
### Running the import
|
||||
|
||||
On the client side you now need to configure the import to point to the
|
||||
correct location of the library **on the database server**. Add the following
|
||||
line to your your `settings/local.php` file:
|
||||
|
||||
```php
|
||||
@define('CONST_Database_Module_Path', '<directory on the database server where nominatim.so resides>');
|
||||
```
|
||||
|
||||
Now change the `CONST_Database_DSN` to point to your remote server and continue
|
||||
to follow the [standard instructions for importing](/admin/Import).
|
||||
|
||||
@@ -22,6 +22,21 @@ then you can resume with the following command:
|
||||
If the reported rank is 26 or higher, you can also safely add `--index-noanalyse`.
|
||||
|
||||
|
||||
### PostgreSQL crashed "invalid page in block"
|
||||
|
||||
Usually serious problem, can be a hardware issue, not all data written to disc
|
||||
for example. Check PostgreSQL log file and search PostgreSQL issues/mailing
|
||||
list for hints.
|
||||
|
||||
If it happened during index creation you can try rerunning the step with
|
||||
|
||||
```sh
|
||||
./utils/setup.php --create-search-indices --ignore-errors
|
||||
```
|
||||
|
||||
Otherwise it's best to start the full setup from the beginning.
|
||||
|
||||
|
||||
### PHP "open_basedir restriction in effect" warnings
|
||||
|
||||
PHP Warning: file_get_contents(): open_basedir restriction in effect.
|
||||
@@ -38,7 +53,7 @@ by adding ";" at the beginning of the line. Don't forget to enable this setting
|
||||
again once you are done with the PHP command line operations.
|
||||
|
||||
|
||||
### PHP timzeone warnings
|
||||
### PHP timezeone warnings
|
||||
|
||||
The Apache log may contain lots of PHP warnings like this:
|
||||
`PHP Warning: date_default_timezone_set() function.`
|
||||
@@ -156,7 +171,8 @@ Example error message
|
||||
|
||||
The PostgreSQL database, i.e. user `postgres`, needs to have access to that file.
|
||||
|
||||
The permission need to be read & executable by everybody, e.g.
|
||||
The permission need to be read & executable by everybody, but not writeable
|
||||
by everybody, e.g.
|
||||
|
||||
```
|
||||
-rwxr-xr-x 1 nominatim nominatim 297984 build/module/nominatim.so
|
||||
@@ -167,6 +183,16 @@ Try `chmod a+r nominatim.so; chmod a+x nominatim.so`.
|
||||
When running SELinux, make sure that the
|
||||
[context is set up correctly](../appendix/Install-on-Centos-7/#adding-selinux-security-settings).
|
||||
|
||||
When you recently updated your operating system, updated PostgreSQL to
|
||||
a new version or moved files (e.g. the build directory) you should
|
||||
recreate `nominatim.so`. Try
|
||||
|
||||
```
|
||||
cd build
|
||||
rm -r module/
|
||||
cmake $main_Nominatim_path && make
|
||||
```
|
||||
|
||||
### Setup.php fails with "DB Error: extension not found"
|
||||
|
||||
Make sure you have the PostgreSQL extensions "hstore" and "postgis" installed.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Importing and Updating the Database
|
||||
# Importing the 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
|
||||
@@ -253,70 +253,3 @@ entire US adds about 10GB to your database.
|
||||
```
|
||||
|
||||
|
||||
## Updates
|
||||
|
||||
There are many different ways to update your Nominatim database.
|
||||
The following section describes how to keep it up-to-date with Pyosmium.
|
||||
For a list of other methods see the output of `./utils/update.php --help`.
|
||||
|
||||
!!! warning
|
||||
If you have configured a flatnode file for the import, then you
|
||||
need to keep this flatnode file around for updates as well.
|
||||
|
||||
#### Installing the newest version of Pyosmium
|
||||
|
||||
It is recommended to install Pyosmium via pip. Make sure to use python3.
|
||||
Run (as the same user who will later run the updates):
|
||||
|
||||
```sh
|
||||
pip3 install --user osmium
|
||||
```
|
||||
|
||||
Nominatim needs a tool called `pyosmium-get-updates` which comes with
|
||||
Pyosmium. You need to tell Nominatim where to find it. Add the
|
||||
following line to your `settings/local.php`:
|
||||
|
||||
@define('CONST_Pyosmium_Binary', '/home/user/.local/bin/pyosmium-get-changes');
|
||||
|
||||
The path above is fine if you used the `--user` parameter with pip.
|
||||
Replace `user` with your user name.
|
||||
|
||||
#### Setting up the update process
|
||||
|
||||
Next the update needs to be initialised. By default Nominatim is configured
|
||||
to update using the global minutely diffs.
|
||||
|
||||
If you want a different update source you will need to add some settings
|
||||
to `settings/local.php`. For example, to use the daily country extracts
|
||||
diffs for Ireland from Geofabrik add the following:
|
||||
|
||||
// base URL of the replication service
|
||||
@define('CONST_Replication_Url', 'https://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
|
||||
// How often upstream publishes diffs
|
||||
@define('CONST_Replication_Update_Interval', '86400');
|
||||
// How long to sleep if no update found yet
|
||||
@define('CONST_Replication_Recheck_Interval', '900');
|
||||
|
||||
To set up the update process now run the following command:
|
||||
|
||||
./utils/update.php --init-updates
|
||||
|
||||
It outputs the date where updates will start. Recheck that this date is
|
||||
what you expect.
|
||||
|
||||
The `--init-updates` command needs to be rerun whenever the replication service
|
||||
is changed.
|
||||
|
||||
#### Updating Nominatim
|
||||
|
||||
The following command will keep your database constantly up to date:
|
||||
|
||||
./utils/update.php --import-osmosis-all
|
||||
|
||||
(Note that even though the old name "import-osmosis-all" has been kept for
|
||||
compatibility reasons, Osmosis is not required to run this - it uses pyosmium
|
||||
behind the scenes.)
|
||||
|
||||
If you have imported multiple country extracts and want to keep them
|
||||
up-to-date, [Advanced installations section](Advanced-Installations.md) contains instructions
|
||||
to set up and update multiple country extracts.
|
||||
@@ -37,9 +37,9 @@ For compiling:
|
||||
For running Nominatim:
|
||||
|
||||
* [PostgreSQL](https://www.postgresql.org) (9.3+)
|
||||
* [PostGIS](https://postgis.org) (2.2+)
|
||||
* [PostGIS](https://postgis.net) (2.2+)
|
||||
* [Python 3](https://www.python.org/)
|
||||
* [Psycopg2](https://initd.org/psycopg)
|
||||
* [Psycopg2](https://www.psycopg.org)
|
||||
* [PHP](https://php.net) (7.0 or later)
|
||||
* PHP-pgsql
|
||||
* PHP-intl (bundled with PHP)
|
||||
@@ -51,7 +51,7 @@ For running continuous updates:
|
||||
|
||||
For running tests:
|
||||
|
||||
* [behave](http://pythonhosted.org/behave/)
|
||||
* [behave](https://behave.readthedocs.io)
|
||||
* [nose](https://nose.readthedocs.io)
|
||||
* [phpunit](https://phpunit.de) >= 7.3
|
||||
|
||||
@@ -188,4 +188,4 @@ Restart the nginx and php5-fpm services and the website should now be available
|
||||
at `http://localhost/`.
|
||||
|
||||
|
||||
Now continue with [importing the database](Import-and-Update.md).
|
||||
Now continue with [importing the database](Import.md).
|
||||
|
||||
@@ -17,10 +17,28 @@ follows:
|
||||
* download the new Wikipedia tables as described in the import section
|
||||
* reimport the tables: `./utils/setup.php --import-wikipedia-articles`
|
||||
* update the functions: `./utils/setup.php --create-functions --enable-diff-updates`
|
||||
* create a new lookup index:
|
||||
```
|
||||
CREATE INDEX idx_placex_wikidata on placex
|
||||
USING BTREE ((extratags -> 'wikidata'))
|
||||
WHERE extratags ? 'wikidata' and class = 'place' and osm_type = 'N' and rank_search < 26
|
||||
```
|
||||
* compute importance: `./utils/update.php --recompute-importance`
|
||||
|
||||
The last step takes about 10 hours on the full planet.
|
||||
|
||||
Remove one function (it will be recreated in the next step):
|
||||
|
||||
```sql
|
||||
DROP FUNCTION create_country(hstore,character varying);
|
||||
```
|
||||
|
||||
Finally, update all SQL functions:
|
||||
|
||||
```sh
|
||||
./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
|
||||
```
|
||||
|
||||
## 3.3.0 -> 3.4.0
|
||||
|
||||
### Reorganisation of location_area_country table
|
||||
@@ -38,6 +56,12 @@ CREATE INDEX idx_location_area_country_geometry ON location_area_country USING G
|
||||
CREATE INDEX idx_location_area_country_place_id ON location_area_country USING BTREE (place_id);
|
||||
```
|
||||
|
||||
Finally, update all SQL functions:
|
||||
|
||||
```sh
|
||||
./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
|
||||
```
|
||||
|
||||
## 3.2.0 -> 3.3.0
|
||||
|
||||
### New database connection string (DSN) format
|
||||
|
||||
67
docs/admin/Update.md
Normal file
67
docs/admin/Update.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Updating the Database
|
||||
|
||||
There are many different ways to update your Nominatim database.
|
||||
The following section describes how to keep it up-to-date with Pyosmium.
|
||||
For a list of other methods see the output of `./utils/update.php --help`.
|
||||
|
||||
!!! warning
|
||||
If you have configured a flatnode file for the import, then you
|
||||
need to keep this flatnode file around for updates as well.
|
||||
|
||||
#### Installing the newest version of Pyosmium
|
||||
|
||||
It is recommended to install Pyosmium via pip. Make sure to use python3.
|
||||
Run (as the same user who will later run the updates):
|
||||
|
||||
```sh
|
||||
pip3 install --user osmium
|
||||
```
|
||||
|
||||
Nominatim needs a tool called `pyosmium-get-changes` which comes with
|
||||
Pyosmium. You need to tell Nominatim where to find it. Add the
|
||||
following line to your `settings/local.php`:
|
||||
|
||||
@define('CONST_Pyosmium_Binary', '/home/user/.local/bin/pyosmium-get-changes');
|
||||
|
||||
The path above is fine if you used the `--user` parameter with pip.
|
||||
Replace `user` with your user name.
|
||||
|
||||
#### Setting up the update process
|
||||
|
||||
Next the update needs to be initialised. By default Nominatim is configured
|
||||
to update using the global minutely diffs.
|
||||
|
||||
If you want a different update source you will need to add some settings
|
||||
to `settings/local.php`. For example, to use the daily country extracts
|
||||
diffs for Ireland from Geofabrik add the following:
|
||||
|
||||
// base URL of the replication service
|
||||
@define('CONST_Replication_Url', 'https://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
|
||||
// How often upstream publishes diffs
|
||||
@define('CONST_Replication_Update_Interval', '86400');
|
||||
// How long to sleep if no update found yet
|
||||
@define('CONST_Replication_Recheck_Interval', '900');
|
||||
|
||||
To set up the update process now run the following command:
|
||||
|
||||
./utils/update.php --init-updates
|
||||
|
||||
It outputs the date where updates will start. Recheck that this date is
|
||||
what you expect.
|
||||
|
||||
The `--init-updates` command needs to be rerun whenever the replication service
|
||||
is changed.
|
||||
|
||||
#### Updating Nominatim
|
||||
|
||||
The following command will keep your database constantly up to date:
|
||||
|
||||
./utils/update.php --import-osmosis-all
|
||||
|
||||
(Note that even though the old name "import-osmosis-all" has been kept for
|
||||
compatibility reasons, Osmosis is not required to run this - it uses pyosmium
|
||||
behind the scenes.)
|
||||
|
||||
If you have imported multiple country extracts and want to keep them
|
||||
up-to-date, [Advanced installations section](Advanced-Installations.md) contains instructions
|
||||
to set up and update multiple country extracts.
|
||||
@@ -8,6 +8,9 @@ To preview local changes, first install MkDocs
|
||||
pip3 install --user mkdocs
|
||||
```
|
||||
|
||||
If `mkdocs` can't be found after the installation, the $PATH might have not
|
||||
been set correctly yet. Try opening a new terminal session.
|
||||
|
||||
|
||||
Then go to the build directory and run
|
||||
|
||||
|
||||
46
docs/develop/Setup.md
Normal file
46
docs/develop/Setup.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Setup Test Environment
|
||||
|
||||
To test changes and contribute to Nominatim you should be able to run
|
||||
the test suite(s). For many usecases it's enough to create a Vagrant
|
||||
virtual machine (see `VAGRANT.md`), import one small country into the
|
||||
database.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Nominatim supports a range of PHP versions and PHPUnit versions also
|
||||
move fast. We try to test against the newest stable PHP release and
|
||||
PHPUnit version even though we expect many Nominatim users will install
|
||||
older version on their production servers.
|
||||
|
||||
#### Ubuntu 20
|
||||
|
||||
sudo apt-get install -y phpunit php-codesniffer php-cgi
|
||||
pip3 install --user behave nose
|
||||
|
||||
#### Ubuntu 18
|
||||
|
||||
pip3 install --user behave nose
|
||||
|
||||
sudo apt-get install -y composer php-cgi php-cli php-mbstring php-xml zip unzip
|
||||
|
||||
composer global require "squizlabs/php_codesniffer=*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
|
||||
|
||||
composer global require "phpunit/phpunit=8.*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
|
||||
|
||||
|
||||
#### CentOS 7 or 8
|
||||
|
||||
sudo dnf install -y php-dom php-mbstring
|
||||
pip3 install --user behave nose
|
||||
|
||||
composer global require "squizlabs/php_codesniffer=*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
|
||||
|
||||
composer global require "phpunit/phpunit=^7"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
|
||||
|
||||
## Run tests, code linter, code coverage
|
||||
|
||||
See `README.md` in `test` subdirectory.
|
||||
@@ -1,4 +1,4 @@
|
||||
site_name: Nominatim Documentation
|
||||
site_name: Nominatim 3.5.2
|
||||
theme: readthedocs
|
||||
docs_dir: ${CMAKE_CURRENT_BINARY_DIR}
|
||||
site_url: https://nominatim.org
|
||||
@@ -16,7 +16,8 @@ pages:
|
||||
- 'FAQ': 'api/Faq.md'
|
||||
- 'Administration Guide':
|
||||
- 'Basic Installation': 'admin/Installation.md'
|
||||
- 'Importing and Updating' : 'admin/Import-and-Update.md'
|
||||
- 'Importing' : 'admin/Import.md'
|
||||
- 'Updating' : 'admin/Update.md'
|
||||
- 'Advanced Installations' : 'admin/Advanced-Installations.md'
|
||||
- 'Migration from older Versions' : 'admin/Migration.md'
|
||||
- 'Troubleshooting' : 'admin/Faq.md'
|
||||
@@ -25,6 +26,7 @@ pages:
|
||||
- 'OSM Data Import' : 'develop/Import.md'
|
||||
- 'Place Ranking' : 'develop/Ranking.md'
|
||||
- 'Postcodes' : 'develop/Postcodes.md'
|
||||
- 'Setup Test Environment' : 'develop/Setup.md'
|
||||
- 'Documentation' : 'develop/Documentation.md'
|
||||
- 'External Data Sources':
|
||||
- 'Overview' : 'data-sources/overview.md'
|
||||
|
||||
Submodule osm2pgsql updated: cb7655a4ff...2909ff20ef
@@ -133,7 +133,8 @@ foreach ($aExpectedIndices as $sExpectedIndex) {
|
||||
$print_fail();
|
||||
echo <<< END
|
||||
Hints:
|
||||
* Rerun the setup.php --create-search-indices step
|
||||
* Run './utils/setup.php --create-search-indices --ignore-errors' to
|
||||
create missing indices.
|
||||
|
||||
END;
|
||||
exit(1);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
sudo yum install -y postgresql11-server postgresql11-contrib postgresql11-devel \
|
||||
postgis25_11 postgis25_11-utils \
|
||||
wget git cmake make gcc gcc-c++ libtool policycoreutils-python \
|
||||
wget cmake make gcc gcc-c++ libtool policycoreutils-python \
|
||||
devtoolset-7 llvm-toolset-7 \
|
||||
php-pgsql php php-intl libpqxx-devel \
|
||||
proj-epsg bzip2-devel proj-devel boost-devel \
|
||||
@@ -48,18 +48,6 @@
|
||||
|
||||
pip3 install --user psycopg2 pytidylib
|
||||
|
||||
# If you want to run the test suite, you need to install the following
|
||||
# additional packages:
|
||||
|
||||
#DOCS: :::sh
|
||||
sudo yum install -y php-dom php-mbstring
|
||||
pip3 install --user behave nose
|
||||
|
||||
composer global require "squizlabs/php_codesniffer=*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
|
||||
|
||||
composer global require "phpunit/phpunit=7.*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
|
||||
|
||||
#
|
||||
# System Configuration
|
||||
@@ -159,23 +147,16 @@ sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
|
||||
# Building and Configuration
|
||||
# --------------------------
|
||||
#
|
||||
# Get the source code from Github and change into the source directory
|
||||
# Get the source code for the release and unpack it
|
||||
#
|
||||
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
|
||||
cd $USERHOME
|
||||
git clone --recursive git://github.com/openstreetmap/Nominatim.git
|
||||
cd Nominatim
|
||||
wget https://nominatim.org/release/Nominatim-3.5.2.tar.bz2
|
||||
tar xf Nominatim-3.5.2.tar.bz2
|
||||
else #DOCS:
|
||||
cd $USERHOME/Nominatim #DOCS:
|
||||
fi #DOCS:
|
||||
|
||||
# When installing the latest source from github, you also need to
|
||||
# download the country grid:
|
||||
|
||||
if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
|
||||
wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
|
||||
fi #DOCS:
|
||||
|
||||
# The code must be built in a separate directory. Create this directory,
|
||||
# then configure and build Nominatim in there:
|
||||
|
||||
@@ -183,7 +164,7 @@ fi #DOCS:
|
||||
cd $USERHOME
|
||||
mkdir build
|
||||
cd build
|
||||
cmake $USERHOME/Nominatim
|
||||
cmake $USERHOME/Nominatim-3.5.2
|
||||
make
|
||||
|
||||
#
|
||||
@@ -194,10 +175,10 @@ fi #DOCS:
|
||||
# with a web server accessible from the Internet. At a minimum the
|
||||
# following SELinux labeling should be done for Nominatim:
|
||||
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim-3.5.2/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/build/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t lib_t "$USERHOME/build/module/nominatim.so"
|
||||
sudo restorecon -R -v $USERHOME/Nominatim
|
||||
sudo restorecon -R -v $USERHOME/Nominatim-3.5.2
|
||||
sudo restorecon -R -v $USERHOME/build
|
||||
|
||||
|
||||
@@ -214,4 +195,4 @@ EOF
|
||||
|
||||
|
||||
# Nominatim is now ready to use. Continue with
|
||||
# [importing a database from OSM data](../admin/Import-and-Update.md).
|
||||
# [importing a database from OSM data](../admin/Import.md).
|
||||
|
||||
@@ -26,33 +26,21 @@
|
||||
# Now you can install all packages needed for Nominatim:
|
||||
|
||||
#DOCS: :::sh
|
||||
sudo dnf --enablerepo=PowerTools install -y postgresql10-server \
|
||||
postgresql10-contrib postgresql10-devel postgis25_10 \
|
||||
wget git cmake make gcc gcc-c++ libtool policycoreutils-python-utils \
|
||||
sudo dnf --enablerepo=PowerTools install -y postgresql12-server \
|
||||
postgresql12-contrib postgresql12-devel postgis30_12 \
|
||||
wget cmake make gcc gcc-c++ libtool policycoreutils-python-utils \
|
||||
llvm-toolset ccache clang-tools-extra \
|
||||
php-pgsql php php-intl php-json libpq-devel \
|
||||
proj52-epsg bzip2-devel proj-devel boost-devel \
|
||||
bzip2-devel proj-devel boost-devel \
|
||||
python3-pip python3-setuptools python3-devel \
|
||||
expat-devel zlib-devel
|
||||
|
||||
# make sure pg_config gets found
|
||||
echo 'PATH=/usr/pgsql-10/bin:$PATH' >> ~/.bash_profile
|
||||
echo 'PATH=/usr/pgsql-12/bin:$PATH' >> ~/.bash_profile
|
||||
source ~/.bash_profile
|
||||
|
||||
pip3 install --user psycopg2 pytidylib
|
||||
|
||||
# If you want to run the test suite, you need to install the following
|
||||
# additional packages:
|
||||
|
||||
#DOCS: :::sh
|
||||
sudo dnf install -y php-dom php-mbstring
|
||||
pip3 install --user behave nose
|
||||
|
||||
composer global require "squizlabs/php_codesniffer=*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
|
||||
|
||||
composer global require "phpunit/phpunit=^7"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
|
||||
|
||||
#
|
||||
# System Configuration
|
||||
@@ -94,8 +82,8 @@ sudo chown vagrant /srv/nominatim #DOCS:
|
||||
# with initializing the database, then enable the server to start at boot:
|
||||
|
||||
|
||||
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
|
||||
sudo systemctl enable postgresql-10
|
||||
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
|
||||
sudo systemctl enable postgresql-12
|
||||
|
||||
#
|
||||
# Next tune the postgresql configuration, which is located in
|
||||
@@ -105,7 +93,7 @@ sudo chown vagrant /srv/nominatim #DOCS:
|
||||
#
|
||||
# Now start the postgresql service after updating this config file.
|
||||
|
||||
sudo systemctl restart postgresql-10
|
||||
sudo systemctl restart postgresql-12
|
||||
|
||||
#
|
||||
# Finally, we need to add two postgres users: one for the user that does
|
||||
@@ -153,31 +141,25 @@ sudo sed -i 's:#.*::' /etc/httpd/conf.d/nominatim.conf #DOCS:
|
||||
# Building and Configuration
|
||||
# --------------------------
|
||||
#
|
||||
# Get the source code from Github and change into the source directory
|
||||
# Get the source code for the release and unpack it
|
||||
#
|
||||
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
|
||||
cd $USERHOME
|
||||
git clone --recursive git://github.com/openstreetmap/Nominatim.git
|
||||
cd Nominatim
|
||||
wget https://nominatim.org/release/Nominatim-3.5.2.tar.bz2
|
||||
tar xf Nominatim-3.5.2.tar.bz2
|
||||
else #DOCS:
|
||||
cd $USERHOME/Nominatim #DOCS:
|
||||
fi #DOCS:
|
||||
|
||||
# When installing the latest source from github, you also need to
|
||||
# download the country grid:
|
||||
|
||||
if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
|
||||
wget --no-verbose -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
|
||||
fi #DOCS:
|
||||
|
||||
# The code must be built in a separate directory. Create this directory,
|
||||
# then configure and build Nominatim in there:
|
||||
# then configure and build Nominatim in there. Note that you need to
|
||||
# tell cmake about the more recent Postgresql version that you use:
|
||||
|
||||
#DOCS: :::sh
|
||||
cd $USERHOME
|
||||
mkdir build
|
||||
cd build
|
||||
cmake $USERHOME/Nominatim
|
||||
cmake -DPostgreSQL_ADDITIONAL_VERSIONS=12 $USERHOME/Nominatim-3.5.2
|
||||
make
|
||||
|
||||
#
|
||||
@@ -188,10 +170,10 @@ fi #DOCS:
|
||||
# with a web server accessible from the Internet. At a minimum the
|
||||
# following SELinux labeling should be done for Nominatim:
|
||||
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/Nominatim-3.5.2/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t httpd_sys_content_t "$USERHOME/build/(website|lib|settings)(/.*)?"
|
||||
sudo semanage fcontext -a -t lib_t "$USERHOME/build/module/nominatim.so"
|
||||
sudo restorecon -R -v $USERHOME/Nominatim
|
||||
sudo restorecon -R -v $USERHOME/Nominatim-3.5.2
|
||||
sudo restorecon -R -v $USERHOME/build
|
||||
|
||||
|
||||
@@ -208,4 +190,4 @@ EOF
|
||||
|
||||
|
||||
# Nominatim is now ready to use. Continue with
|
||||
# [importing a database from OSM data](../admin/Import-and-Update.md).
|
||||
# [importing a database from OSM data](../admin/Import.md).
|
||||
|
||||
@@ -24,7 +24,7 @@ export DEBIAN_FRONTEND=noninteractive
|
||||
postgresql-contrib-10 \
|
||||
nginx php-fpm php php-pgsql \
|
||||
php-intl python3-setuptools python3-dev python3-pip \
|
||||
python3-psycopg2 python3-tidylib git
|
||||
python3-psycopg2 python3-tidylib
|
||||
|
||||
export USERNAME=vagrant
|
||||
export USERHOME=/home/vagrant
|
||||
|
||||
@@ -31,20 +31,8 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
|
||||
postgresql-contrib-10 postgresql-10-postgis-scripts \
|
||||
apache2 php php-pgsql libapache2-mod-php \
|
||||
php-intl python3-setuptools python3-dev python3-pip \
|
||||
python3-psycopg2 python3-tidylib git
|
||||
python3-psycopg2 python3-tidylib
|
||||
|
||||
# If you want to run the test suite, you need to install the following
|
||||
# additional packages including the PHP package manager composer:
|
||||
|
||||
pip3 install --user behave nose
|
||||
|
||||
sudo apt-get install -y composer php-cgi php-cli php-mbstring php-xml zip unzip
|
||||
|
||||
composer global require "squizlabs/php_codesniffer=*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpcs /usr/bin/
|
||||
|
||||
composer global require "phpunit/phpunit=8.*"
|
||||
sudo ln -s ~/.config/composer/vendor/bin/phpunit /usr/bin/
|
||||
|
||||
#
|
||||
# System Configuration
|
||||
@@ -108,14 +96,14 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
|
||||
|
||||
#DOCS:```sh
|
||||
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
|
||||
<Directory "$USERHOME/build/website"> #DOCS:<Directory "$USERHOME/Nominatim/build/website">
|
||||
<Directory "$USERHOME/build/website">
|
||||
Options FollowSymLinks MultiViews
|
||||
AddType text/html .php
|
||||
DirectoryIndex search.php
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
Alias /nominatim $USERHOME/build/website #DOCS:Alias /nominatim $USERHOME/Nominatim/build/website
|
||||
Alias /nominatim $USERHOME/build/website
|
||||
EOFAPACHECONF
|
||||
#DOCS:```
|
||||
|
||||
@@ -135,30 +123,23 @@ sudo sed -i 's:#.*::' /etc/apache2/conf-available/nominatim.conf #DOCS:
|
||||
# Building and Configuration
|
||||
# --------------------------
|
||||
#
|
||||
# Get the source code from Github and change into the source directory
|
||||
# Get the source code for the release and unpack it
|
||||
#
|
||||
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
|
||||
cd $USERHOME
|
||||
git clone --recursive git://github.com/openstreetmap/Nominatim.git
|
||||
cd Nominatim
|
||||
wget https://nominatim.org/release/Nominatim-3.5.2.tar.bz2
|
||||
tar xf Nominatim-3.5.2.tar.bz2
|
||||
else #DOCS:
|
||||
cd $USERHOME/Nominatim #DOCS:
|
||||
fi #DOCS:
|
||||
|
||||
# When installing the latest source from github, you also need to
|
||||
# download the country grid:
|
||||
|
||||
if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
|
||||
wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
|
||||
fi #DOCS:
|
||||
|
||||
# The code must be built in a separate directory. Create this directory,
|
||||
# then configure and build Nominatim in there:
|
||||
|
||||
cd $USERHOME #DOCS: :::sh
|
||||
mkdir build
|
||||
cd build
|
||||
cmake $USERHOME/Nominatim
|
||||
cmake $USERHOME/Nominatim-3.5.2
|
||||
make
|
||||
|
||||
# You need to create a minimal configuration file that tells nominatim
|
||||
@@ -173,4 +154,4 @@ EOF
|
||||
|
||||
|
||||
# Nominatim is now ready to use. Continue with
|
||||
# [importing a database from OSM data](../admin/Import-and-Update.md).
|
||||
# [importing a database from OSM data](../admin/Import.md).
|
||||
|
||||
@@ -6,12 +6,6 @@ sudo update-locale LANG=en_US.UTF-8 #DOCS:
|
||||
export APT_LISTCHANGES_FRONTEND=none #DOCS:
|
||||
export DEBIAN_FRONTEND=noninteractive #DOCS:
|
||||
|
||||
#
|
||||
# !!! danger "Important"
|
||||
# Ubuntu 20.04 uses Postgresql 12 and Postgis 3, which are known to cause
|
||||
# performance issues. They are not recommended for a production
|
||||
# installation at the moment.
|
||||
#
|
||||
# *Note:* these installation instructions are also available in executable
|
||||
# form for use with vagrant under vagrant/Install-on-Ubuntu-20.sh.
|
||||
#
|
||||
@@ -39,14 +33,8 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
|
||||
postgresql-contrib postgresql-12-postgis-3-scripts \
|
||||
apache2 php php-pgsql libapache2-mod-php \
|
||||
php-intl python3-setuptools python3-dev python3-pip \
|
||||
python3-psycopg2 python3-tidylib git
|
||||
python3-psycopg2 python3-tidylib
|
||||
|
||||
# If you want to run the test suite, you need to install the following
|
||||
# additional packages:
|
||||
|
||||
sudo apt-get install -y phpunit php-codesniffer php-cgi
|
||||
|
||||
pip3 install --user behave nose
|
||||
#
|
||||
# System Configuration
|
||||
# ====================
|
||||
@@ -109,14 +97,14 @@ export DEBIAN_FRONTEND=noninteractive #DOCS:
|
||||
|
||||
#DOCS:```sh
|
||||
sudo tee /etc/apache2/conf-available/nominatim.conf << EOFAPACHECONF
|
||||
<Directory "$USERHOME/build/website"> #DOCS:<Directory "$USERHOME/Nominatim/build/website">
|
||||
<Directory "$USERHOME/build/website">
|
||||
Options FollowSymLinks MultiViews
|
||||
AddType text/html .php
|
||||
DirectoryIndex search.php
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
Alias /nominatim $USERHOME/build/website #DOCS:Alias /nominatim $USERHOME/Nominatim/build/website
|
||||
Alias /nominatim $USERHOME/build/website
|
||||
EOFAPACHECONF
|
||||
#DOCS:```
|
||||
|
||||
@@ -136,30 +124,23 @@ sudo sed -i 's:#.*::' /etc/apache2/conf-available/nominatim.conf #DOCS:
|
||||
# Building and Configuration
|
||||
# --------------------------
|
||||
#
|
||||
# Get the source code from Github and change into the source directory
|
||||
# Get the source code for the release and unpack it
|
||||
#
|
||||
if [ "x$1" == "xyes" ]; then #DOCS: :::sh
|
||||
cd $USERHOME
|
||||
git clone --recursive git://github.com/openstreetmap/Nominatim.git
|
||||
cd Nominatim
|
||||
wget https://nominatim.org/release/Nominatim-3.5.2.tar.bz2
|
||||
tar xf Nominatim-3.5.2.tar.bz2
|
||||
else #DOCS:
|
||||
cd $USERHOME/Nominatim #DOCS:
|
||||
fi #DOCS:
|
||||
|
||||
# When installing the latest source from github, you also need to
|
||||
# download the country grid:
|
||||
|
||||
if [ ! -f data/country_osm_grid.sql.gz ]; then #DOCS: :::sh
|
||||
wget -O data/country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz
|
||||
fi #DOCS:
|
||||
|
||||
# The code must be built in a separate directory. Create this directory,
|
||||
# then configure and build Nominatim in there:
|
||||
|
||||
cd $USERHOME #DOCS: :::sh
|
||||
cd $USERHOME
|
||||
mkdir build
|
||||
cd build
|
||||
cmake $USERHOME/Nominatim
|
||||
cmake $USERHOME/Nominatim-3.5.2
|
||||
make
|
||||
|
||||
# You need to create a minimal configuration file that tells nominatim
|
||||
@@ -174,4 +155,4 @@ EOF
|
||||
|
||||
|
||||
# Nominatim is now ready to use. Continue with
|
||||
# [importing a database from OSM data](../admin/Import-and-Update.md).
|
||||
# [importing a database from OSM data](../admin/Import.md).
|
||||
|
||||
Reference in New Issue
Block a user