当前位置 博文首页 > 丁劲犇技术发布空间:使用Manjaro作为OpenStreetMap瓦片服务器
跟踪OpenStreetMap瓦片服务器也十几年了。之前一直用Ubuntu,后来迁移到Archlinux下。近期,发现基于Archlinux的Manjaro非常好用,简约美观,故而迁移到Manjaro下。注意事项:
安装Ubuntu 字体或者谷歌字体,比较美观。使用Unifont,中文显示很挫。另外,把字体文件夹设置位fonts,别忘了打开递归开关“font_dir_recurse"。
新版的mapnik 3配合apache mod_tile,要从AUR安装renderd等服务。但是,笔者安装时,AUR编译出错。原因是AUR的脚本没有更新,继续要把mod_tile.conf打包进去。实际上,github上的项目里,找不到这个文件了。
yay mod_tile-git
解决方法很简单,在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文件夹已经创建后,编译尚未结束时拷贝进去。这段时间很久,可以慢慢操作。
如果使用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
就可以访问了。
可以用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
从git 签出https://github.com/gravitystorm/openstreetmap-carto后,运行脚本
get-external-data.py
下载数据,并导入数据库。
新版的carto需要 npm的cartocss模块进行转换,从mml文件编译成mapnik认识的xml 文件。
迁移完毕后,即可看到效果了。等到下次全球数据导入后,将彻底切换到manjaro!
cs