当前位置 博文首页 > 丁劲犇技术发布空间:使用Manjaro作为OpenStreetMap瓦片服务器

    丁劲犇技术发布空间:使用Manjaro作为OpenStreetMap瓦片服务器

    作者:[db:作者] 时间:2021-09-19 22:45

    跟踪OpenStreetMap瓦片服务器也十几年了。之前一直用Ubuntu,后来迁移到Archlinux下。近期,发现基于Archlinux的Manjaro非常好用,简约美观,故而迁移到Manjaro下。注意事项:

    1. 中文字体

    安装Ubuntu 字体或者谷歌字体,比较美观。使用Unifont,中文显示很挫。另外,把字体文件夹设置位fonts,别忘了打开递归开关“font_dir_recurse"。
    字体设置

    2. mod_tile 安装

    新版的mapnik 3配合apache mod_tile,要从AUR安装renderd等服务。但是,笔者安装时,AUR编译出错。原因是AUR的脚本没有更新,继续要把mod_tile.conf打包进去。实际上,github上的项目里,找不到这个文件了。

    yay mod_tile-git
    

    解决mod_tile编译问题

    解决方法很简单,在AUR编译自动化过程中,当从github下载源码后,直接复制例子里的配置文件到源码文件夹即可。

    [user@localhost ~]$ cd ~/.cache/yay/mod_tile-git/src
    [user@localhost src]$ cp ~/.cache/yay/mod_tile-git/src/mod_tile/examples/config/apache2/renderd.conf.dist mod_tile/mod_tile.conf
    
    

    关键是要在src文件夹已经创建后,编译尚未结束时拷贝进去。这段时间很久,可以慢慢操作。

    3. fast-cgi 、mod_proxy_fcgi配置

    如果使用fcgi,注意最新版本的apache使用的官方模块是 mod_proxy_fcgi,这个模块不会自动启动cgi程序。可以使用官方的fcgi启动器

    fcgistarter -c /srv/http/cgi-bin/query_osm.fcgi  -p 4000 -N 4
    

    启动原本的fcgi脚本,在本地4000端口监听。同时,在httpd里面设置代理

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
    ProxyPass "/query_osm/" "fcgi://localhost:4000/"
    

    这样,通过网址

    http://localhost/query_osm/?cmd=show
    就可以访问了。

    设置开机运行fcgi后台

    可以用systemd设置开机运行的脚本。

    sudo nano /usr/lib/systemd/system/osm_fcgi.service
    
    [Unit]
    Description=OSM QueryService
    After=postgresql.service
    Before=httpd.service
    [Service]
    Type=forking
    TimeoutSec = 30
    ExecStart= bash -c "fcgistarter -c /srv/http/cgi-bin/query_osm.fcgi  -p 4000 -N 4 "
    User=archosm
    group=archosm
    
    [Install]
    WantedBy=multi-user.target
    
    
    sudo systemctl enable osm_fcgi
    sudo systemctl start osm_fcgi
    

    4. 下载新版的openstreetmap carto

    从git 签出https://github.com/gravitystorm/openstreetmap-carto后,运行脚本
    get-external-data.py
    下载数据,并导入数据库。

    新版的carto需要 npm的cartocss模块进行转换,从mml文件编译成mapnik认识的xml 文件。

    迁移完毕后,即可看到效果了。等到下次全球数据导入后,将彻底切换到manjaro!

    在这里插入图片描述

    cs