2. Beginnen

2.1. Installatie op op Debian gebaseerde systemen

We zullen een korte en eenvoudige How-to geven voor de installatie van een minimaal werkende configuratie op op Debian gebaseerde systemen (inclusief Ubuntu en afgeleiden). Echter, ook vele andere distributies en besturingssystemen verschaffen pakketten voor QGIS Server.

Notitie

In Ubuntu kunt u uw gewone gebruiker gebruiken, sudo vooraf laten gaan aan opdrachten die rechten van de admin vereisen. In Debian kunt u werken als admin (root), zonder sudo te gebruiken.

Vereisten en stappen om de officiële opslagplaats van QGIS toe te voegen en de versie van QGIS Server te installeren op een op Debian gebaseerd systeem worden gegeven op de pagina voor installatieprogramma’s voor QGIS. U zou misschien tenminste de laatste Long Term Release willen installeren.

Als de opslagplaats voor de doelversie is geconfigureerd en QGIS Server is geïnstalleerd, kunt u de installatie testen met:

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

Als u de volgende uitvoer krijgt, is de server correct geïnstalleerd.

Notitie

Afhankelijk van de versie van QGIS zou u een enigszins verschillende uitvoer kunnen zien gerapporteerd bij het uitvoeren van 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>

Notitie

Zoals hieronder weergegeven rapporteert QGIS een code Status 400, die correct identificeert dat het verzoek is mislukt omdat er geen actieve sessie voor http is. Dit is geen bug en geeft aan dat de server op de juiste wijze functioneert.

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"}]

Laten we een voorbeeldproject toevoegen. U kunt uw eigen gebruiken of een uit voorbeeldgegevens voor de Trainingshandleiding:

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 .

Natuurlijk kunt u uw favoriete software voor GIS gebruiken om dit bestand te openen en te kijken naar de configuratie en beschikbare lagen.

Voor het juist opzetten van QGIS server heeft u een HTTP-server nodig. Aanbevolen keuzes zijn Apache of NGINX.

2.1.1. Apache HTTP Server

Notitie

In het vervolg, vervang qgis.demo door de naam of het IP-adres van uw server.

  1. Installeer Apache en mod_fcgid:

    apt install apache2 libapache2-mod-fcgid
    
  2. U kunt QGIS Server uitvoeren op uw standaard website, maar laten we speciaal hiervoor als volgt een virtualhost configureren.

    1. Maak in de map /etc/apache2/sites-available een bestand, genaamd qgis.demo.conf, met deze inhoud:

      <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>
      

      Notitie

      Enkele van de opties voor configuratie worden uitgelegd in de gedeelten voor de Server omgevingsvariabelen en bestand pg_service.

    2. Laten we nu de mappen maken waarin de logboeken voor de QGIS Server en de database voor authenticatie zullen worden opgeslagen:

      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
      

      Notitie

      www-data is de gebruiker van Apache op systemen die zijn gebaseerd op Debian en we dienen er voor te zorgen dat Apache toegang heeft tot deze locaties of bestanden. De opdrachten chown www-data... wijzigen de eigenaar van de respectievelijke mappen en bestanden naar www-data.

  3. We kunnen nu de virtuele host inschakelen en de mod fcgid, als dat nog niet gedaan is:

    a2enmod fcgid
    a2ensite qgis.demo
    
  4. Herstart Apache nu opnieuw om er voor te zorgen dat de nieuwe configuratie daadwerkelijk wordt doorgevoerd:

    systemctl restart apache2
    
  5. Nu Apache weet dat het antwoordverzoeken naar http://qgis.demo zou moeten beantwoorden, dienen we ook het cliëntsysteem in te stellen zodat het weet wie qgis.demo is. We doen dat door 127.0.0.1 qgis.demo toe te voegen aan het bestand hosts.

    # Replace 127.0.0.1 with the IP of your server.
    sh -c "echo '127.0.0.1 qgis.demo' >> /etc/hosts"
    

Belangrijk

Onthoud dat de beide bestanden qgis.demo.conf en /etc/hosts zouden moeten worden geconfigureerd om uw instellingen te laten werken. U kunt ook de toegang tot uw QGIS Server testen vanaf andere cliënten op het netwerk (bijv. machines van Windows of macOS) door te gaan naar hun bestand /etc/hosts en te verwijzen naar de naam qgis.demo naar het IP dat de servermachine op het netwerk heeft (niet 127.0.0.1 is omdat dat het lokale IP is, dat alleen toegankelijk is vanaf de lokale machine). Op *nix-machines is het bestand hosts geplaatst in /etc, terwijl het op Windows staat in de map C:\Windows\System32\drivers\etc. Onder Windows dient u uw tekstbewerker te starten met rechten als administrator voordat u het bestand hosts opent.

QGIS Server is nu beschikbaar op http://qgis.demo. Typ, om het te controleren, in een browser, zoals in het eenvoudigste geval:

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

2.1.2. NGINX HTTP Server

Notitie

In het vervolg, vervang qgis.demo door de naam of het IP-adres van uw server.

U kunt QGIS Server ook gebruiken met NGINX. Anders dan bij Apache voert NGINX niet automatisch FastCGI-processen uit. De processen van FastCGI moeten door iets anders worden gestart.

NGINX installeren:

apt install nginx
  • Als eerste optie kunt u spawn-fcgi of fcgiwrap gebruiken om de processen van de QGIS Server te starten en te beheren. Officiële pakketten van Debian bestaan voor beide. Wanneer u geen X server heeft om uit te voeren en u moet, bijvoorbeeld, afdrukken, kunt u xvfb gebruiken.

  • Een andere optie is om te vertrouwen op Systemd, het init-systeem voor GNU/Linux dat de meeste distributies van vandaag de dag gebruiken. Een van de voordelen van deze methode is dat het geen andere componenten of processen vereist. Het is bedoeld als eenvoudig, maar toch robuust en efficiënt voor uitrol voor productie.

Configuratie van NGINX

De include fastcgi_params;, gebruikt in de eerdere configuratie, is belangrijk omdat het de parameters toevoegt vanuit /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;

Meer nog, u kunt enkele Omgevingsvariabelen gebruiken om QGIS Server te configureren. In het NGINX configuratiebestand NGINX, /etc/nginx/nginx.conf, moet u de instructie fastcgi_param gebruiken om deze variabelen te definiëren, zoals hieronder weergegeven:

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 wrappers

Waarschuwing

fcgiwrap is gemakkelijker in te stellen dan spawn-fcgi, omdat het al in een Systemd-service is gewikkeld. Maar het leidt ook tot een oplossing die veel trager is dan het gebruik van spawn-fcgi. Met fcgiwrap wordt voor elk verzoek een nieuw proces voor QGIS Server gemaakt, wat betekent dat het proces voor het initialiseren van de QGIS Server, wat tevens behelst het lezen en parsen van het projectbestand van QGIS, voor elk verzoek wordt uitgevoerd. Met spawn-fcgi blijft het proces voor QGIS Server levend tussen verzoeken, wat resulteert in veel betere uitvoering. Om die reden wordt spawn-fcgi aanbevolen voor productiegebruik.

spawn-fcgi

Als u wilt gebruiken spawn-fcgi:

  1. De eerste stap is om het pakket te installeren:

    apt install spawn-fcgi
    
  2. Plaats vervolgens het volgende blok in uw configuratie voor uw NGINX-server:

    location /qgisserver {
        gzip           off;
        include        fastcgi_params;
        fastcgi_pass   unix:/var/run/qgisserver.socket;
    }
    
  3. En herstart NGINX om de nieuwe configuratie door te voeren:

    systemctl restart nginx
    
  4. Tenslotte, omdat er geen standaard servicebestand is voor spawn-fcgi, dient u QGIS Server handmatig te starten in uw 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 nu beschikbaar op http://qgis.demo/qgisserver.

Notitie

Bij het gebruiken van spawn-fcgi zou u direct omgevingsvariabelen kunnen configureren, vóór het uitvoeren van de server. Bijvoorbeeld: export QGIS_SERVER_LOG_STDERR=1

Natuurlijk kunt u een script init toevoegen om QGIS Server te starten bij het opstarten of wanneer u maar wilt. Bijvoorbeeld met systemd:

  1. Bewerk het bestand /etc/systemd/system/qgis-server.service met deze inhoud:

    [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
    
  2. Schakel dan de service in en start die:

    systemctl enable --now qgis-server
    

Waarschuwing

Met de bovenstaande opdrachten voert spawn-fcgi slechts één proces voor QGIS Server uit.

fcgiwrap

Gebruiken van fcgiwrap is veel gemakkelijker in te stellen dan spawn-fcgi, maar het is veel trager.

  1. U dient eerst het corresponderende pakket te installeren:

    apt install fcgiwrap
    
  2. Plaats vervolgens het volgende blok in uw configuratie voor uw NGINX-server:

    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 }
    
  3. Start tenslotte NGINX opnieuw op en fcgiwrap om de nieuwe configuratie door te voeren:

    systemctl restart nginx
    systemctl restart fcgiwrap
    

QGIS Server is nu beschikbaar op http://qgis.demo/qgisserver.

Systemd

QGIS Server heeft een werkende X Server nodig om volledig bruikbaar te zijn, in het bijzonder voor afdrukken. In het geval u al een werkende X Server heeft, kunt services van systemd gebruiken.

Deze methode om QGIS Server uit te rollen, vertrouwt op twee eenheden Systemd om te configureren: een eenheid Socket en een eenheid Service.

  1. De QGIS Server Socket unit definieert en maakt een socket voor het bestandssysteem, gebruikt door NGINX om QGIS Server te starten en om er mee te communiceren. De Socket unit moet worden geconfigureerd met Accept=false, wat betekent dat de aanroepen naar de systeemaanroep accept() worden gedelegeerd naar het door de Service unit gemaakte proces. Het is geplaatst in /etc/systemd/system/qgis-server@.socket, wat in feite een sjabloon is:

    [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
    
  2. Nu de sockets inschakelen en starten:

    for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.socket; done
    
  3. De QGIS Server Service unit definieert en start het QGIS Server-proces. Het belangrijkste deel is dat de standaardinvoer voor het Service proces is verbonden met de socket die is gedefinieerd door de Socket unit. Dit moet worden geconfigureerd met StandardInput=socket in de configuratie van de Service unit, geplaatst in /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
    

    Notitie

    De omgevingsariabelen voor QGIS Server worden gedefinieerd in een afzonderlijk bestand, /etc/qgis-server/env. Het zou er zo uit kunnen zien:

    QGIS_PROJECT_FILE=/etc/qgis/myproject.qgs
    QGIS_SERVER_LOG_STDERR=1
    QGIS_SERVER_LOG_LEVEL=3
    
  4. Nu de socket service starten:

    for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.service; done
    
  5. Tenslotte, voor de NGINX HTTP-server, introduceren we de configuratie voor deze setup:

    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;
       }
    }
    
  6. Herstart NGINX nu opnieuw om er voor te zorgen dat de nieuwe configuratie daadwerkelijk wordt doorgevoerd:

    systemctl restart nginx
    

Met dank aan Oslandia voor het delen van hun handleiding.

2.1.3. Xvfb

QGIS Server heeft een werkende X Server nodig om volledig bruikbaar te zijn, in het bijzonder voor afdrukken. Voor servers wordt gewoonlijk aanbevolen het niet te installeren, dus u zou xvfb kunnen gebruiken om een virtuele X-omgeving te maken.

Wanneer u de Server uitvoert in een grafische/X11-omgeving dan is er geen reden om xvfb te installeren. Meer informatie op https://www.itopen.it/qgis-server-setup-notes/.

  1. Het pakket installeren:

    apt install xvfb
    
  2. Maak het servicebestand, /etc/systemd/system/xvfb.service, met deze inhoud:

    [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
    
  3. Inschakelen, starten en de status controleren van de xvfb.service:

    systemctl enable --now xvfb.service
    systemctl status xvfb.service
    
  4. Dan, overeenkomstig uw HTTP-server, zou u de parameter DISPLAY moeten configureren of direct xvfb-run moeten gebruiken.

    • Met Apache

      1. Voeg uw configuratie Fcgid toe (bekijk Apache HTTP Server):

        FcgidInitialEnv DISPLAY       ":99"
        
      2. Herstart Apache opnieuw om er voor te zorgen dat de nieuwe configuratie daadwerkelijk wordt doorgevoerd:

        systemctl restart apache2
        
    • Met NGINX

      • Met spawn-fcgi xvfb-run gebruiken:

        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
        
      • Met de omgevingsvariabele DISPLAY in de configuratie van de HTTP-server.

        fastcgi_param  DISPLAY       ":99";
        

2.2. Installeren onder Windows

QGIS Server kan ook worden geïnstalleerd op systemen van Windows die de 64 bit-versie van het OSGeo4W netwerk installatieprogramma gebruiken (https://qgis.org/en/site/forusers/download.html).

Een eenvoudige procedure is de volgende:

  1. Downloaden en uitvoeren van het installatieprogramma van OSGeo4W

  2. Volg de “Advanced Install” en installeer de pakketten QGIS Desktop, QGIS Server apache en mod_fcgid.

    ../../_images/qgis_server_windows2.png
  3. Apache wordt niet direct geïnstalleerd als een service op Windows. U moet:

    1. Met rechts klikken op het bestand OSGeo4W.bat in de bron van de map C:\OSGeo4W64\ (als de standaard paden zijn gebruikt voor de installatie) en Als administrator uitvoeren selecteren

    2. In de console, voer uit apache-install.bat, wat als uitvoer zal geven

      > 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.
      ...
      

      De service is gestart, zoals u kunt zien in het rapport. Maar de server zou niet kunnen functioneren door ontbrekende aangepaste configuratie.

  4. Bewerk het bestand C:\OSGeo4w64\apps\apache\conf\httpd.conf met de volgende wijzigingen (verscheidene andere combinaties zijn mogelijk):

    Doel

    Bestaande configuratie

    Vervanging

    (Optioneel) Pas het adres om te luisteren naar een IP en/of poort aan, U mag net zoveel items opgeven als u wilt.

    Listen ${SRVPORT}
    
    Listen localhost:8080
    

    Geef aan waar de scriptbestanden te vinden zijn

    ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
    
    ScriptAlias /cgi-bin/ "C:/OSGeo4W64/apps/qgis/bin/"
    

    Verschaf rechten voor de map met 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>
    

    Schakel bestandsextensies in om te gebruiken voor scriptbestanden. Verwijder opmerkingen en completeer

    #AddHandler cgi-script .cgi
    
    AddHandler cgi-script .cgi .exe
    

    Toevoegen van meer variabelen voor OSGeo4W aangepaste configuratie

    # 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"
    
  5. De Apache webserver opnieuw opstarten

    > apache-restart.bat
    
  6. Open een browservenster om een verzoek GetCapabilities naar QGIS Server te testen. Vervang localhost:8080 door het IP en de poort die u heeft ingesteld om te luisteren.

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

    Een XML-bestand met de capabilities zou teruggegeven moeten worden. Uw server is klaar om te gebruiken.

2.3. Een project op de server gebruiken

Nu QGIS Server is geïnstalleerd en werkt, hoeven we het aleen nog maar te gebruiken.

Uiteraard hebben we een project van QGIS nodig om mee te werken. Natuurlijk kunt u uw project volledig aanpassen door contactinformatie te definiëren, enkele beperkingen voor CRS bepalen of zelfs enkele lagen uitsluiten. Alles wat u daarover dient te weten wordt later beschreven in Uw project configureren.

Maar voor nu gaan we een eenvoudig project gebruiken dat al is geconfigureerd en eerder werd gedownload in /home/qgis/projects/world.qgs, zoals boven beschreven.

Bij het openen van het project en door snel even te kijken naar de lagen, weten we dat momenteel 4 lagen beschikbaar zijn:

  • airports

  • places

  • countries

  • countries_shapeburst

U hoeft nu niet het volledige verzoek te begrijpen. maar u zou een kaart met enkele van de eerdere lagen op kunnen halen dankzij QGIS Server door iets zoals dit te doen in uw webbrowser om de laag countries op te halen:

  • Als u bovenstaande instructies volgde om een Apache HTTP Server te installeren:

    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
    
  • Als u bovenstaande instructies volgde om een NGINX HTTP Server te installeren:

    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
    

Als u de volgende afbeelding ziet dan wordt QGIS Server correct uitgevoerd:

../../_images/server_basic_getmap.png

Fig. 2.1 Antwoord van Server na een eenvoudig verzoek GetMap

Onthoud dat u de omgevingsvariabele QGIS_PROJECT_FILE kunt definiëren om een standaardproject te gebruiken in plaats van een parameter MAP op te geven (bekijk Omgevingsvariabelen).

Bijvoorbeeld met 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. Uw project configureren

U moet, om een nieuw QGIS Server WMS, WFS, OAPIF of WCS te verschaffen, een projectbestand voor QGIS maken met enkele gegevens of een van uw huidige projecten gebruiken. Definieer de kleuren en stijlen voor de lagen in QGIS en het project-CRS, als dat nog niet is gedefinieerd. Ga dan naar het menu QGIS Server van het dialoogvenster Project ► Eigenschappen… en geef wat informatie over het OWS op de tab Service mogelijkheden.

../../_images/ows_server_definition.png

Fig. 2.2 Definities voor een project QGIS Server WMS/WFS/WCS

U moet eerst Service-mogelijkheden inschakelen, als dat nog niet geselecteerd is. Dit zal verschijnen in het antwoord GetCapabilities van de WMS, WFS of WCS. Als u checkbox Service-mogelijkheden inschakelen niet selecteert zal QGIS Server de informatie gebruiken die is opgegeven in het bestand wms_metadata.xml dat is opgeslagen in de map cgi-bin.

2.4.1. WMS-mogelijkheden

U kunt, op de tab WMS , het te vermelden bereik definiëren dat in het antwoord van WMS GetCapabilities verschijnt, door de minimum en maximum waarden voor X en Y in te voeren in de velden onder Advertentiebereik.

../../_images/ows_server_wms.png

Fig. 2.3 Definities op de tab WMS

Klikken op Huidige bereik van kaartvenster gebruiken stelt deze waarden in op het bereik dat momenteel wordt weergegeven in het kaartvenster van QGIS. Door checkbox CRS-beperkingen te selecteren kunt u beperken in welke coördinaten referentiesystemen (CRS) QGIS Server zal aanbieden de kaarten te renderen. Aanbevolen wordt om u te beperken tot het aangeboden CRS omdat dat de grootte van het antwoord van WMS GetCapabilities reduceert. Gebruik de knop symbologyAdd onderin om het CRS te selecteren uit de selectie voor Coördinaten ReferentieSysteem, of klik op Huidige gebruikte om het in het project van QGIS gebruikte CRS aan de lijst toe te voegen.

Als u afdruklay-outs hebt gedefinieerd in uw project, zullen zij worden vermeld in het antwoord GetProjectSettings en zij kunnen worden gebruikt in het verzoek GetPrint om afdrukken te maken, met een van de afdruklay-outs als een sjabloon. Dit is een QGIS-specifieke uitbreiding aan de specificatie voor WMS 1.3.0. Indien u niet wilt dat een afdruklay-out wordt gepubliceerd door de WMS, selecteer dan checkbox Exclusief lay-outs en klik op de knop symbologyAdd onderin. Selecteer dan een afdruklay-out vanuit het dialoogvenster Lay-out selecteren om die toe te voegen aan de lijst met uitgesloten lay-outs.

Indien u niet wilt dat een laag of groep lagen wordt gepubliceerd door de WMS, selecteer dan checkbox Kaartlagen uitsluiten en klik op de knop symbologyAdd onderin. Dit opent het dialoogvenster Selecteer lagen en groepen met restricties dat u in staat stelt de lagen en groepen te kiezen die u niet wilt publiceren. Gebruik de toetsen Shift of Ctrl als u meerdere items in één keer wilt selecteren. Aanbevolen wordt dat u het publiceren van lagen die u niet gebruikt uitsluit omdat dat de grootte van het antwoord WMS GetCapabilities reduceert, wat leidt tot snellere laadtijden aan de zijde van de cliënt.

Wanneer u checkbox Laag-ID’s als naam gebruiken selecteert, zullen de laag-ID’s worden gebruikt om te verwijzen naar lagen in het antwoord GetCapabilities of de parameter GetMap LAYERS. Indien niet worden de laagnaam of korte naam, indien gedefinieerd (zie QGIS Server), gebruikt.

U kunt de door u verzochte GetFeatureInfo als platte tekst, XML en GML ontvangen. XML is standaard.

Als u wilt, kunt u checkbox Geometrie aan antwoord van objecten toevoegen selecteren. Dit zal het begrenzingsvak voor elk object in het antwoord GetFeatureInfo opnemen. Bekijk ook de parameter WITH_GEOMETRY.

Omdat veel webcliënten geen cirkelvormige bogen in geometrieën kunnen weergeven heeft u de optie om de geometrie op te delen in segmenten vóórdat het naar de cliënt wordt verzonden in een antwoord GetFeatureInfo. Dit maakt het voor dergelijke cliënten mogelijk om nog steeds de geometrie van een object weer te geven (bijv. voor het accentueren van het object). U dient checkbox Informatie over segmenten van het object geometrie te selecteren om de optie te activeren.

U kunt ook de optie GetFeatureInfo precisie voor geometrie (decimale plaatsen) gebruiken om de precisie in te stellen voor de geometrie voor GetFeatureInfo. Dit stelt u in staat bandbreedte te besparen indien u niet de volledige precisie nodig hebt.

Als u wilt dat QGIS Server specifieke URL’s voor verzoeken vermeldt in het antwoord van WMS GetCapabilities, voer dan de overeenkomende URL in in het veld Gegeven URL.

Verder kunt u de maximale grootte van de door het verzoek GetMap teruggegeven kaarten beperken door de maximale breedte en hoogte in te voeren in de respectievelijke velden onder Maxima voor GetMap-verzoek.

U kunt de factor Kwaliteit voor afbeeldingen JPEG wijzigen. De factor voor kwaliteit moet in het bereik van 0 tot en met 100 liggen. Specificeer 0 voor maximale compressie, 100 voor geen compressie.

U kunt de limiet voor af te drukken objecten van atlas in een verzoek wijzigen door het veld Maximum aantal objecten voor afdrukverzoeken van atlas in te stellen.

Wanneer QGIS Server wordt gebruikt in getegelde modus (bekijk parameter TILED), kunt u de Tegelbuffer in pixels instellen. De aanbevolen waarde is de grootte van het grootste symbool of lijnbreedte in uw project van QGIS.

Als één van uw lagen de weergave Kaarttip weergeven gebruikt (d.i. om tekst met behulp van expressies weer te geven), zal dit worden vermeld binnen de uitvoer van GetFeatureInfo. Als de laag een Value Map gebruikt voor één van zijn attributen, wordt die informatie ook weergegeven in de uitvoer van GetFeatureInfo.

2.4.2. WMTS-mogelijkheden

Op de tab WMTS kunt u de lagen selecteren die u wilt publiceren als WMTS en specificeren of u als PNG of JPEG wilt publiceren.

../../_images/ows_server_wmts.png

Fig. 2.4 Definities op de tab WMTS

Als u een URL invoert in het veld Gegeven URL van het gedeelte WMTS, zal QGIS Server deze specifieke URL opnemen in het antwoord van WMTS GetCapabilities.

2.4.3. WFS/OAPIF-mogelijkheden

Op de tab WFS/OAPIF kunt u de lagen selecteren die u wilt publiceren als WFS of OAPIF en specificeren of zij bewerkingen voor updaten, invoegen en verwijderen toestaan.

../../_images/ows_server_wfs.png

Fig. 2.5 Definities op de tab WFS/OAPIF

Als u een URL invoert in het veld Gegeven URL van het gedeelte WFS, zal QGIS Server deze specifieke URL opnemen in het antwoord van WFS GetCapabilities.

2.4.4. WCS-mogelijkheden

Op de tab WCS kunt u de lagen selecteren die u wilt publiceren als WCS.

../../_images/ows_server_wcs.png

Fig. 2.6 Definities op de tab WCS

Als u een URL invoert in het veld Gegeven URL van het gedeelte WCS, zal QGIS Server deze specifieke URL opnemen in het antwoord van WCS GetCapabilities.

2.4.5. Fijn afstemmen van uw OWS

Voor vectorlagen geeft het menu Velden van het dialoogvenster Lagen ► Laageigenschappen u in staat voor elk attribuut te definiëren of het moet worden gepubliceerd of niet. Standaard worden alle attributen gepubliceerd door uw WMS en WFS. Als u niet wilt dat een specifiek attribuut wordt gepubliceerd, deselecteer het overeenkomende keuzevak in de kolom WMS of WFS.

U kunt watermerken over uw door WMS geproduceerde kaarten leggen door tekst-annotaties of SVG-annotaties toe te voegen aan het projectbestand. Bekijk het gedeelte Gereedschappen voor annotatie voor instructies over het maken van annotaties. Het keuzevak Vaste positie op kaart in het dialoogvenster Annotatie tekst moet worden gedeselecteerd om annotaties als watermerken te laten weergeven op de uitvoer van WMS. Toegang hiertoe kan worden verkregen door te dubbelklikken op een annotatie als een van de gereedschappen voor annotaties actief is. Voor SVG-annotaties dient u ofwel het project in te stellen om absolute paden op te slaan (in het menu Algemeen van het dialoogvenster Project ► Eigenschappen…) of door het pad voor de SVG-afbeelding handmatig zo aan te passen dat het een geldig relatief pad weergeeft.

2.5. Integratie met derde partijen

QGIS Server verschaft standaard OGC webservices, zoals WMS, WFS, etc. , dus het kan door een breed scala aan gebruikersgereedschappen worden gebruikt.

2.5.1. Integratie met QGIS Desktop

QGIS Desktop is de kaartontwerper waar QGIS Server de kaartverdeler is. De kaarten of projecten van QGIS zullen door QGIS Server worden verdeeld om standaarden voor OGC te verschaffen. Deze projecten van QGIS kunnen ofwel bestanden zijn of items in een database (door Project ► Opslaan naar ► PostgreSQL te gebruiken in QGIS Desktop).

Verder moet een specifieke werkstroom voor bijwerken worden ingesteld om een project dat wordt gebruikt door een QGIS Server te vernieuwen (d.i. projectbestanden kopiëren naar de locatie van de server en QGIS Server opnieuw starten). Voor nu zijn geautomatiseerde processen (zoals herladen van de server over de service message queue) nog niet geïmplementeerd.

2.5.2. Integratie met MapProxy

MapProxy is een tegel-cacheserver en omdat het elke WMS/WMTS-kaartserver kan lezen en verdelen, kan het direct worden verbonden met QGIS Server webservices en de ervaring voor de eindgebruiker verbeteren.

2.5.3. Integratie met QWC2

QWC2 is een antwoordend webprogramma, dat specifiek is toegewezen aan QGIS Server. Het helpt u om een enorm aangepaste kaartviewer te bouwen met selecteren van lagen, objectinfo, etc.. Ook veel plug-ins zijn beschikbaar, zoals authenticatie of afdrukservice, de volledige lijst is beschikbaar in deze opslagplaats.