当前位置: 首页 > article >正文

linux(ubuntu)部署GraphHopper-9.1

Linux(Ubuntu)部署GraphHopper 9.1

记录下部署过程,该过程针对9.1版本,其它版本是否可用,请自行测试

使用的编译好的jar包进行部署的,也可以选择下载源码编译部署,这里没再写,由于使用maven去编译时,需要下载一些第三方的包,部分包可能需要科学上网才能下载成功,懒得弄了,自己源码没能折腾完就不记录了,免得误人子弟。

1. GraphHopper 简介

GraphHopper 是一个高效的开源路由引擎,广泛用于从 OpenStreetMap 数据中进行路径规划。它支持多种交通方式,如汽车、自行车、步行等,并提供多种路径计算优化算法(如 Contraction Hierarchies)。GraphHopper 在导航、物流优化、GIS 应用等领域应用广泛,能够处理复杂的路网数据和转弯限制等问题。它不仅可以作为独立的路径规划服务运行,还能集成到更大的系统中,支持 REST API 请求,实现快速、高效的路径查询。


2. 使用编译好的 JAR 发布 GraphHopper

如果不需要编译源码,可以直接使用 GraphHopper 官方发布的预编译 JAR 包,快速进行部署。以下是具体步骤。

1. 安装必要的依赖项

首先,确保系统中已经安装了 Java 17 或更高版本:

sudo apt update
sudo apt install openjdk-17-jdk

验证 Java 是否安装成功:

java -version

2. 下载编译好的 GraphHopper JAR 包

在这里插入图片描述

前往 GraphHopper Releases 页面,下载最新的稳定版本(如 graphhopper-web-9.1.jar)。或者直接使用 wget 命令下载到指定的 /usr/local/graphhopper 目录:

sudo wget https://github.com/graphhopper/graphhopper/releases/download/9.1/graphhopper-web-9.1.jar -O /usr/local/graphhopper/graphhopper-web-9.1.jar

3. 下载 OpenStreetMap 数据

GraphHopper 使用 OpenStreetMap (OSM) 数据来进行路径规划。可以从 Geofabrik 下载特定区域的 .osm.pbf 数据到指定的 /usr/local/graphhopper 目录。例如,下载北京的数据:

wget https://download.geofabrik.de/asia/china/beijing-latest.osm.pbf -O /usr/local/graphhopper/beijing-latest.osm.pbf

4. 创建配置文件

配置文件与jar包的版本要一致,部分属性在版本更迭中有改变。

自己创建config.yml文件

/usr/local/graphhopper 目录中创建 config.yml 文件

nano /usr/local/graphhopper/config.yml

内容如下:

graphhopper:
# 你自己下载的pbf文件名称
  datareader.file: "xxx.osm.pbf"
  graph.location: graph-cache

  profiles:
   - name: car
     custom_model_files: [car.json]

  profiles_ch:
    - profile: car

  profiles_lm: []
  graph.encoded_values: car_access, car_average_speed
  prepare.min_network_size: 200
  prepare.subnetworks.threads: 1
  routing.non_ch.max_waypoint_distance: 1000000
  import.osm.ignored_highways: footway,cycleway,path,pedestrian,steps
  graph.dataaccess.default_type: RAM_STORE

server:
  application_connectors:
  - type: http
    port: 8989
    bind_host: 0.0.0.0
    max_request_header_size: 50k
  request_log:
      appenders: []
  admin_connectors:
  - type: http
    port: 8990
    bind_host: 0.0.0.0
logging:
  appenders:
    - type: file
      time_zone: UTC
      current_log_filename: logs/graphhopper.log
      log_format: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
      archive: true
      archived_log_filename_pattern: ./logs/graphhopper-%d.log.gz
      archived_file_count: 30
      never_block: true
    - type: console
      time_zone: UTC
      log_format: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
  loggers:
    "com.graphhopper.osm_warnings":
      level: DEBUG
      additive: false
      appenders:
        - type: file
          currentLogFilename: logs/osm_warnings.log
          archive: false
          logFormat: '[%level] %msg%n'

Ctrl + O 保存,Ctrl + X 退出

  • graph.flag_encoders: 指定编码器类型,比如 carbikefoot
  • datareader.file: 指定下载的 OSM 数据文件的路径。
  • graph.location: GraphHopper 缓存图数据的路径。
  • port: GraphHopper Web 服务的端口。

该配置文件指定了 OSM 数据文件、图数据的存储位置、交通方式(如 car)以及 Web 服务监听的端口(默认 8989)。

在源码中获取

在这里插入图片描述

解压后可以看到config-example.yml文件,将其改为config.yml,然后按照前面的设置即可。

注意: 上述涉及的各个文件,都可以提前下载,然后使用指令或者可视化工具将文件拷贝到指定目录(可视化工具 Termius))

5. 导入数据并启动服务

使用以下命令导入 OSM 数据并启动服务:

java -jar graphhopper-web-9.1.jar import config.yml

数据导入完成后,使用以下命令启动 GraphHopper 服务:

java -jar graphhopper-web-9.1.jar server config.yml

启动成功后,GraphHopper 将在 http://<服务器IP>:8989 上提供 Web 服务,可以通过浏览器访问它并测试路径规划功能。


3. 设置 GraphHopper 为系统服务

为了使 GraphHopper 在系统启动时自动运行,并且以后台服务的方式持续运行,可以将其设置为 systemd 服务。

1. 创建服务文件

/etc/systemd/system/ 目录下创建一个新的服务文件 graphhopper.service

sudo nano /etc/systemd/system/graphhopper.service

在文件中添加以下内容:

[Unit]
# 指定启动命令
Description=GraphHopper Routing Engine
After=network.target

[Service]
ExecStart=/usr/bin/java -jar /usr/local/graphhopper/graphhopper-web-9.1.jar server /usr/local/graphhopper/config.yml
# 指定工作目录
WorkingDirectory=/usr/local/graphhopper
# 指定运行服务的用户 (请替换为实际的用户名)
User=yourusername
# 设置重启策略
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • User: 需要替换为运行该服务的实际用户。
  • ExecStart: 指定 GraphHopper JAR 包和配置文件的路径。

2. 启用并启动服务

执行以下命令使 GraphHopper 服务在系统启动时自动运行,并立即启动该服务:

sudo systemctl daemon-reload
sudo systemctl enable graphhopper
sudo systemctl start graphhopper

3. 检查服务状态

使用以下命令检查 GraphHopper 服务是否成功启动:

sudo systemctl status graphhopper

如果启动成功,将看到类似以下的输出:

graphhopper.service - GraphHopper Routing Engine
   Loaded: loaded (/etc/systemd/system/graphhopper.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2024-10-19 12:00:00 UTC; 2min ago
   Main PID: 12345 (java)
   Tasks: 20 (limit: 4915)
   Memory: 200.0M
   CPU: 5.6s
   CGroup: /system.slice/graphhopper.service
           └─12345 /usr/bin/java -jar /usr/local/graphhopper/graphhopper-web-9.1.jar server /usr/local/graphhopper/config.yml

4. 调试和日志

如需查看服务日志,可以使用以下命令:

sudo journalctl -u graphhopper -f

如果需要停止或重启服务,可以使用以下命令:

sudo systemctl stop graphhopper
sudo systemctl restart graphhopper

访问效果:
在这里插入图片描述


http://www.kler.cn/news/365014.html

相关文章:

  • Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch
  • Windows里python报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+
  • pycharm 中提示ModuleNotFoundError: No module named ‘distutils‘
  • uniapp 常用的地区行业各种多选多选,支持回显,复制粘贴可使用
  • Python的NumPy库简介
  • h5页面与小程序页面互相跳转
  • 基于RK3588/算能BM1684 AI盒子:综合视频智能AI分析系统建设方案(二)烟火检测、物品遗留、车道占用
  • RabbitMQ深层浅讲【通俗易懂】
  • 【代码随想录Day48】图论Part01
  • Pytorch复习
  • Python自动化测试+邮件推送+企业微信推送+Jenkins
  • 如何做出高质量的PPT报告
  • Python画笔案例-092 绘制 吃豆人图案
  • The First:Starknet如何让以太坊更快更安全?
  • 202409电子学会青少年机器人技术等级考试(一级)真题
  • 华为云数据治理中心:全面保护您的业务安全
  • spark统一内存模型 详解
  • 【重学 MySQL】七十七、掌握存储过程与存储函数的查看、修改与删除技巧
  • nginx的负载均衡配置和重定向
  • FFmpeg 库的简要说明
  • 1.ubuntu下安装noetic
  • vue2解决uniapp使用uview的u-popup弹出层,遮罩下主页面还可以滑动问题
  • 【AscendC算子开发】笔记2 算子高级开发和调试调优
  • C++STL面试题笔记 01 vector、list
  • 电脑无法开机,怎么解决?
  • 10分钟快速学会Git使用