1.将graphhopper-web.jar包、osm.pbf数据和config.yml打包部署到服务器上
scp /path/to/graphhopper.jar /path/to/config.yml /path/to/china.osm.pbf 用户名@服务器ip:~
之后在服务器的根目录下可看到
cd ~
将上述文件移动到你想放置的文件夹内,之后修改config.yml配置文件
2.config.yml配置文件修改
缓存文件名
graph.location: graph-cache
graph-cache是缓存文件名,该文件夹和config.yml在同一个目录下
然后就是修改端口和服务器名
如果不修改服务器名的话,默认配置localhost无法在浏览器下访问graphhopper
server:
application_connectors:
- type: http
port: 8989
# for security reasons bind to localhost
bind_host: ip
修改bind_host改为自己服务器地址,port是端口号
接着修改log日志,方便配置graphhopper后台自动运行
logging:
appenders:
- type: file
time_zone: UTC
current_log_filename: /usr/local/graphhopper/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"
修改 current_log_filename: /usr/local/graphhopper/logs/graphhopper.log 日志绝对路径地址
这个logs文件夹需要自己创建
接着就是对logs文件和graph-cache文件分别设置最高权限
sudo chmod 777 graph-cache
sudo chmod 777 logs
接着就可以在graphhopper文件夹内运行graphhopper啦
java -Ddw.graphhopper.datareader.file=china.osm.pbf -jar graphhopper.jar server config.yml
注:jar包,osm.pbf,config.yml,logs文件夹,graph-cache文件夹,这五个文件我都放置在同一个文件夹下graphhopper
3.graphhopper后台自动运行
在 /etc/systemd/system/ 中创建文件graphhopper.service
[Unit]
Description=GraphHopper Server
After=network.target
[Service]
ExecStart=/usr/bin/java -Ddw.graphhopper.datareader.file=/usr/local/graphhopper/china.osm.pbf -jar /usr/local/graphhopper/graphhopper.jar server /usr/local/graphhopper/config.yml
WorkingDirectory=/usr/local/graphhopper
User=your_username
Restart=always
[Install]
WantedBy=multi-user.target
需要修改/usr/local/java,根据自己java位置来写
which java
运行命令查看java位置复制上去
修改/usr/local/graphhopper,我的文件都在这里,根据自己文件位置修改,osm.pbf,jar包,workdirectory文件都要修改
修改User,your_username是服务器用户名
之后保存
运行以下命令以重新加载systemd
并启动GraphHopper服务器:
sudo systemctl daemon-reload
sudo systemctl start graphhopper
可以使用以下命令检查服务器状态:
sudo systemctl status graphhopper
状态是running状态为成功
如果希望GraphHopper服务器在系统启动时自动启动,运行以下命令:
sudo systemctl enable graphhopper
之后就可以运行啦