• 如何在Ubuntu 20.04上安装OSRM——开源路由机器

    OSRM(开源路由机器)是OpenStreetMap(OSM)道路网络的超快速路由引擎。在之前的教程中,我们解释了设置自托管OpenStreetMap互动程序服务器的过程,以及如何使用Namingm向地图添加地址查找功能。本教程将向您展示如何使用OSRM向OpenStreetMap添加导航功能,OSRM提供了汽车路线、自行车路线和步行路线。 本教程也适用于Ubuntu 18.04。 先决条件 要学习本教程,您应该安装并运行OSM tile服务器。如果没有,请按照下面的教程设置您自己的OSM tile服务器。 如何在Ubuntu 20.04上设置OpenStreetMap Tile服务器 您还应该可以访问地理编码服务,如用于地址查找的Namingm。 在Ubuntu20.04上设置OSM地理编码服务器 满足要求后,按照以下说明设置OSRM服务器。 步骤1:从源代码构建OSRM 安装依赖软件包。 sudo apt更新sudo apt install build sential 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 创建osrm用户。(无需为此用户创建密码。) sudo useradd-d/srv/osrm-s/bin/bash-m osrm 向您自己的用户帐户授予权限。 sudo apt install acl sudo setfacl-R-mu:username:rwx/srv/osrm/ 更改为/srv/osrm/目录。 cd/srv/osrm/ 从其Github存储库下载OSRM源代码。 git克隆https://github.com/Project-OSRM/osrm-backend.git 创建构建目录。 mkdir构建 更改到此目录并配置生成环境。 cd构建cmake/srv/osrm/osrm后端/ 编译源代码。 制作 安装二进制文件。 sudo make安装 将安装以下二进制文件。 /usr/local/bin/osrm摘录: /usr/local/bin/osrm分区: /usr/local/bin/osrm定制: /usr/local/bin/osrm合同: /usr/local/bin/osrm数据存储: /usr/local/bin/osrm路由: 第2步:安装GNU屏幕 下一步,我们需要从OpenStreetMap中提取道路网络,这可能需要很长时间。您的计算机可能已与Internet断开连接,因此建议使用GNU Screen实用程序使会话保持活动状态。在Ubuntu 20.04服务器上安装屏幕: sudo apt安装屏幕 然后启动屏幕: 屏幕 在第一次启动时,您将看到介绍文本,只需按Enter键即可结束。然后你就可以像往常一样运行命令了。 步骤3:生成OSRM路由数据 现在我们需要下载OpenStreetMap数据,并使其可用于路由。运行以下命令以PBF(ProtoBufBinary)格式下载整个行星(56G)的地图数据。 wget-chttp://planet.openstreetmap.org/pbf/planet-latest.osm.pbf-P/srv/osrm/osrm后端 如果你想要一张单个国家/州/省/市的地图,请访问http://download.geofabrik.de.例如,使用以下命令下载英国地图数据(1.2G)。 wget-chttp://download.geofabrik.de/europe/great-britain-latest.osm.pbf-P/srv/osrm/osrm后端 自行车。org还以不同的格式提供了全球200多个城市和地区的摘录。 确保您位于/srv/osrm/osrm backend/目录中。 cd/srv/osrm/osrm后端/ 从OpenStreetMap数据中提取图形。 osrm最新摘录英国和爱尔兰。奥斯曼。pbf——线程数=10 默认情况下,它将使用汽车。lua简介。 现在,您可能不需要在服务器上执行其他操作。由于您使用的是Screen,所以可以按Ctrl+A,释放这些键,然后按D键从当前屏幕会话中分离。您将看到如下消息。 [与32113.pts-1.focal分离] 这告诉我之前的屏幕会话ID是32113。您可以从SSH会话中注销,甚至可以关闭计算机。别担心,osrm提取过程仍在运行。当需要返回并检查进度时,请将SSH连接到服务器并运行以下命令以获取上一个屏幕会话ID。 屏幕-ls 样本输出: 屏幕显示:32113。pts-1。focal(2020年5月19日03:45:29下午)(已分离)1个插座插入/运行/屏幕/S-linuxbabe。 然后可以重新连接到上一个屏幕会话。 屏幕-r 32113 这个过程是内存密集型的。(它在我的服务器上使用7GB内存。)完成后,将有一个文件名相同但具有相同名称的文件。osrm扩展。运行以下命令以递归方式将该图划分为单元格 osrm最新划分英国和爱尔兰。osrm 通过计算所有单元的布线权重来自定义单元。 osrm最新定制英国和爱尔兰。osrm 现在可以启动路由引擎了。 osrm路由——算法=MLD英国和爱尔兰最新版本。osrm 如您所见,它监听TCP端口5000。 第4步:创建systemd服务 我们可以使用OSRM routed--algorithm=MLD britain and ireland latest手动运行OSRM路由引擎。osrm,但在后台将osrm作为systemd服务运行更方便。按Ctrl+C停止当前osrm路由进程,并使用以下命令为osrm路由创建systemd服务单元文件。 sudo nano/etc/systemd/system/osrm路由。服务 将以下行放入文件中。 [Unit]Description=开源路由机器需求=网络在线。目标后=网络。目标网络在线。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。目标 保存并关闭文件。更改/srv/osrm/osrm backend/目录的所有权。 sudo chown osrm:osrm/srv/osrm/osrm backend/-R 现在我们可以启动并启用osrm路由systemd服务。 sudo systemctl启动osrm路由sudo systemctl启用osrm路由 检查状态。 systemctl状态osrm路由 如果osrm路由服务未处于活动状态(正在运行),则可以运行以下命令查看问题所在。 sudo journalctl-欧盟osrm路由 第5步:配置Apache web服务器 我们可以将ApacheWeb服务器配置为osrm路由服务的反向代理,因此我们可以使用域名访问路由服务,还可以启用HTTPS加密。 安装Apache web服务器。 sudo apt安装apache2 要使用Apache作为反向代理,我们需要启用代理、代理和重写模块。 sudo a2enmod代理服务器u http重写 然后为OSRM创建一个虚拟主机文件。 sudo nano/etc/apache2/sites available/osrm。形态 将以下文本添加到文件中。更换osrm。你的领域。com与您的实际域名,别忘了为它创建DNS记录。 <虚拟主机*:80>服务器名osrm。你的领域。com ProxyPass/http://127.0.0.1:5000/ProxyPassReverse/http://127.0.0.1:5000/&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite osrm。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 现在,您可以通过在浏览器地址栏中输入域名(OSRM.your-domain.com)远程访问OSRM。 第6步:启用HTTPS 我们可以通过安装Let's Encrypt颁发的免费TLS证书来启用HTTPS。在OSM tile服务器安装教程中,我们已经从Snap store安装了Let's Encrypt client(certbot)。所以我们只需要运行以下命令来获取并安装TLS证书。 sudo/snap/bin/certbot-apache-agree-tos-redirect-hsts-style-ocsp-email[email protected]-d osrm。你的领域。通用域名格式 哪里: --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。您将能够通过安全的HTTPS连接访问Webmin web界面。 第7步:将OSRM与拖拉地图集成 我假设您的slippy地图是使用传单JavaScript库显示的,并且您已经在slippy地图中添加了Namingm地理编码服务。 要将OSRM与slippy map集成,我们可以使用一个名为传单路由机器的插件。首先,将传单路由机器JavaScript和CSS文件包含到你的slippy map中。请注意,它们应该放在主传单JavaScript和传单控制Geocoder JavaScript之后。 <html&gt&书信电报;head&gt&书信电报;link rel=“stylesheet”href=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。css“/><脚本src=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。js“></script></head><body>……</body></html> 接下来,将以下行添加到<脚本&gt&lt/脚本>HTML正文中的代码片段。 L.路线。控件({serviceUrl:'https://osrm.your-domain.com/route/v1,地理编码员:L.控制。地理编码器。提名({serviceUrl:'https://tile.your-domain.com/nominatim/“}),routeWhileDragging:true})。addTo(地图); 这样地: <html&gt&书信电报;head&gt&书信电报;link rel=“stylesheet”href=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。css“/><脚本src=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。js“></script></head><body><div id=“map”></div><script>….L.路由控制({serviceUrl:'https://osrm.your-domain.com/route/v1,地理编码员:L.控制。地理编码器。提名({serviceUrl:'https://tile.your-domain.com/nominatim/“}),routeWhileDragging:true})。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。然后在web浏览器中重新加载地图,您应该会在右上角看到一个控制面板,您可以在其中输入起始地址和目标地址。 您可以在地图上拖动航路点,OSRM将自动重新计算路线。 收尾 我希望本教程能帮助你在Ubuntu20.04上安装OSRM服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:72