GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal OSRM di Ubuntu 20.04 – Mesin Perutean Sumber Terbuka

OSRM (Mesin Perutean Sumber Terbuka) adalah mesin perutean super cepat untuk jaringan jalan OpenStreetMap (OSM). Dalam tutorial sebelumnya, kami menjelaskan proses pengaturan server ubin OpenStreetMap yang dihosting sendiri dan cara menambahkan fungsionalitas pencarian alamat ke peta Anda dengan Nominatim. Tutorial ini akan menunjukkan cara menambahkan fungsionalitas navigasi ke OpenStreetMap Anda dengan OSRM, yang menyediakan perutean mobil , perutean sepeda , dan perutean jalan kaki .

Tutorial ini juga berfungsi di Ubuntu 18.04.

Prasyarat

Untuk mengikuti tutorial ini, Anda harus memiliki server ubin OSM dan berjalan. Jika tidak, ikuti tutorial di bawah ini untuk menyiapkan server ubin OSM Anda sendiri.

  • Cara Menyetel Server Ubin OpenStreetMap di Ubuntu 20.04

Anda juga harus memiliki akses ke layanan geocoding seperti Nominatim untuk pencarian alamat.

  • Menyiapkan OSM Nominatim Geocoding Server di Ubuntu 20.04

Setelah persyaratan terpenuhi, ikuti petunjuk di bawah ini untuk menyiapkan server OSRM.

Langkah 1:Bangun OSRM Dari Sumber

Instal paket ketergantungan.

sudo apt update

sudo apt install build-essential git cmake pkg-config doxygen libboost-all-dev libtbb-dev lua5.2 liblua5.2-dev libluabind-dev libstxxl-dev libstxxl1v5 libxml2 libxml2-dev libosmpbf-dev libbz2-dev libzip-dev libprotobuf-dev

Buat osrm pengguna. (Tidak perlu membuat kata sandi untuk pengguna ini.)

sudo useradd -d /srv/osrm -s /bin/bash -m osrm

Berikan izin ke akun pengguna Anda sendiri.

sudo apt install acl

sudo setfacl -R -m u:username:rwx /srv/osrm/

Ubah ke /srv/osrm/ direktori.

cd /srv/osrm/

Unduh kode sumber OSRM dari repositori Github-nya.

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

Buat build direktori.

mkdir build

Ubah ke direktori ini dan konfigurasikan lingkungan build.

cd build

cmake /srv/osrm/osrm-backend/

Kompilasi kode sumber.

make

Instal binari.

sudo make install

Binari berikut akan diinstal.

  • /usr/local/bin/osrm-extract:
  • /usr/local/bin/osrm-partition:
  • /usr/local/bin/osrm-customize:
  • /usr/local/bin/osrm-contract:
  • /usr/local/bin/osrm-datastore:
  • /usr/local/bin/osrm-routed:

Langkah 2:Instal Layar GNU

Pada langkah selanjutnya, kita perlu mengekstrak jaringan jalan dari OpenStreetMap, yang bisa memakan waktu lama. Komputer Anda mungkin terputus dari Internet, jadi disarankan untuk menggunakan utilitas Layar GNU untuk menjaga sesi Anda tetap hidup. Layar instal di server Ubuntu 20.04:

sudo apt install screen

Kemudian layar mulai:

screen

Saat peluncuran pertama, Anda akan melihat teks pengantar, cukup tekan Enter untuk mengakhiri. Kemudian Anda akan dapat menjalankan perintah seperti biasa.

Langkah 3:Buat Data Perutean OSRM

Sekarang kita perlu mengunduh data OpenStreetMap dan membuatnya dapat digunakan untuk perutean. Jalankan perintah berikut untuk mengunduh data peta seluruh planet (56G) dalam format PBF (ProtoBufBinary).

wget -c http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf -P /srv/osrm/osrm-backend

Jika Anda menginginkan peta masing-masing negara/negara bagian/provinsi/kota, kunjungi http://download.geofabrik.de. Misalnya, unduh data peta Inggris Raya (1.2G) dengan perintah berikut.

wget -c http://download.geofabrik.de/europe/great-britain-latest.osm.pbf -P /srv/osrm/osrm-backend

BBBike.org juga menyediakan ekstrak lebih dari 200 kota dan wilayah di seluruh dunia dalam format yang berbeda.

Pastikan Anda berada di /srv/osrm/osrm-backend/ direktori.

cd /srv/osrm/osrm-backend/

Ekstrak grafik dari data OpenStreetMap.

osrm-extract britain-and-ireland-latest.osm.pbf --threads=10

Secara default, ini akan menggunakan car.lua profil.

Sekarang Anda mungkin tidak perlu melakukan hal lain di server Anda. Karena Anda menggunakan Layar, Anda dapat menekan Ctrl+A , lepaskan tombol tersebut, lalu tekan D untuk melepaskan dari sesi Layar saat ini. Anda akan melihat pesan seperti di bawah ini.

[detached from 32113.pts-1.focal]

Ini memberitahu saya bahwa ID sesi Layar sebelumnya adalah 32113. Anda dapat keluar dari sesi SSH dan bahkan mematikan komputer Anda. Jangan khawatir, osrm-extract proses masih berjalan. Saat Anda perlu kembali dan memeriksa kemajuan, SSH ke server Anda dan jalankan perintah berikut untuk mendapatkan ID Sesi Layar sebelumnya.

screen -ls

Contoh keluaran:

There is a screen on:
	32113.pts-1.focal	(05/19/2020 03:45:29 PM)	(Detached)
1 Socket in /run/screen/S-linuxbabe.

Kemudian Anda dapat melampirkan kembali ke sesi Layar sebelumnya.

screen -r 32113

Proses ini intensif memori. (Ini menggunakan RAM 7GB di server saya.) Setelah selesai, akan ada file dengan nama file yang sama tetapi dengan .osrm perpanjangan. Jalankan perintah berikut untuk mempartisi grafik ini secara rekursif ke dalam sel

osrm-partition britain-and-ireland-latest.osrm

Sesuaikan sel dengan menghitung bobot perutean untuk semua sel.

osrm-customize britain-and-ireland-latest.osrm

Sekarang Anda dapat memulai mesin perutean.

osrm-routed --algorithm=MLD britain-and-ireland-latest.osrm

Seperti yang Anda lihat, ia mendengarkan pada port TCP 5000.

Langkah 4:Membuat layanan systemd

Kita dapat menjalankan mesin perutean OSRM secara manual dengan osrm-routed --algorithm=MLD britain-and-ireland-latest.osrm , tetapi lebih nyaman untuk menjalankan osrm-routed sebagai layanan systemd di latar belakang. Tekan Ctrl+C untuk menghentikan proses osrm-routed saat ini dan membuat file unit layanan systemd untuk osrm-routed dengan perintah berikut.

sudo nano /etc/systemd/system/osrm-routed.service

Masukkan baris berikut ke dalam file.

[Unit]
Description=Open Source Routing Machine
Wants=network-online.target
After=network.target network-online.target

[Service]
ExecStart=/usr/local/bin/osrm-routed --algorithm=MLD /srv/osrm/osrm-backend/britain-and-ireland-latest.osrm
User=osrm
Group=osrm
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Simpan dan tutup file. Ubah kepemilikan /srv/osrm/osrm-backend/ direktori.

sudo chown osrm:osrm /srv/osrm/osrm-backend/ -R

Sekarang kita dapat memulai dan mengaktifkan osrm-routed layanan systemd.

sudo systemctl start osrm-routed

sudo systemctl enable osrm-routed

Periksa status.

systemctl status osrm-routed

Jika osrm-routed service tidak aktif (berjalan), Anda dapat menjalankan perintah berikut untuk melihat apa yang salah.

sudo journalctl -eu osrm-routed

Langkah 5:Konfigurasi server web Apache

Kita dapat mengonfigurasi server web Apache sebagai proxy terbalik untuk osrm-routed layanan, sehingga kami dapat menggunakan nama domain untuk mengakses layanan perutean dan juga mengaktifkan enkripsi HTTPS.

Instal server web Apache.

sudo apt install apache2

Untuk menggunakan Apache sebagai proxy terbalik, kita perlu mengaktifkan proxy , proxy_http dan rewrite modul.

sudo a2enmod proxy proxy_http rewrite

Kemudian buat file host virtual untuk OSRM.

sudo nano /etc/apache2/sites-available/osrm.conf

Tambahkan teks berikut ke dalam file. Ganti osrm.your-domain.com dengan nama domain Anda yang sebenarnya dan jangan lupa untuk membuat catatan DNS A untuk itu.

<VirtualHost *:80>
    ServerName osrm.your-domain.com

    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

Simpan dan tutup file. Kemudian aktifkan host virtual ini.

sudo a2ensite osrm.conf

Muat ulang Apache agar perubahan diterapkan.

sudo systemctl reload apache2

Sekarang Anda dapat mengakses OSRM dari jarak jauh dengan memasukkan nama domain (osrm.your-domain.com ) di bilah alamat browser.

Langkah 6:Aktifkan HTTPS

Kami dapat mengaktifkan HTTPS dengan menginstal sertifikat TLS gratis yang dikeluarkan dari Let's Encrypt. Dalam tutorial penyiapan server ubin OSM, kami telah menginstal klien Let's Encrypt (certbot) dari toko Snap. Jadi kita hanya perlu menjalankan perintah berikut untuk mendapatkan dan menginstal sertifikat TLS.

sudo /snap/bin/certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d osrm.your-domain.com

Dimana:

  • --apache :Gunakan plugin Apache.
  • --agree-tos :Menyetujui persyaratan layanan.
  • --redirect :Memaksa HTTPS dengan pengalihan 301.
  • --hsts :Tambahkan header Strict-Transport-Security ke setiap respons HTTP. Memaksa browser untuk selalu menggunakan TLS untuk domain. Mempertahankan dari SSL/TLS Stripping.
  • --staple-ocsp :Mengaktifkan Stapel OCSP. Respons OCSP yang valid ditempelkan ke sertifikat yang ditawarkan server selama TLS.

Sertifikat sekarang harus diperoleh dan diinstal secara otomatis. Dan Anda akan dapat mengakses antarmuka web Webmin melalui koneksi HTTPS yang aman.

Langkah 7:Integrasikan OSRM dengan Slippy Map

Saya berasumsi bahwa peta slippy Anda ditampilkan menggunakan perpustakaan JavaScript Leaflet, dan Anda telah menambahkan layanan geocoding Nominatim ke peta slippy Anda.

Untuk mengintegrasikan OSRM dengan slippy map, kita dapat menggunakan plugin bernama Leaflet Routing Machine. Pertama, sertakan file JavaScript dan CSS mesin perutean Leaflet ke peta slippy Anda. Perhatikan bahwa mereka harus ditempatkan setelah JavaScript Leaflet utama dan JavaScript Geocoder Kontrol Leaflet.

<html>
  <head>
     ....
     ....
     <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.css" />
     <script src="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.js"></script>
 </head>
 <body>
 ....
 ....
 </body>
</html>

Selanjutnya, tambahkan baris berikut ke <script>...</script> cuplikan di badan HTML.

     L.Routing.control({
         serviceUrl: 'https://osrm.your-domain.com/route/v1',
         geocoder: L.Control.Geocoder.nominatim({serviceUrl:'https://tile.your-domain.com/nominatim/'}),
         routeWhileDragging: true
       }).addTo(map);

Seperti ini:

<html>
  <head>
     ....
     ....
     <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.css" />
     <script src="https://unpkg.com/[email protected]/dist/leaflet-routing-machine.js"></script>
 </head>
 <body>
   <div id="map"></div>
     <script>
     ....
     ....


     L.Routing.control({
         serviceUrl: 'https://osrm.your-domain.com/route/v1',
         geocoder: L.Control.Geocoder.nominatim({serviceUrl:'https://tile.your-domain.com/nominatim/'}),
         routeWhileDragging: true
       }).addTo(map);

    </script>

  </body> 
</html>

Simpan dan tutup file. Kemudian muat ulang peta di browser web Anda, Anda akan melihat panel kontrol di sudut kanan atas, tempat Anda dapat memasukkan alamat awal dan alamat tujuan.

Anda dapat menarik titik jalan pada peta dan OSRM akan menghitung ulang rute secara otomatis.


Ubuntu
  1. Cara Menginstal Open Real Estate di Ubuntu 16.04

  2. Instalasi Ubuntu | Bagaimana cara menginstal Ubuntu 11.10 (Oneiric Ocelot)?

  3. Cara menginstal TensorFlow " Machine Learning " di Ubuntu 21.04

  1. Cara Menginstal R di Ubuntu 20.04

  2. Cara Menginstal Go di Ubuntu 18.04

  3. Bagaimana Cara Menginstal Ubuntu Pada Mesin Tanpa Kepala?

  1. Cara Menginstal R di Ubuntu 18.04

  2. Cara Memasang Jaringan Sosial Sumber Terbuka (OSSN) di Ubuntu 18.04 LTS

  3. Cara Menginstal Open Visual Traceroute di Ubuntu 16.04