QGIS Server使用记录
0. 简述
关于QGIS Server相关的文档很少,我也没有找到其源码在哪里,所以有些问题也不知道怎么解决,只能慢慢摸索。
这里只记录了在windows 10上安装使用的过程,在linux下过程也差不多,但是简单多了,很多缺失的东西可以直接命令安装。
我这里使用了最高版本的,但是最好还是使用长期版本,没有这么多问题。
参考:
1. 下载QGIS桌面64位版本
也可以不下载,使用OSGeo4W在线安装程序,只安装qgis-server但我测试这个安装不全。我安装是最新的3.2.3版本。
使用在线安装的时候,下载站点最好选择http://download.osgeo.org
,这个网站下载最快。
下载地址: https://qgis.org/downloads/QGIS-OSGeo4W-3.2.3-1-Setup-x86_64.exe
安装的时候最好不要安装在C盘(win10下会很多地方有权限问题),安装路径中也最好不要有空格,原因后面会提到。
2. 下载安装QGIS Server程序
下载地址:http://download.osgeo.org/osgeo4w/x86_64/release/qgis/qgis-server/
这里没有找到32位版本程序的下载,只能下载64位版本。下载的版本要与桌面版本一致。
下载之后解压到QGIS的安装目录即可,压缩包内的目录结构与QGIS安装目录结构是对应的。
然后复制一份httpd.d
目录下的httpd_qgis.conf.tmpl
文件,改名为httpd_qgis.conf
。
然后编辑这个新文件
- 将里面的
@osgeo4w@
替换为QGIS的安装目录
- 将
@grassversion@
替换为grass的版本号
- 将
@windir@
替换为windows的目录。
或者直接运行一下QGIS安装目录下的etc/postinstall
下的qgis-server.bat
脚本即可。
修改的结果大致如下:
3. 下载安装Apache服务器
qgis server实质上是一个cgis程序,所以需要Apache服务器来调用。
Apache下载地址:https://www.apachelounge.com/download/
下载后直接解压即可,注意不要解压到有空格的目录。
解压之后修改conf
目录下在httpd.conf
首先修改最前面的SVRROOT
变量值
Define SRVROOT "C:/Apache24"
ServerRoot "${SRVROOT}"
然后在最后位置,把httpd_qgis.conf
包含进去
include "C:/Program Files/QGIS 3.2/httpd.d/*.conf"
因为qgis server
是一个fastcgi
程序,所以这里需要下载apache的fastcgi模块
下载地址:https://www.apachelounge.com/download/
注意要下载与apache对应的版本。
下载之后解压到apache目录下的modules
目录下即可。
4、使用及问题处理
完成上面的步骤之后,可以启动apache安装目录下的bin/httpd.exe
程序了。
如果没有报错,则可以获取一下GetCapabilities
试试
这里我在httpd.conf中修改了端口,所以访问的是8080端口。
Forbidden
You don't have permission to access /qgis/qgis_mapserv.fcgi.exe on this server.
这里可以看到,返回了403
错误,这里说明这个文件是存在的,只是被apache禁止访问了。
这里修改下apache的httpd.conf
文件
<Directory />
AllowOverride none
Require all denied
</Directory>
修改为
<Directory />
AllowOverride none
Require all granted
</Directory>
或者修改httod_qgis.conf
文件,添加Require all granted
即可。
重启httpd.exe
后继续测试,这时候发现返回的错误码变成了503
。
这时候可以打开apache的日志看看错误的原因。
这里可以看到,还是这个路径中有空格的原因。
这个问题两个解决办法
- 一是把
qgis_mapserv.fcgi.exe
程序文件复制到Apache安装目录下的cgi-bin
目录中,然后访问http://127.0.0.1:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
。 - 二是重新安装qgis到没有空格的路径中去。
然后继续测试,还可以遇到问题。
如下:
这个问题也很好解决,这是因为qgis_mapserv.fcgi.exe
编译的时候依赖的这些动态库并没有打包到里面来,需要自己去下载过来。同样缺失的还有QtXml4.dll
、QtCore4.dll
、QtGui4.dll
、QtNetwork4.dll
、QtSvg4.dll
,这些dll在QGIS2.18的安装目录下可以找到。我这里打包上传一下,地址在这里qgis_mapserv.fcgi.exe-depends.7z。也可以使用OSGeo4W在线安装
程序下载。
继续测试,这里还会碰到问题:
offscreen
插件是Qt用于离屏渲染的,在Qt5.1版本才提供。
打开httpd_qgis.conf
文件,可以看到在定义Qt插件路径变量QT_PLUGIN_PATH
的值的时候,里面对应路径是qt4
的,这里只需要把4
改为5
即可。
修改完成之后,重启httpd.exe
继续测试。
经过上面处理之后,qgis_mapserv.fcgi.exe确实能够被调用运行了,这个通过ProcessMinitor
可以监测到调用过程。
按照网上一些资料的说法,将QGIS的工程文件xxx.qgs
放入qgis_mapserv.fcgi.exe
所在目录,就可以用于提供默认的服务,不必指定map
选项参数。但是我测试GetCapabilities的结果没有成功,程序执行后返回500错误,也就是qgis_mapserv.fcgi.exe
程序没有正确返回对应的XML内容,在请求的时候添加map=xxx.qgs
或map=xxx
也都是失败的。因为没有相关的文档和源码,这个还需要继续测试。
QGIS Server使用记录的更多相关文章
- CentOS 5.5 下安装Countly Web Server过程记录
CentOS 5.5 下安装Countly Web Server过程记录 1. 系统更新与中文语言包安装 2. 基本环境配置: 2.1. NodeJS安装 依赖项安装 yum -y install g ...
- oracle 、mysql、 sql server使用记录
oracle .mysql. sql server使用记录 mysql常用命令: mysqld --启动mysql数据库 show databases; -- 查看数据库 use database; ...
- 使用SQL Server Audit记录数据库变更
最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC. ...
- SQL Server转发记录指针的坏味道
什么是转发记录指针? 转发记录指针是堆表中特有的数据存储机制. 当你修改了某个数据页中的一行时,如果该行所在的数据页已经无法存放其修改后的行, SQL Server会把这行数据移动到一个新的数据页上面 ...
- Sentry Server 日志记录分析服务
原文地址:http://blog.shanbay.com/archives/998 或许你不太会喜欢异常,特别是那些发生后继而沉默在应用日志里那些,你不知道从何开始,因为它们看起来并非那么平易近人,但 ...
- SQL Server之记录筛选(top、ties、offset)汇总
一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回指定的行数.如果没有 ORDER BY 子句,TOP 筛选将按照行的物理顺序返回指定的行数. 1. 返回指定数目的行 ...
- Windows Server 脚本记录Apache、Mysql 每分钟并发数
打开windows server 计划任务管理器.定时执行如下的Bat脚本即可. 在D盘新建一个monitor文件夹,创建ApacheMysql.bat文件.内容如下: 在monitor文件夹中新建m ...
- SQL Server 表,记录 死锁解决办法
我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的 spid SELECT request_session_id spid,OBJECT ...
- nginx多server配置记录
直接在配置文件(/etc/nginx/nginx.conf)中添加如下代码: server { listen 8080; server_name 192.168.100.174:8080; root ...
随机推荐
- Machine Learning 算法可视化实现2 - Apriori算法实现
目录 关联分析 Apriori原理 Apriori算法实现 - 频繁项集 Apriori算法实现 - 从频繁项集挖掘关联规则 一.关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务. 这些关系 ...
- c++ <vector>学习
https://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html 具体参考上面博客,很详细,也是看他的.今天c++学习200%,项目开发0% ...
- type__元组、字典、集合
- ubantu 14.04中安装npm+node.js+react antd
今天折腾了半天,各种安装问题,最终还是装上了: 1.安装npm $ sudo apt install npm 2.升级npm $ sudo npm install npm@latest -g 输入np ...
- 一个小demo 实用selenium 抓取淘宝搜索页面内的产品内容
废话少说,上代码 #conding:utf-8 import re from selenium import webdriver from selenium.webdriver.common.by i ...
- Django之form表单组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Redis自学笔记:3.5入门-集合类型
3.5集合类型 3.5.1介绍 在集合中的每个元素都是不同的,且没有顺序 表3-4集合类型和列表类型的对比 - 集合类型 列表类型 存储内容 至多232-1个字符串 至多232-1个字符串 有序性 否 ...
- 2、SQL UNION 和 UNION ALL 操作符
网址:http://www.w3school.com.cn/sql/sql_union.asp SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意, ...
- 在UnrealEngine中用Custom节点实现高斯模糊
3x3高斯模糊 //input sW 分辨率宽 //input sH 分辨率高 //input NotUse 为了开启SceneTextureLookup函数而连接的节点,但是不参与逻辑 //inpu ...
- BZOJ.3453.tyvj 1858 XLkxc(拉格朗日插值)
BZOJ 题意即求\[\sum_{i=0}^n\sum_{j=1}^{a+id}\sum_{x=1}^jx^k\] 我们知道最后一个\(\sum\)是自然数幂和,设\(f(n)=\sum_{x=1}^ ...