Installation

1. Installation aus den Quellen

mkdir -p ~/projects && cd ~/projects
git clone git@bitbucket.org:locr/locrgeocoder.git LocrGeocoder
cd LocrGeocoder

# Die `.env.example` Datei nach `.env` kopieren und die Werte anpassen.
cp .env.example .env

2. Entwicklungsumgebung einrichten

2.1. .env Datei anpassen

  • PGHOST=db ← Interner Hostname innerhalb der Docker Compose Umgebung

  • ENVIRONMENT=dev

  • PGPASSWORD=<secret> ← Damit die Datenbank in der Docker Compose Umgebung funktioniert, muss ein Passwort gesetzt werden.

2.2. VSCode einrichten

  • Docker muss installiert sein.

  • VSCode mit der Dev Containers-Erweiterung (ms-vscode-remote.remote-containers) installieren.

  • Dev Container starten.

  • WebService sollte nach erfolgreicher Installation unter http://localhost:8080/ erreichbar sein.

  • die phpPgAdmin Oberfläche sollte unter http://localhost:8080/phppgadmin/ erreichbar sein.

  • Xdebug kann über Ausführen und debuggenListen for Xdebug (Docker Compose) gestartet werden.

3. Daten erstellen/importieren

3.1. neue Daten erstellen

./scripts/prepare_db.sh

npm install
# OpenAddresses Quellen von https://batch.openaddresses.io/data
# Stand: 2024-08-25
node --env-file=.env ./scripts/oa_importer.mjs --country=at # 2'930'014 Einträge
./scripts/import_plz_data.sh # nur für 'de' Import
node --env-file=.env ./scripts/oa_importer.mjs --country=de # ca. 15 Minuten; 6'994'900 Einträge
node --env-file=.env ./scripts/oa_importer.mjs --country=fr # ca. 18 Minuten; 26'040'540 Einträge

# NAD Daten werden momentan nicht verwendet.
# ./scripts/import_nad_data.sh # ca. 01:30h (Download ca. 7.5GB, ca. 10min bei 12MB/s Downloadgeschwindigkeit)
./scripts/import_tiger_data.sh # Dieses script muss vor import_oa_us.sh ausgeführt werden!
./scripts/import_oa_us.sh

./scripts/import_addresses_ca.sh
./scripts/import_ca_postal_codes.sh

3.2. erstellte Daten sichern

Datenbank sollte ca. 55GB groß sein.

sudo -u postgres pg_dump $PGDATABASE | gzip > /tmp/2025-03-17_locr_geocoder.gz

3.3. gezippte Datei auf Server kopieren

scp /tmp/2025-03-17_locr_geocoder.gz serverconnect@maps1.locr.com:~/

3.4. kopierte Datei auf Server (maps1.locr.com) ins /var/www/archive Verzeichnis verschieben

sudo mv ~/2025-03-17_locr_geocoder.gz /var/www/archives && sudo chown root:root /var/www/archives/2025-03-17_locr_geocoder.gz

3.5. existierende Daten auf neuen Server importieren

sudo -u postgres psql --command="CREATE DATABASE locr_geocoder"
sudo -u postgres psql --command="CREATE EXTENSION IF NOT EXISTS postgis" locr_geocoder

wget -O /tmp/locr_geocoder.gz https://maps1.locr.com/archives/2025-03-17_locr_geocoder.gz
cat /tmp/locr_geocoder.gz | gunzip | sudo -u postgres psql locr_geocoder
rm /tmp/locr_geocoder.gz

4. Produktionsumgebung einrichten

4.1. Container Service installieren

./scripts/install_service.sh

4.2. Update script im home-Verzeichnis erstellen

cat <<EOF >~/update_locr_geocoder.sh
#!/usr/bin/env bash

cd ${PWD}/scripts
./update_service.sh
EOF

chmod +x ~/update_locr_geocoder.sh

4.3. nginx konfigurieren

sudo cp installation_files/nginx/conf.d/locr-geocoder /etc/nginx/conf.d

Die /etc/hosts Datei um folgenden Eintrag ergänzen:

127.0.0.1 locr-geocoder

Sicherstellen, dass folgende Zeile in der /etc/nginx/sites-enabled/default Datei vorhanden ist!

server {
    ...
    include conf.d/locr-geocoder;
    ...
}

nginx neustarten

sudo service nginx restart