Comment faire pour configurer un serveur OSRM sur Ubuntu 14.04

Le projet OpenStreetMap se compose de données brutes, recueillies et regroupées par milliers d’utilisateurs. Cependant, sa politique de libre accès a suscité un certain nombre de projets collatéraux qui collectivement couvrir les nombreuses fonctionnalités habituellement offertes par les services de cartographie commerciale.

L’avantage le plus évident dans l’utilisation de logiciels basée sur OpenStreetMap plutôt qu’une solution commerciale est plus économique de commodité, parce qu’OpenStreetMap vient aussi libre (comme dans la bière et comme dans le discours) logiciel. L’inconvénient est qu’il faut une petite configuration afin de configurer un service web de travail.

Ce tutoriel couvre la configuration et la maintenance d’un service web qui peut répondre aux questions telles que :

Ce qui est la rue plus proche d’un paire de coordonnées ?
Quelle est la meilleure façon d’obtenir du point A au point B ?
Combien de temps cela prend-il pour obtenir du point A au point B en voiture ou à pied ?

Le logiciel qui rend cela possible est un projet open-source appelé Open Source Routing Machine (OSRM), qui repose sur les données OpenStreetMap. Fonctionnalités d’incorporer OpenStreetMaps dans les pages Web sont déjà fournies out-of-the-box par API telles que OpenLayers.
Conditions préalables

Pour suivre ce didacticiel, vous devez :

Une gouttelette de Ubuntu 14.04.
Un utilisateur non-root sudo, que vous pouvez créer en suivant ce tutoriel. Ce tutoriel suppose que votre nom d’utilisateur non root de sudo est osrm.
Recommandé 4 gigaoctets de swap, prévue à l’ajout de swap sur Ubuntu 14.04.

Les opérations dans ce tutoriel, comme la construction OSRM de source et les phases pré-processing, sont mémoire intensive. Sur les gouttelettes de peu de mémoire, ces opérations peuvent échouer, c’est pourquoi il est nécessaire d’affecter un fichier d’échange.

Le service web est normalement exempt de permutation supplémentaire lors de l’exécution, alors ce fichier d’échange peut être retiré une fois l’installation terminée. Cependant, au moment de servir les grandes cartes, un fichier d’échange faible pourrait en fait être nécessaire, surtout dans les gouttelettes de mémoire insuffisante. Dans l’affirmative, suivez les instructions dans le tutoriel ci-dessus pour rendre le fichier d’échange permanente.

Étape 1 — Mises à jour et sécurité

Dans cette étape, nous allons configurer les mises à jour pour le serveur.

Il est important de garder notre serveur à jour et en sécurité au fil du temps. Par conséquent, nous tout d’abord mettre à niveau tous les packages dans le système en exécutant les commandes suivantes.

sudo apt-get update
sudo apt-get upgrade

Ensuite, nous passons sur les mises à jour de sécurité sans assistance d’Ubuntu. Pour ce faire, nous devons tout d’abord installer les paquets nécessaires.

sudo apt-get install unattended-upgrades

Activez ensuite les mises à jour automatiques en éditant le fichier /etc/apt/apt.conf.d/10periodic. Nous devons utiliser sudo parce qu’il s’agit d’un fichier de configuration de l’ensemble du système.

sudo nano /etc/apt/apt.conf.d/10periodic

Ajoutez la ligne suivante à la fin du fichier, puis enregistrer et fermer.

APT::periodic:: sans assistance-Upgrade « 1 » ;

Étape 2: Télécharger un plan d’exportation

Dans cette étape, nous choisir et télécharger une exportation de la carte.

Pour maintenir le tout bien rangé et propre, c’est une bonne idée de créer un répertoire dédié dans lequel générer le code, le processus de la carte, etc..

mkdir osrm

Se déplacer dans un nouveau répertoire.

CD osrm

Notre service web se fondera sur une exportation de carte OpenStreetMap. Il y a plusieurs façons possibles d’obtenir une carte d’exportation.

La première option est de pointer votre navigateur vers la page exportation de la OpenStreetMap, zoom sur la zone intéressée et cliquez sur Exporter. (Vous devrez peut-être utiliser l’une des autres sources si l’exportation native ne fonctionne pas ; Passerelle API est un bon choix.) Cela vous permettra de choisir finement quels domaines à inclure dans votre carte et, en général, de réduire les temps de prétraitement.

Cependant, il y a de limites sur la taille de l’exportation, que vous pouvez obtenir sur le site de l’OSRM, alors vous voudrez télécharger une exportation prêtes à l’emploi. Un certain nombre de services, tels que Geofabrik et Mapzen offre une carte mise à jour et prêt-à-les exportations du pays et certaines régions métropolitaines, qui sont bonnes pour la plupart des cas d’utilisation.

Quelle que soit la méthode que vous utilisez, copiez l’URL de l’exportation et téléchargez-le sur votre Droplet.

wget – O map.osm url_of_the_export

Vous devriez maintenant avoir un fichier nommé map.osm dans votre répertoire de travail.
Étape 3 — Les dépendances d’installation

Dans cette étape, nous allons installer les dépendances de l’OSRM.

OSRM doit être compilé depuis la source, donc nous devons commencer par installer les machines de construction nécessaires. Heureusement, Ubuntu est livré avec un meta-package pratique appelé build-essential qui contient les outils de compilation nécessaires du compilateur. De plus, nous aurons besoin de git pour saisir le code source OSRM et CMake pour générer le système de génération. La commande suivante installe tous les 3 des personnes.

sudo apt-get install build-essential git cmake

OSRM est un logiciel assez complexe et s’appuie également sur un certain nombre de bibliothèques. Nous pouvons installer des dépendances requises avec la commande suivante.

sudo apt-get install libboost-all-dev libtbb-dev liblua5.2-dev libluabind-dev libstxxl-dev libxml2 libxml2-dev libosmpbf-dev libbz2-dev libprotobuf-dev

Ces dépendances sont utilisés pour diverses choses. Lua est utilisé pour définir des scripts de profil de vitesse personnalisée, par exemple définir cela sur une route secondaire, en l’absence de limites, une voiture passe en moyenne à 80 km/h, et que, sur une route de gravier, la vitesse moyenne est 50 km/h. STXXL est une version de la bibliothèque standard de C++, qui utilise l’espace disque comme mémoire, utilisé pour manipuler des fichiers volumineux. Tampons LibXML et protocole sont utilisés pour charger, écrire et manipuler des fichiers de l’OSM, et Boost et TBB sont utilisés pour la parallélisation et de représenter les structures de données.
Étape 4 — Compilation OSRM

Dans cette étape, nous obtenir le code source de l’OSRM et compilez-le.

Grâce au fait que le système de génération de l’OSRM de choix est CMake, une fois que les dépendances sont installées, il est assez facile de générer des fichiers de compilation et compilez OSRM.

Tout d’abord, nous cloner le code source de la page du projet. Le projet est composé de plusieurs référentiels, manipulation des fonctionnalités différentes. Nous sommes intéressés par le back-end (la partie côté serveur).

git clone https://github.com/Project-OSRM/osrm-backend.git

Ensuite, aller dans le répertoire du code.

CD osrm-backend

L’étape suivante consiste à utiliser CMake pour générer les fichiers de build. Il est recommandé de construire OSRM dans un répertoire de build dédiée à la racine du code source, afin d’éviter de polluer les répertoires source avec des fichiers temporaires.

Créer un répertoire de build.

mkdir build

Déplacer dans le répertoire de build.

CD compilation

Enfin, nous allons générer les fichiers de build avec cmake. Cette commande génère un certain nombre de répertoires et de fichiers Makefile dans l’arborescence de répertoire de build.

cmake…

Si vous obtenez une erreur ici, assurez-vous que vous avez activé le swap via les instructions dans les conditions préalables.

Ensuite, compilez et installez OSRM.

sudo faire installer

Remarque : Cela peut prendre 5 à 10 minutes.

Bâtiment avec sudo est nécessaire ici car la cible install permet de copier certains fichiers exécutables dans le chemin d’accès binaire du système, y compris certains dont nous aurons besoin. À savoir :

OSRM-extrait qui ouvre le fichier de mappage et exécute une première étape de prétraitement sur les données.
OSRM-préparer qui traite la sortie de l’osrm-extrait et calcule les temps de voyages pour tous les bords de la carte selon un profil de vitesse donné Lua.
OSRM routé le web réel service démon, ce qui nous permet d’interroger des distances et des lieux.