Instalar QGIS Server en Windows utilizando XAMPP

QGIS Server es una aplicación de código abierta que proporciona servicios WMS, WFS y WCS. QGIS Server utiliza un proyecto de QGIS como back-end para crear el servicio. Los mismos datos y estilos de QGIS se mostrarán en el servicio WMS. Es por tanto una herramienta muy útil para todos los usuarios de QGIS, pues pueden crear servicios de OGC (Open Geospatial Consortium) directamente desde los datos de su proyecto.

En este artículo veremos cómo instalar QGIS Server en Windows utilizando un servidor XAMPP.

¿Qué es QGIS Server?

QGIS Server es una aplicación FastCGI/CGI (Common Gateway Interface) escrita en C ++ que funciona junto con un servidor web como por ejemplo, Apache, o Nginx.

QGIS Server puede servir datos de acuerdo con los protocolos estándar descritos por Open Geospatial Consortium (OGC):

  • WMS 1.1.1 y 1.3.0. QGIS Server LTR 3.28 ahora está certificado contra WMS 1.3.0.
  • WFS 1.0.0 y 1.1.0
  • OGC API – Features (WFS3)
  • WCS 1.1.1
  • WMTS 1.0.0

1. Instalar XAMPP

El primer paso para disponer de QGIS Server funcionando es instalar Apache. En este caso instalaremos un servidor XAMPP.

XAMPP es una distribución de Apache completamente gratuita y fácil de instalar que contiene MariaDB, PHP y Perl.

XAMPP es un acrónimo en que la X hace referencia al sistema operativo utilizado.

  • WAMP, para Windows.
  • LAMP, para Linux.
  • MAMP, para MAC OS X.

Utilizamos XAMPP para escribir scripts de PHP y realizar las conexiones a las bases de datos.

En la página de XAMPP descargamos la última versión para Windows. Es muy sencillo de instalar, pues una vez que ejecutamos el archivo descargado, se abre un instalador que nos guía en la instalación y nos permite elegir los componentes:

En la imagen anterior se ha seleccionado MySQL que, aunque realmente no es imprescindible para QGIS Server y no sea la base de datos más utilizada en GIS, es una buena alternativa como ya vimos en otro artículo de este blog.

Una vez completada la instalación tendremos disponible el panel de control de XAMPP que nos permite arrancar y parar el servidor.

Arrancaremos Apache haciendo clic sobre el botón Start. Con esto será suficiente.

2. Instalar QGIS Server

Instalaremos QGIS Server (y QGIS Desktop si no lo tienes ya) desde OSGEO4W:

Cuando tengamos abierto el instalador debemos seleccionar opciones avanzadas:

En la siguiente ventana dejamos la opción por defecto: Instalación desde internet:

Ahora nos indica el directorio para la instalación. Clic en Siguiente:

Nos pide el directorio local, dejamos la opción por defecto y hacemos clic en siguiente:

Elegimos los parámetros de conexión que nos ofrece por defecto. Clic en siguiente:

Ahora indicamos el sitio de descarga:

Se nos abrirá el selector de paquetes de OSGeo4W:

  • En el apartado Desktop seleccionamos qgis.

  • En el apartado Web seleccionamos QGIS Server:

Para que no haya problemas, es recomendable que la versión de QGIS Server sea la misma que la versión de escritorio de QGIS.

Cuando lo tengamos hacemos clic en Siguiente y comenzará la instalación. Deberemos instalar todas las dependencias recomendadas para que no haya problemas y aceptar los términos de licencia.

3. Configurar XAMPP

Llegados a este punto necesitaremos configurar el archivo de configuración de Apache para que “apunte” a QGIS Server.

Tenemos que editar el archivo httpd.conf que si has seguido las instrucciones que hemos indicado se encontrará en: C:\xampp\apache\conf\

Busca en torno a la línea 370 y cambia:

ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"

por

ScriptAlias /cgi-bin/ "C:/OSGeo4W/apps/qgis/bin/"

Busca en torno a la línea 387 y cambia:

<Directory "C:/xampp/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

por:

<Directory "C:/OSGeo4W/apps/qgis/bin">
    SetHandler cgi-script
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

Busca en torno a la línea 438 y cambia:

AddHandler cgi-script .cgi .pl .asp

por:

AddHandler cgi-script .cgi .pl .asp .exe

Al final del mismo archivo httpd.conf añade las siguientes líneas:

SetEnv GDAL_DATA "C:\OSGeo4W\share\gdal"
SetEnv QGIS_AUTH_DB_DIR_PATH "C:\OSGeo4W\apps\qgis\resources"
SetEnv PYTHONHOME "C:\OSGeo4W\apps\Python39"
SetEnv PATH "C:\OSGeo4W\bin;C:\OSGeo4W\apps\qgis\bin;C:\OSGeo4W\apps\Qt5\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem"
SetEnv QGIS_PREFIX_PATH "C:\OSGeo4W\apps\qgis"
SetEnv QT_PLUGIN_PATH "C:\OSGeo4W\apps\qgis\qtplugins;C:\OSGeo4W\apps\Qt5\plugins"

4. Comprobando la instalación

Ahora abre una ventana de tu navegador y escribe en la barra de direcciones:

http://localhost/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Obtendrás el XML de capacidades del servicio:

5. Servidor de QGIS – Publicación de servicios

Ahora que tenemos el servidor trabajando, podremos publicar como un servicio de OGC cualquiera de nuestros proyectos de QGIS.

Abrimos QGIS. Ojo! debemos abrir la versión en el directorio que hemos instalado con OSGeo4W, cualquier otra instalación independiente no estará vinculada con QGIS Server.

El archivo ejecutable de QGIS se encuentra en C:\OSGeo4W\bin y se denomina qgis.

Una vez abierto vamos al menú superior Proyecto > Propiedades. En la ventana Propiedades del proyecto veremos la pestaña Servidor de QGIS.

En este menú del servidor de QGIS podemos acceder a las propiedades de los servicios y a su configuración:

  • Capacidades del servicio.
  • Capacidades WMS.
  • Capacidades WMTS.
  • Capacidades WFS.
  • Capacidades WCS.
  • Comprobación de la configuración.

6. Crear un servicio WMS con QGIS Server y hacer una petición GetMap

Para crear un servicio WMS el primer paso será crea un nuevo proyecto de QGIS denominado world y añadir una capa, en este ejemplo añadiremos una capa denominada countries.

Guardamos el proyecto en la ubicación C:/Ejemplos_QGIS_Server

Podemos hacer una petición a un servicio WMS, escribiendo en el navegador la siguiente url:

http://localhost/cgi-bin/qgis_mapserv.fcgi.exe?
MAP=C:/Ejemplos_QGIS_Server/world.qgs&
LAYERS=countries&
SERVICE=WMS&
VERSION=1.3.0&
REQUEST=GetMap&
CRS=EPSG:4326&
WIDTH=600&
HEIGHT=600&
BBOX=-90,-180,90,180

Como resultado obtenemos el mapa web:

8 comentarios en «Instalar QGIS Server en Windows utilizando XAMPP»

  1. Disculpa, una vez hago todo el proceso, al entrar al local host me salen tres ventanas emergentes:

    La ejecucion de codigo no puede continuar porque no se encontró «libfcgi.dll» luego «Qt5Gui.dll» luego «Qt5core.dll»

    y al final:

    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at postmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.

    ¿que podra ser?

  2. Me está dando este error
    12:03:07 p. m. [Apache] Status change detected: stopped
    12:03:07 p. m. [Apache] Error: Apache shutdown unexpectedly.
    12:03:07 p. m. [Apache] This may be due to a blocked port, missing dependencies,
    12:03:07 p. m. [Apache] improper privileges, a crash, or a shutdown by another method.
    12:03:07 p. m. [Apache] Press the Logs button to view error logs and check
    12:03:07 p. m. [Apache] the Windows Event Viewer for more clues
    12:03:07 p. m. [Apache] If you need more help, copy and post this
    12:03:07 p. m. [Apache] entire log window on the forums

    • Hola Ana:
      Tienes que comprobar en XAMPP que el puerto que estas utilizando no está ocupado. Puedes utilizar el botón Netstat para ver la lista de puertos. En caso de conflicto deberás configurar Apache editando el archivo httpd.conf para definir el nuevo puerto.
      Saludos

  3. buenos días,
    Mi pregunta es sobre la publicación de un WMTS con QGIS server a partir de imágenes en formato ecw.
    ¿ Se puede hacer? ¿Cómo gestiona el cacheo de imágenes y almacenamiento de la cache?
    Saludos

  4. Gracias por el tutorial….
    ¿Podrían hacer un tutorial para instalar QGIS Server en Linux?
    ¿Quizás usando Docker?

    Saludos…

Los comentarios están cerrados.