2. Comenzando

2.1. Instalación en sistemas basados en Debian

Daremos un breve y sencillo procedimiento de instalación para una configuración de trabajo mínima en sistemas basados en Debian (incluidos Ubuntu y derivados). Sin embargo, muchas otras distribuciones y sistemas operativos proporcionan paquetes para QGIS Server.

Nota

En Ubuntu puede usar su usuario habitual, anteponiendo sudo a los comandos que requieren permisos de administrador. En Debian puedes trabajar como administrador (root), sin usar sudo.

Requirements and steps to add official QGIS repositories to install QGIS Server on a Debian based system are provided in QGIS installers page. You may want to install at least the latest Long Term Release.

Once the target version repository is configured and QGIS Server installed, you can test the installation with:

/usr/lib/cgi-bin/qgis_mapserv.fcgi

If you get the following output, the server is correctly installed.

Nota

Depending on the version of QGIS, you might see slightly different output reported when you run qgis_mapserv.fcgi.

QFSFileEngine::open: No file name specified
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Content-Length: 206
Content-Type: text/xml; charset=utf-8

<ServiceExceptionReport version="1.3.0" xmlns="https://www.opengis.net/ogc">
 <ServiceException code="Service configuration error">Service unknown or unsupported</ServiceException>
</ServiceExceptionReport>

Nota

As seen below, QGIS reports a Status 400 code, which correctly identifies the request has failed because there is no active http session. This is not a bug and indicates the server is functioning properly.

Application path not initialized
Application path not initialized
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
"Loading native module /usr/lib/qgis/server/libdummy.so"
"Loading native module /usr/lib/qgis/server/liblandingpage.so"
"Loading native module /usr/lib/qgis/server/libwcs.so"
"Loading native module /usr/lib/qgis/server/libwfs.so"
"Loading native module /usr/lib/qgis/server/libwfs3.so"
"Loading native module /usr/lib/qgis/server/libwms.so"
"Loading native module /usr/lib/qgis/server/libwmts.so"
QFSFileEngine::open: No file name specified
Content-Length: 102
Content-Type: application/json
Server:  QGIS FCGI server - QGIS version 3.16.6-Hannover
Status:  400
[{"code":"Bad request error","description":"Requested URI does not match any registered API handler"}]

Agreguemos un proyecto de muestra. Puede utilizar el suyo propio o uno de Datos de demostración de entrenamiento:

mkdir /home/qgis/projects/
cd /home/qgis/projects/
wget https://github.com/qgis/QGIS-Training-Data/archive/release_3.16.zip
unzip release_3.16.zip
mv QGIS-Training-Data-release_3.16/exercise_data/qgis-server-tutorial-data/world.qgs .
mv QGIS-Training-Data-release_3.16/exercise_data/qgis-server-tutorial-data/naturalearth.sqlite .

Por supuesto, puede utilizar su software GIS favorito para abrir este archivo y echar un vistazo a la configuración y las capas disponibles.

Para implementar correctamente el servidor QGIS, necesita un servidor HTTP. Las opciones recomendadas son ** Apache ** o ** NGINX **.

2.1.1. Servidor HTTP Apache

Nota

In the following, please replace qgis.demo with the name or IP address of your server.

Instala Apache y mod_fcgid:

apt install apache2 libapache2-mod-fcgid

Puede ejecutar QGIS Server en su sitio web predeterminado, o configurar un host virtual específico para esto, como sigue.

En el directorio /etc/apache2/sites-available cree un archivo llamado qgis.demo.conf, con este contenido:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName qgis.demo

  DocumentRoot /var/www/html

  # Apache logs (different than QGIS Server log)
  ErrorLog ${APACHE_LOG_DIR}/qgis.demo.error.log
  CustomLog ${APACHE_LOG_DIR}/qgis.demo.access.log combined

  # Longer timeout for WPS... default = 40
  FcgidIOTimeout 120

  FcgidInitialEnv LC_ALL "en_US.UTF-8"
  FcgidInitialEnv PYTHONIOENCODING UTF-8
  FcgidInitialEnv LANG "en_US.UTF-8"

  # QGIS log
  FcgidInitialEnv QGIS_SERVER_LOG_STDERR 1
  FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0

  # default QGIS project
  SetEnv QGIS_PROJECT_FILE /home/qgis/projects/world.qgs

  # QGIS_AUTH_DB_DIR_PATH must lead to a directory writeable by the Server's FCGI process user
  FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/home/qgis/qgisserverdb/"
  FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/home/qgis/qgisserverdb/qgis-auth.db"

  # Set pg access via pg_service file
  SetEnv PGSERVICEFILE /home/qgis/.pg_service.conf
  FcgidInitialEnv PGPASSFILE "/home/qgis/.pgpass"

  # if qgis-server is installed from packages in debian based distros this is usually /usr/lib/cgi-bin/
  # run "locate qgis_mapserv.fcgi" if you don't know where qgis_mapserv.fcgi is
  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -MultiViews -SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>

 <IfModule mod_fcgid.c>
 FcgidMaxRequestLen 26214400
 FcgidConnectTimeout 60
 </IfModule>

</VirtualHost>

Otras lecturas:

Puede hacer lo anterior en un sistema de escritorio Linux pegando y guardando la configuración anterior después de hacer:

nano /etc/apache2/sites-available/qgis.demo.conf

Nota

Algunas de las opciones de configuración se explican en la sección del servidor environment variables.

Creemos ahora los directorios que almacenarán los registros del servidor QGIS y la base de datos de autenticación:

mkdir -p /var/log/qgis/
chown www-data:www-data /var/log/qgis
mkdir -p /home/qgis/qgisserverdb
chown www-data:www-data /home/qgis/qgisserverdb

Nota

www-data es el usuario de Apache en sistemas basados en Debian y necesitamos que Apache tenga acceso a esas ubicaciones o archivos. Los comandos chown www-data... cambian el propietario de los respectivos directorios y archivos a www-data.

Ahora podemos habilitar el host virtual, habilita el mod fcgid si no está activado todavía:

a2enmod fcgid
a2ensite qgis.demo

Ahora reinicie Apache para que se tenga en cuenta la nueva configuración:

systemctl restart apache2

Ahora que Apache sabe que debe responder las solicitudes a http://qgis.demo, también necesitamos configurar el sistema cliente para que sepa quién es qgis.demo. Lo hacemos agregando 127.0.0.1 qgis.demo en el archivo hosts. Podemos hacerlo con sh -c"echo '127.0.0.1 qgis.demo' >> /etc/hosts". Reemplaza 127.0.0.1 con la IP de tu servidor.

Nota

Remember that both the qgis.demo.conf and /etc/hosts files should be configured for your setup to work. You can also test the access to your QGIS Server from other clients on the network (e.g. Windows or macOS machines) by going to their /etc/hosts file and point the myhost name to whatever IP the server machine has on the network (not 127.0.0.1 as it is the local IP, only accessible from the local machine). On *nix machines the hosts file is located in /etc, while on Windows it’s under the C:\Windows\System32\drivers\etc directory. Under Windows you need to start your text editor with administrator privileges before opening the hosts file.

QGIS Server is now available at http://qgis.demo. To check, type in a browser, as in the simple case:

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

2.1.2. NGINX HTTP Server

Nota

In the following, please replace qgis.demo with the name or IP address of your server.

También puede usar QGIS Server con NGINX. Unlike Apache, NGINX no genera automáticamente procesos FastCGI. Los procesos FastCGI deben ser iniciados por otra cosa.

Instala NGINX:

apt install nginx
  • Como primera opción, puede usar spawn-fcgi o fcgiwrap para iniciar y administrar los procesos de QGIS Server. Existen paquetes oficiales de Debian para ambos. Cuando no tiene un servidor X en ejecución y necesita, por ejemplo, imprimir, puede usar xvfb.

  • Otra opción es confiar en ** Systemd **, el sistema de inicio para GNU / Linux que la mayoría de las distribuciones de Linux utilizan en la actualidad. Una de las ventajas de este método es que no requiere otros componentes o procesos. Está destinado a ser simple, pero robusto y eficiente para implementaciones de producción.

NGINX Configuración

El ** incluido fastcgi_params; ** usado en la configuración anterior es importante, ya que agrega los parámetros de /etc/nginx/fastcgi_params:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Además, puede usar algunos Variables de entorno para configurar QGIS Server. En el archivo de configuración de NGINX, /etc/nginx/nginx.conf, debe usar la instrucción fastcgi_param para definir estas variables como se muestra a continuación:

location /qgisserver {
     gzip           off;
     include        fastcgi_params;
     fastcgi_param  QGIS_SERVER_LOG_STDERR  1;
     fastcgi_param  QGIS_SERVER_LOG_LEVEL   0;
     fastcgi_pass   unix:/var/run/qgisserver.socket;
 }

FastCGI envoltorios

Advertencia

** fcgiwrap ** es más fácil de configurar que ** spawn-fcgi **, porque ya está incluido en un servicio Systemd. Pero también conduce a una solución que es mucho más lenta que usar spawn-fcgi. Con fcgiwrap, se crea un nuevo proceso de QGIS Server en cada solicitud, lo que significa que el proceso de inicialización de QGIS Server, que incluye leer y analizar el archivo del proyecto QGIS, se realiza en cada solicitud. Con spawn-fcgi, el proceso de QGIS Server permanece activo entre solicitudes, lo que resulta en un rendimiento mucho mejor. Por esa razón, se recomienda spawn-fcgi para uso en producción.

spawn-fcgi

Si quieres usar spawn-fcgi, el primer paso es instalar el paquete:

apt install spawn-fcgi

Luego, introduzca el siguiente bloque en la configuración de su servidor NGINX:

location /qgisserver {
    gzip           off;
    include        fastcgi_params;
    fastcgi_pass   unix:/var/run/qgisserver.socket;
}

Y reinicie NGINX para tener en cuenta la nueva configuración:

systemctl restart nginx

Finalmente, considerando que no existe un archivo de servicio predeterminado para spawn-fcgi, debe iniciar manualmente QGIS Server en su terminal:

spawn-fcgi -s /var/run/qgisserver.socket \
                -U www-data -G www-data -n \
                /usr/lib/cgi-bin/qgis_mapserv.fcgi

QGIS Server is now available at http://qgis.demo/qgisserver.

Nota

Al usar spawn-fcgi, puede definir directamente las variables de entorno antes de ejecutar el servidor. Por ejemplo: export QGIS_SERVER_LOG_STDERR=1

Por supuesto, puede agregar un script de inicio para iniciar QGIS Server en el momento del arranque o cuando lo desee. Por ejemplo, con systemd, edite el archivo /etc/systemd/system/qgis-server.service con este contenido:

[Unit]
Description=QGIS server
After=network.target

[Service]
;; set env var as needed
;Environment="LANG=en_EN.UTF-8"
;Environment="QGIS_SERVER_PARALLEL_RENDERING=1"
;Environment="QGIS_SERVER_MAX_THREADS=12"
;Environment="QGIS_SERVER_LOG_LEVEL=0"
;Environment="QGIS_SERVER_LOG_STDERR=1"
;; or use a file:
;EnvironmentFile=/etc/qgis-server/env

ExecStart=spawn-fcgi -s /var/run/qgisserver.socket -U www-data -G www-data -n /usr/lib/cgi-bin/qgis_mapserv.fcgi

[Install]
WantedBy=multi-user.target

Luego habilite e inicie el servicio:

systemctl enable --now qgis-server

Advertencia

Con los comandos anteriores, spawn-fcgi genera solo un proceso de QGIS Server.

fcgiwrap

Usando fcgiwrap es mucho más fácil de configurar que spawn-fcgi pero es mucho más lento. Primero tienes que instalar el paquete correspondiente:

apt install fcgiwrap

Luego, introduzca el siguiente bloque en la configuración de su servidor NGINX:

1  location /qgisserver {
2      gzip           off;
3      include        fastcgi_params;
4      fastcgi_pass   unix:/var/run/fcgiwrap.socket;
5      fastcgi_param  SCRIPT_FILENAME /usr/lib/cgi-bin/qgis_mapserv.fcgi;
6  }

Finalmente, reinicie NGINX y fcgiwrap para tener en cuenta la nueva configuración:

systemctl restart nginx
systemctl restart fcgiwrap

QGIS Server is now available at http://qgis.demo/qgisserver.

Systemd

QGIS Server necesita un servidor X en ejecución para ser completamente utilizable, en particular para imprimir. En el caso de que ya tenga un servidor X en ejecución, puede utilizar los servicios de systemd.

Este método, para implementar QGIS Server, se basa en dos unidades Systemd:

La unidad QGIS Server Socket define y crea un socket del sistema de archivos, utilizado por NGINX para iniciar y comunicarse con QGIS Server. La unidad Socket debe configurarse con Accept = false, lo que significa que las llamadas a la llamada del sistema «Aceptar ()» se delegan al proceso creado por la unidad de Servicio. Se encuentra en /etc/systemd/system/qgis-server@.socket, que en realidad es una plantilla:

[Unit]
Description=QGIS Server Listen Socket (instance %i)

[Socket]
Accept=false
ListenStream=/var/run/qgis-server-%i.sock
SocketUser=www-data
SocketGroup=www-data
SocketMode=0600

[Install]
WantedBy=sockets.target

Ahora habilite e inicie sockets:

for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.socket; done

La unidad de servicio del servidor QGIS define e inicia el proceso del servidor QGIS. La parte importante es que la entrada estándar del proceso de servicio está conectada al enchufe definido por la unidad de enchufe. Esto debe configurarse usando StandardInput=socket en la configuración de la unidad de servicio ubicada en /etc/systemd/system/qgis-server@.service:

[Unit]
Description=QGIS Server Service (instance %i)

[Service]
User=www-data
Group=www-data
StandardOutput=null
StandardError=journal
StandardInput=socket
ExecStart=/usr/lib/cgi-bin/qgis_mapserv.fcgi
EnvironmentFile=/etc/qgis-server/env

[Install]
WantedBy=multi-user.target

Nota

El servidor QGIS environment variables se define en un archivo separado, /etc/qgis-server/env. Podría parecerse a esto:

QGIS_PROJECT_FILE=/etc/qgis/myproject.qgs
QGIS_SERVER_LOG_STDERR=1
QGIS_SERVER_LOG_LEVEL=3

Ahora inicie el servicio de socket:

for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.service; done

Finalmente, para el servidor HTTP NGINX, introduzcamos la configuración para esta configuración:

upstream qgis-server_backend {
   server unix:/var/run/qgis-server-1.sock;
   server unix:/var/run/qgis-server-2.sock;
   server unix:/var/run/qgis-server-3.sock;
   server unix:/var/run/qgis-server-4.sock;
}

server {
   

   location /qgis-server {
       gzip off;
       include fastcgi_params;
       fastcgi_pass qgis-server_backend;
   }
}

Ahora reinicie NGINX para que se tenga en cuenta la nueva configuración:

systemctl restart nginx

Gracias a Oslandia por compartir su tutorial.

2.1.3. Xvfb

QGIS Server necesita un servidor X en ejecución para ser completamente utilizable, en particular para imprimir. En los servidores, generalmente se recomienda no instalarlo, por lo que puede usar xvfb para tener un entorno X virtual.

Si está ejecutando el servidor en un entorno gráfico/X11, no es necesario instalar xvfb. Mas info en https://www.itopen.it/qgis-server-setup-notes/.

Para instalar el paquete:

apt install xvfb

Cree el archivo de servicio, /etc/systemd/system/xvfb.service, con este contenido:

[Unit]
Description=X Virtual Frame Buffer Service
After=network.target

[Service]
ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset

[Install]
WantedBy=multi-user.target

Activa, inicia y prueba el estado de xvfb.service:

systemctl enable --now xvfb.service
systemctl status xvfb.service

Luego, de acuerdo con su servidor HTTP, debe configurar el parámetro DISPLAY o usar directamente xvfb-run.

Con Apache

Luego puede configurar el parámetro DISPLAY.

Con Apache, simplemente agregue a su configuración FastCGI (ver arriba):

FcgidInitialEnv DISPLAY       ":99"

Ahora reinicie Apache para que se tenga en cuenta la nueva configuración:

systemctl restart apache2

Con NGINX

Luego, puede usar xvfb-run directamente o configurar el parámetro DISPLAY.

  • Con spawn-fcgi usando xvfb-run:

    xvfb-run /usr/bin/spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi \
                                 -s /tmp/qgisserver.socket \
                                 -G www-data -U www-data -n
    
  • Con la variable de entorno DISPLAY en la configuración del servidor HTTP.

    fastcgi_param  DISPLAY       ":99";
    

2.2. Instalación en Windows

QGIS Server también se puede instalar en sistemas Windows. Si bien el paquete QGIS Server está disponible en la versión de 64 bits del instalador de red OSGeo4W (https://qgis.org/en/site/forusers/download.html) no hay ningún paquete Apache (u otro servidor web) disponible, por lo que debe instalarse por otros medios.

Un procedimiento sencillo es el siguiente:

  1. Descarga el instalador de XAMPP (https://www.apachefriends.org/download.html) para Windows e instale Apache

    ../../_images/qgis_server_windows1.png
  2. Descargue el instalador de OSGeo4W, siga la «Instalación avanzada» e instale los paquetes QGIS Desktop y QGIS Server

    ../../_images/qgis_server_windows2.png
  3. Edit the httpd.conf file (C:\xampp\apache\conf\httpd.conf if the default installation paths have been used) and make the following changes:

    De:

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

    A:

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

    De:

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

    A:

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

    De:

    AddHandler cgi-script .cgi .pl .asp
    

    A:

    AddHandler cgi-script .cgi .pl .asp .exe
    
  4. Luego, en la parte inferior de httpd.conf, agregue:

    SetEnv GDAL_DATA "C:\OSGeo4W64\share\gdal"
    SetEnv QGIS_AUTH_DB_DIR_PATH "C:\OSGeo4W64\apps\qgis\resources"
    SetEnv PYTHONHOME "C:\OSGeo4W64\apps\Python37"
    SetEnv PATH "C:\OSGeo4W64\bin;C:\OSGeo4W64\apps\qgis\bin;C:\OSGeo4W64\apps\Qt5\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem"
    SetEnv QGIS_PREFIX_PATH "C:\OSGeo4W64\apps\qgis"
    SetEnv QT_PLUGIN_PATH "C:\OSGeo4W64\apps\qgis\qtplugins;C:\OSGeo4W64\apps\Qt5\plugins"
    
  5. Reinicie el servidor web Apache desde el Panel de control de XAMPP y abra la ventana del navegador para probar una solicitud GetCapabilities en QGIS Server

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

2.3. Sirve un proyecto

Ahora que QGIS Server está instalado y funcionando, solo tenemos que usarlo.

Obviamente, necesitamos un proyecto QGIS en el que trabajar. Por supuesto, puede personalizar completamente su proyecto definiendo la información de contacto, precisando algunas restricciones en CRS o incluso excluyendo algunas capas. Todo lo que necesita saber al respecto se describe más adelante en Configure su proyecto.

But for now, we are going to use a simple project already configured and previously downloaded in /home/qgis/projects/world.qgs, as described above.

Al abrir el proyecto y echar un vistazo rápido a las capas, sabemos que actualmente hay 4 capas disponibles:

  • airports

  • places

  • countries

  • countries_shapeburst

No es necesario que comprenda la solicitud completa por ahora, pero puede recuperar un mapa con algunas de las capas anteriores gracias a QGIS Server haciendo algo como esto en su navegador web para recuperar la capa countries:

http://qgis.demo/qgisserver?
  MAP=/home/qgis/projects/world.qgs&
  LAYERS=countries&
  SERVICE=WMS&
  VERSION=1.3.0&
  REQUEST=GetMap&
  CRS=EPSG:4326&
  WIDTH=400&
  HEIGHT=200&
  BBOX=-90,-180,90,180

Si obtiene la siguiente imagen, QGIS Server se está ejecutando correctamente:

../../_images/server_basic_getmap.png

Figura 2.1 Respuesta del servidor a una solicitud básica de GetMap

Perciba que puede definir la variable de entorno QGIS_PROJECT_FILE para usar un proyecto por defecto en lugar de dar un parámetro MAP (ver Variables de entorno).

Por ejemplo con spawn-fcgi:

export QGIS_PROJECT_FILE=/home/qgis/projects/world.qgs
spawn-fcgi -f /usr/lib/bin/cgi-bin/qgis_mapserv.fcgi \
           -s /var/run/qgisserver.socket \
           -U www-data -G www-data -n

2.4. Configure su proyecto

Para proporcionar un nuevo servidor QGIS WMS, WFS o WCS, debe crear un archivo de proyecto QGIS con algunos datos o usar uno de su proyecto actual. Defina los colores y estilos de las capas en QGIS y el proyecto SRC, si aún no está definido.

../../_images/ows_server_definition.png

Figura 2.2 Definiciones para un proyecto WMS/WFS/WCS de QGIS Server

Luego, vaya al menú QGIS Server del diálogo Proyecto ► Propiedades… y proporcionar información sobre el OWS en los campos de Service Capabilities. Esto aparecerá en la respuesta GetCapabilities del WMS, WFS o WCS. Si no marca checkbox Service capabilities, QGIS Server utilizará la información proporcionada en el archivo wms_metadata.xml ubicado en la carpeta cgi-bin.

2.4.1. Capacidades WMS

En la sección Capacidades de WMS, puede definir la extensión anunciada en la respuesta GetCapabilities de WMS ingresando los valores mínimos y máximos de X e Y en los campos debajo de: guilabel:` Extensión de publicidad`. Al hacer clic en Usar extensión de lienzo actual establece estos valores en la extensión que se muestra actualmente en el lienzo del mapa QGIS. Marcando checkbox Restricciones de SRC, puede restringir en qué sistemas de referencia de coordenadas (SRC) QGIS Server ofrecerá renderizar mapas. Se recomienda que restrinja el SRC ofrecido, ya que esto reduce el tamaño de la respuesta WMS GetCapabilities. Utilice el signPlus botón de abajo para seleccionar esos SRC del Selector de Sistema de Referencia de Coordenadas, o haga clic en Usada para agregar los SRC usados en el proyecto QGIS a la lista.

Si tiene diseños de impresión definidos en su proyecto, se enumerarán en la respuesta GetProjectSettings y la solicitud GetPrint puede usarlos para crear impresiones, utilizando uno de los diseños de impresión como plantilla. Esta es una extensión específica de QGIS para la especificación WMS 1.3.0. Si desea excluir cualquier diseño de impresión de ser publicado por el WMS, marque checkbox Excluir diseños y haga clic en el boton signPlus de abajo. Luego, seleccione un diseño de impresión en el cuadro de diálogo Seleccionar diseño de impresión para agregarlo a la lista de diseños excluidos.

Si desea excluir cualquier capa o grupo de capas de la publicación del WMS, marque checkbox Excluir capas y haga clic en el signPlus botón de abajo. Esto abre el cuadro de diálogo: guilabel: Seleccionar capas y grupos restringidos, que le permite elegir las capas y grupos que no desea que se publiquen. Utilice la tecla Shift o :kbd:` Ctrl` si desea seleccionar varias entradas. Se recomienda que excluya de la publicación las capas que no necesita, ya que esto reduce el tamaño de la respuesta de WMS GetCapabilities, lo que conduce a tiempos de carga más rápidos en el lado del cliente.

Si marca checkbox Use los identificadores de capa como nombre, los identificadores de capa se usarán para hacer referencia a las capas en la respuesta GetCapabilities o el parámetro GetMap LAYERS. Si no es así, se usa el nombre de la capa o el nombre corto si está definido (ver Propiedades de servidor QGIS).

Puede recibir GetFeatureInfo solicitado como texto sin formato, XML y GML. El predeterminado es XML.

Si lo desea, puede marcar checkbox Añadir geometría a la respuesta de la función. Esto incluirá el cuadro delimitador para cada entidad en la respuesta GetFeatureInfo. Ver también el parámetro:ref:WITH_GEOMETRY <server_wms_getfeatureinfo>.

Como muchos clientes web no pueden mostrar arcos circulares en geometrías, tiene la opción de segmentar la geometría antes de enviarla al cliente en una respuesta GetFeatureInfo. Esto permite a dichos clientes seguir mostrando la geometría de una característica (por ejemplo, para resaltar la entidad). Debe marcar la casilla de verificación checkbox Segmentize feature info geometry para activar la opción.

También puede usar la opción Precisión de geometría GetFeatureInfo para establecer la precisión de la geometría GetFeatureInfo. Esto le permite ahorrar ancho de banda cuando no necesita toda la precisión.

Si desea que QGIS Server publique URL de solicitud específicas en la respuesta WMS GetCapabilities, ingrese la URL correspondiente en el campo URL anunciada.

Además, puede restringir el tamaño máximo de los mapas devueltos por la solicitud GetMap ingresando el ancho y la altura máximos en los campos respectivos bajo Máximos para solicitud GetMap.

Puede cambiar el factor Calidad para imágenes JPEG. El factor de calidad debe estar en el rango de 0 a 100. Especifique 0 para compresión máxima, 100 para sin compresión.

Puede cambiar el límite para que las entidades de Atlas se impriman en una solicitud configurando el campo Entidades máximas para solicitudes de impresión de Atlas.

Cuando se utiliza QGIS Server en modo mosaico (consulte parámetro TILED), puede configurar Búfer de mosaico en píxeles. El valor recomendado es el tamaño del símbolo o ancho de línea más grande en su proyecto QGIS.

Si una de susa capas usa Map Tip display (por ejemplo para mostrar texto usando expresiones) esto se enumerará dentro de la salida GetFeatureInfo. Si la capa usa un mapa de valor para uno de sus atributos, esta información también se mostrará en la salida de GetFeatureInfo.

2.4.2. Capacidades WFS

En el área WFS capabilities puede seleccionar las capas que desea publicar como WFS y especificar si permitirán operaciones de actualización, inserción y eliminación. Si ingresa una URL en el campo Advertised URL de la sección WFS capabilities, QGIS Server anunciará esta URL específica en la respuesta WFS GetCapabilities.

2.4.3. Capacidades WCS

En el área WCS capabilities, puede seleccionar las capas que desea publicar como WCS. Si ingresa una URL en el campo Advertised URL de la sección WCS capabilities, QGIS Server anunciará esta URL específica en la respuesta WCS GetCapabilities.

2.4.4. Ajuste fino de OWS

Para capas vectoriales, el menú Campos del diálogo Capa ► Propiedades de capa permite definir para cada atributo si se publicará o no. De forma predeterminada, todos los atributos son publicados por su WMS y WFS. Si no desea que se publique un atributo específico, desmarque la casilla correspondiente en la columna WMS o WFS.

Puede superponer marcas de agua sobre los mapas producidos por su WMS agregando anotaciones de texto o anotaciones SVG al archivo del proyecto. Ver la sección Herramientas de anotaciones para obtener instrucciones sobre cómo crear anotaciones. Para que las anotaciones se muestren como marcas de agua en la salida de WMS, la casilla de verificación Fixed map position en el cuadro de diálogo Annotation text debe estar desmarcada. Se puede acceder a esto haciendo doble clic en la anotación mientras una de las herramientas de anotación está activa. Para las anotaciones SVG, necesitará configurar el proyecto para guardar rutas absolutas (en el menú General del cuadro de diálogo :menuselection:`Proyecto -> Propiedades… `) o modificar manualmente la ruta para la imagen SVG para que represente una ruta relativa válida.

2.5. Integración con terceras partes

QGIS Server proporciona servicios web OGC como WMS, WFS, etc. por lo tanto, puede ser utilizado por una amplia variedad de herramientas de usuario final.

2.5.1. Integración con QGIS Desktop

QGIS Desktop es el diseñador de mapas donde QGIS Server es el servidor de mapas. Los mapas o proyectos QGIS serán servidos por el servidor QGIS para proporcionar estándares OGC. Estos proyectos de QGIS pueden ser archivos o entradas en una base de datos (usando Proyecto -> Guardar en -> PostgreSQL en QGIS Desktop).

Además, se debe establecer un flujo de trabajo de actualización dedicado a actualizar un proyecto utilizado por un servidor QGIS (es decir, copiar los archivos del proyecto en la ubicación del servidor y reiniciar el servidor QGIS). Por ahora, los procesos automatizados (como la recarga del servidor a través del servicio de cola de mensajes) aún no están implementados.

2.5.2. Integración con MapProxy

MapProxy es un servidor de caché de teselas y como tal puede leer y servir cualquier servidor de mapas WMS/WMTS, puede conectarse directamente a los servicios web del servidor QGIS y mejorar la experiencia del usuario final.

2.5.3. Integración con QWC2

QWC2 es una aplicación web receptiva dedicada a QGIS Server. Le ayuda a construir un visor de mapas altamente personalizado con selección de capas, información de características, etc. También hay muchos complementos disponibles como autenticación o servicio de impresión, la lista completa está disponible en este repositorio.