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
.
Los requisitos y pasos para agregar repositorios oficiales de QGIS para instalar QGIS Server en un sistema basado en Debian se proporcionan en QGIS installers page. Es posible que desee instalar al menos la versión a largo plazo más reciente.
Una vez que se configura el repositorio de la versión de destino y se instala QGIS Server, puede probar la instalación con:
/usr/lib/cgi-bin/qgis_mapserv.fcgi
Si obtiene el siguiente resultado, el servidor está instalado correctamente.
Nota
Dependiendo de la versión de QGIS, es posible que vea un resultado ligeramente diferente cuando ejecuta 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
Como se ve a continuación, QGIS informa un código de estado 400, que identifica correctamente que la solicitud falló porque no hay una sesión http activa. Esto no es un error e indica que el servidor está funcionando correctamente.
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.22.6-Białowieża
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.22.zip
unzip release_3.22.zip
mv QGIS-Training-Data-release_3.22/exercise_data/qgis-server-tutorial-data/world.qgs .
mv QGIS-Training-Data-release_3.22/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 desplegar correctamente el servidor QGIS se necesita un servidor HTTP. Las opciones recomendadas son Apache o NGINX.
2.1.1. Servidor HTTP Apache
Nota
A continuación, reemplace qgis.demo
con el nombre o la dirección IP de su servidor.
Instale Apache y mod_fcgid:
apt install apache2 libapache2-mod-fcgid
Puede ejecutar QGIS Server en tu sitio web por defecto, pero vamos a configurar un virtualhost específicamente para esto, como sigue.
En el directorio
/etc/apache2/sites-available
, cree un archivo llamadoqgis.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 Require all granted </Directory> <IfModule mod_fcgid.c> FcgidMaxRequestLen 26214400 FcgidConnectTimeout 60 </IfModule> </VirtualHost>
Nota
Algunas de las opciones de configuración anteriores se explican en las secciones Server variables de entorno y archivo pg_service.
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 comandoschown www-data...
cambian el propietario de los respectivos directorios y archivos awww-data
.
Ahora podemos habilitar el host virtual y el mod
fcgid
si no está ya hecho: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 a las peticiones a http://qgis.demo también tenemos que configurar el sistema cliente para que sepa quién es
qgis.demo
. Lo hacemos añadiendo127.0.0.1 qgis.demo
en el archivo hosts.# Replace 127.0.0.1 with the IP of your server. sh -c "echo '127.0.0.1 qgis.demo' >> /etc/hosts"
Importante
Recuerde que ambos archivos qgis.demo.conf
y /etc/hosts
deben estar configurados para que tu instalación funcione. También puede probar el acceso a su Servidor QGIS desde otros clientes en la red (por ejemplo, máquinas Windows o macOS) yendo a su archivo /etc/hosts
y apuntando el nombre qgis.demo
a cualquier IP que tenga la máquina del servidor en la red (no 127.0.0.1
ya que es la IP local, sólo accesible desde la máquina local). En las máquinas *nix
el archivo hosts
se encuentra en /etc
, mientras que en Windows se encuentra en el directorio C:`Windows\NSystem32\driversetc
. En Windows es necesario iniciar el editor de texto con privilegios de administrador antes de abrir el archivo de hosts.
QGIS Server ahora está disponible en http://qgis.demo. Para verificar, escriba en un navegador, como en el caso simple:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
2.1.2. NGINX HTTP Server
Nota
A continuación, reemplace qgis.demo
con el nombre o la dirección IP de su servidor.
También puede utilizar QGIS Server con NGINX. A diferencia de 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 desea 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 ahora está disponible en 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
Desde luego usted puede añadir un script de inicio para arrancar el Servidor QGIS en el momento del arranque o cuando quiera. 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
La utilización de fcgiwrap es mucho más fácil de configurar que spawn-fcgi pero es mucho más lento.
Primero tiene que instalar el correspondiente paquete:
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 ahora está disponible en 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 desplegar el Servidor QGIS, confía en dos unidades Systemd a configurar: una unidad Socket y una `unidad Service<https://www.freedesktop.org/software/systemd/man/systemd.service.html>`_.
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 NGINX HTTP, introduzcamos la configuración para esta instalació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.
Usando Apache:
Añada su configuración Fcgid (vea Servidor HTTP Apache):
FcgidInitialEnv DISPLAY ":99"
Reinicie Apache para que la nueva configuración sea tenida en cuenta:
systemctl restart apache2
Usando NGINX
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 puede instalarse en sistemas Windows utilizando la versión de 64 bits del instalador de red OSGeo4W (https://qgis.org/en/site/forusers/download.html).
Un procedimiento sencillo es el siguiente:
Descargue y ejecute el instalador de OSGeo4W
Siga la «Instalación avanzada» e instale los paquetes QGIS Desktop, QGIS Server apache y mod_fcgid.
Apache no se instala directamente como servicio en Windows. Es necesario:
Haga clic con el botón derecho del ratón en el archivo
OSGeo4W.bat
en la raíz de la carpetaC:`OSGeo4W64\
(si se han utilizado las rutas de instalación por defecto) y seleccione Ejecutar como administrador.En la consola, ejecute
apache-install.bat
, que dará como resultado> apache-install.bat Installing the 'Apache OSGeo4W Web Server' service The 'Apache OSGeo4W Web Server' service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. ...
El servicio se ha iniciado como se puede observar en el informe. Pero el servidor puede fallar en su ejecución debido a la falta de configuración personalizada.
Edite el archivo
C:OSGeo4w64\appsapacheconf\httpd.conf
con los siguientes cambios (otras combinaciones son posibles):Propósito
Config existente
Reemplazo
(Opcional) Personalice la dirección para escuchar utilizando una IP y/o un puerto, Puede y añadir tantas entradas como desee.
Listen ${SRVPORT}
Listen localhost:8080
Indicar dónde se encuentran los archivos de script
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "C:/OSGeo4W64/apps/qgis/bin/"
Proporcionar permisos en la carpeta de scripts
<Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
<Directory "C:/OSGeo4W64/apps/qgis/bin"> SetHandler cgi-script AllowOverride None Options ExecCGI Require all granted </Directory>
Habilitar las extensiones de archivo que se utilizarán para los archivos de script. Descomentar y completar
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .exe
Añadir más variables de configuración personalizadas de OSGeo4W
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W64/httpd.d/httpd_*.conf"
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W64/httpd.d/httpd_*.conf" SetEnv GDAL_DATA "C:/OSGeo4W64/share/gdal" SetEnv QGIS_AUTH_DB_DIR_PATH "C:/OSGeo4W64/apps/qgis/resources"
Reiniciar el servidor web Apache
> apache-restart.bat
Abra la ventana del navegador para probar una solicitud de GetCapabilities al servidor QGIS. Sustituye
localhost:8080
por la IP y el puerto que haya configurado para escuchar.http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
Un archivo
XML
con las capacidades debería ser devuelto. Su servidor está listo para ser utilizado.
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:
Si ha seguido las instrucciones anteriores para instalar un servidor HTTP Apache:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi? 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 ha seguido las instrucciones anteriores para instalar un servidor HTTP NGINX:
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:
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 QGIS Server WMS, WFS, OAPIF o WCS, tiene que crear un archivo de proyecto QGIS con algunos datos o utilizar uno de su proyecto actual. Defina los colores y estilos de las capas en QGIS y el CRS del proyecto, si no están ya definidos. Después, vaya al menú QGIS Server del diálogo y proporcione alguna información sobre el OWS en la pestaña Capacidades de servicio.
Tiene que Habilitar Capacidades de Servicio primero, si está desactivado. Esto aparecerá en la respuesta GetCapabilities del WMS, WFS o WCS. Si no marca Enable Service capabilities, QGIS Server utilizará la información dada en el archivo wms_metadata.xml
ubicado en la carpeta cgi-bin
.
2.4.1. Capacidades WMS
En la pestaña Capacidades WMS, puede definir la extensión anunciada en la respuesta GetCapabilities de WMS introduciendo los valores X e Y mínimo y máximo en los campos de Extensión anunciada.
Al hacer clic en Usar extensión actual del lienzo se establecen estos valores a la extensión mostrada actualmente en el lienzo de mapas de QGIS. Marcando la casilla restricciones de SRC, puede restringir los sistemas de referencia de coordenadas (SRC) que QGIS Server ofrecerá para representar los mapas. Se recomienda restringir los SRC ofrecidos, ya que esto reduce el tamaño de la respuesta GetCapabilities de WMS. Utilice el botón para seleccionar los CRS del selector de sistemas de referencia de coordenadas, o haga clic en Usado para añadir a la lista los SRC utilizados en el proyecto QGIS.
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 Excluir diseños y haga clic en el boton 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 Excluir capas y haga clic en el 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 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 Add geometry to feature response. Esto incluirá el cuadro delimitador para cada función en la respuesta de GetFeatureInfo. Consulte también el parámetro WITH_GEOMETRY.
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 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 QGIS Server se usa en modo mosaico (ver TILED parameter), puede establecer el Tile buffer in pixels. El valor recomendado es el tamaño del símbolo más grande o ancho de línea 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 WMTS
En la pestaña Capacidades WMTS puede seleccionar las capas que desea publicar como WMTS y especificar si desea publicarlas como PNG o JPEG.
Si introduce una URL en el campo URL anunciada de la sección Capacidades WMTS, QGIS Server anunciará esta URL específica en la respuesta GetCapabilities de WMTS.
2.4.3. Capacidades WFS/OAPIF
En la pestaña Capacidades WFS/OAPIF, puede seleccionar las capas que desea publicar como WFS u OAPIF, y especificar si permitirán operaciones de actualización, inserción y eliminación.
Si introduce una URL en el campo URL anunciada de la sección Capacidades WFS, QGIS Server anunciará esta URL específica en la respuesta WFS GetCapabilities.
2.4.4. Capacidades WCS
En la pestaña Capacidades WCS, puede seleccionar las capas que desea publicar como WCS.
Si introduce una URL en el campo URL anunciada de la sección Capacidades del WCS, QGIS Server anunciará esta URL específica en la respuesta WCS GetCapabilities.
2.4.5. Ajuste fino de OWS
Para capas vectoriales, el menú Campos del diálogo 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
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 responsiva dedicada a QGIS Server. Le ayuda a construir un visor de mapas altamente personalizado con selección de capas, información de objetos espaciales, etc.. También hay muchos complementos disponibles como la autenticación o el servicio de impresión, la lista completa está disponible en este repositorio.