Skip to content

Commit

Permalink
docs: update Update docs for virtualenv use
Browse files Browse the repository at this point in the history
  • Loading branch information
lonvia committed Dec 20, 2024
1 parent 8dd218a commit f76dbb0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 56 deletions.
78 changes: 24 additions & 54 deletions docs/admin/Update.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ the update interval no new data has been published yet, it will go to sleep
until the next expected update and only then attempt to download the next batch.

The one-time mode is particularly useful if you want to run updates continuously
but need to schedule other work in between updates. For example, the main
service at osm.org uses it, to regularly recompute postcodes -- a process that
must not be run while updates are in progress. Its update script
looks like this:
but need to schedule other work in between updates. For example, you might
want to regularly recompute postcodes -- a process that
must not be run while updates are in progress. An update script refreshing
postcodes regularly might look like this:

```sh
#!/bin/bash
Expand Down Expand Up @@ -109,17 +109,19 @@ Unit=nominatim-updates.service
WantedBy=multi-user.target
```

And then a similar service definition: `/etc/systemd/system/nominatim-updates.service`:
`OnUnitActiveSec` defines how often the individual update command is run.

Then add a service definition for the timer in `/etc/systemd/system/nominatim-updates.service`:

```
[Unit]
Description=Single updates of Nominatim
[Service]
WorkingDirectory=/srv/nominatim
ExecStart=nominatim replication --once
StandardOutput=append:/var/log/nominatim-updates.log
StandardError=append:/var/log/nominatim-updates.error.log
WorkingDirectory=/srv/nominatim-project
ExecStart=/srv/nominatim-venv/bin/nominatim replication --once
StandardOutput=journald
StandardError=inherit
User=nominatim
Group=nominatim
Type=simple
Expand All @@ -128,9 +130,9 @@ Type=simple
WantedBy=multi-user.target
```

Replace the `WorkingDirectory` with your project directory. Also adapt user and
group names as required. `OnUnitActiveSec` defines how often the individual
update command is run.
Replace the `WorkingDirectory` with your project directory. `ExecStart` points
to the nominatim binary that was installed in your virtualenv earlier.
Finally, you might need to adapt user and group names as required.

Now activate the service and start the updates:

Expand All @@ -140,12 +142,13 @@ sudo systemctl enable nominatim-updates.timer
sudo systemctl start nominatim-updates.timer
```

You can stop future data updates, while allowing any current, in-progress
You can stop future data updates while allowing any current, in-progress
update steps to finish, by running `sudo systemctl stop
nominatim-updates.timer` and waiting until `nominatim-updates.service` isn't
running (`sudo systemctl is-active nominatim-updates.service`). Current output
from the update can be seen like above (`systemctl status
nominatim-updates.service`).
running (`sudo systemctl is-active nominatim-updates.service`).

To check the output from the update process, use journalctl: `journalctl -u
nominatim-updates.service`


#### Catch-up mode
Expand All @@ -155,13 +158,13 @@ all changes from the server until the database is up-to-date. The catch-up mode
still respects the parameter `NOMINATIM_REPLICATION_MAX_DIFF`. It downloads and
applies the changes in appropriate batches until all is done.

The catch-up mode is foremost useful to bring the database up to speed after the
The catch-up mode is foremost useful to bring the database up to date after the
initial import. Give that the service usually is not in production at this
point, you can temporarily be a bit more generous with the batch size and
number of threads you use for the updates by running catch-up like this:

```
cd /srv/nominatim
cd /srv/nominatim-project
NOMINATIM_REPLICATION_MAX_DIFF=5000 nominatim replication --catch-up --threads 15
```

Expand All @@ -173,13 +176,13 @@ replication catch-up at whatever interval you desire.
When running scheduled updates with catch-up, it is a good idea to choose
a replication source with an update frequency that is an order of magnitude
lower. For example, if you want to update once a day, use an hourly updated
source. This makes sure that you don't miss an entire day of updates when
source. This ensures that you don't miss an entire day of updates when
the source is unexpectedly late to publish its update.

If you want to use the source with the same update frequency (e.g. a daily
updated source with daily updates), use the
continuous update mode. It ensures to re-request the newest update until it
is published.
once mode together with a frequently run systemd script as described above.
It ensures to re-request the newest update until they have been published.


#### Continuous updates
Expand All @@ -197,36 +200,3 @@ parameters:

The update application keeps running forever and retrieves and applies
new updates from the server as they are published.

You can run this command as a simple systemd service. Create a service
description like that in `/etc/systemd/system/nominatim-updates.service`:

```
[Unit]
Description=Continuous updates of Nominatim
[Service]
WorkingDirectory=/srv/nominatim
ExecStart=nominatim replication
StandardOutput=append:/var/log/nominatim-updates.log
StandardError=append:/var/log/nominatim-updates.error.log
User=nominatim
Group=nominatim
Type=simple
[Install]
WantedBy=multi-user.target
```

Replace the `WorkingDirectory` with your project directory. Also adapt user
and group names as required.

Now activate the service and start the updates:

```
sudo systemctl daemon-reload
sudo systemctl enable nominatim-updates
sudo systemctl start nominatim-updates
```


2 changes: 1 addition & 1 deletion docs/customize/Import-Styles.md
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ defined primary names are forgotten.)

| Name | Description |
| :----- | :---------- |
| core | Basic set of recogniced names for all places. |
| core | Basic set of recognized names for all places. |
| address | Additional names useful when indexing full addresses. |
| poi | Extended set of recognized names for pois. Use on top of the core set. |

Expand Down
2 changes: 1 addition & 1 deletion docs/customize/Tokenizers.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ queries. This happens in two stages:
as during the import process but may involve other processing like,
for example, word break detection.
2. The **token analysis** step breaks down the query parts into tokens,
looks them up in the database and assignes them possible functions and
looks them up in the database and assigns them possible functions and
probabilities.

Query processing can be further customized while the rest of the analysis
Expand Down

0 comments on commit f76dbb0

Please sign in to comment.