X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/aff43fb1a3b193f853ddd74a490cdff529d0af67..201b4689afaee3acfddd1fc7fe829fafc70667d6:/docs/admin/Deployment-Python.md diff --git a/docs/admin/Deployment-Python.md b/docs/admin/Deployment-Python.md index c3cca59b..e95df00d 100644 --- a/docs/admin/Deployment-Python.md +++ b/docs/admin/Deployment-Python.md @@ -24,8 +24,8 @@ to configure it. ### Installing the required packages The recommended way to deploy a Python ASGI application is to run -the ASGI runner (uvicorn)[https://uvicorn.org/] -together with (gunicorn)[https://gunicorn.org/] HTTP server. We use +the ASGI runner [uvicorn](https://uvicorn.org/) +together with [gunicorn](https://gunicorn.org/) HTTP server. We use Falcon here as the web framework. Create a virtual environment for the Python packages and install the necessary @@ -34,7 +34,7 @@ dependencies: ``` sh sudo apt install virtualenv virtualenv /srv/nominatim-venv -/srv/nominatim-venv/bin/pip install SQLAlchemy PyICU psycopg[binary]\ +/srv/nominatim-venv/bin/pip install SQLAlchemy PyICU psycopg[binary] \ psycopg2-binary python-dotenv PyYAML falcon uvicorn gunicorn ``` @@ -43,6 +43,22 @@ virtualenv /srv/nominatim-venv Next you need to set up the service that runs the Nominatim frontend. This is easiest done with a systemd job. +First you need to tell systemd to create a socket file to be used by +hunicorn. Create the following file `/etc/systemd/system/nominatim.socket`: + +``` systemd +[Unit] +Description=Gunicorn socket for Nominatim + +[Socket] +ListenStream=/run/nominatim.sock +SocketUser=www-data + +[Install] +WantedBy=multi-user.target +``` + +Now you can add the systemd service for Nominatim itself. Create the following file `/etc/systemd/system/nominatim.service`: ``` systemd @@ -74,12 +90,14 @@ its own Python process using [`NOMINATIM_API_POOL_SIZE`](../customize/Settings.md#nominatim_api_pool_size) connections to the database to serve requests in parallel. -Make the new service known to systemd and start it: +Make the new services known to systemd and start it: ``` sh sudo systemctl daemon-reload -sudo systemctl enable nominatim -sudo systemctl start nominatim +sudo systemctl enable nominatim.socket +sudo systemctl start nominatim.socket +sudo systemctl enable nominatim.service +sudo systemctl start nominatim.service ``` This sets the service up, so that Nominatim is automatically started