Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
2. Komma igång
2.1. Installation på Debian-baserade system
Vi kommer att ge en kort och enkel installationsanvisning för en minimal fungerande konfiguration på Debian-baserade system (inklusive Ubuntu och derivat). Det finns dock många andra distributioner och operativsystem som tillhandahåller paket för QGIS Server.
Observera
I Ubuntu kan du använda din vanliga användare och lägga till sudo
till kommandon som kräver administratörsbehörighet. I Debian kan du arbeta som administratör (root
) utan att använda `sudo
.
Krav och steg för att lägga till officiella QGIS-arkiv för att installera QGIS Server på ett Debian-baserat system finns på QGIS installers page. Du kanske vill installera åtminstone den senaste Long Term Release.
När målversionsförvaret har konfigurerats och QGIS Server har installerats kan du testa installationen med:
/usr/lib/cgi-bin/qgis_mapserv.fcgi
Om du får följande utdata är servern korrekt installerad.
Observera
Beroende på vilken version av QGIS du har kan du få se lite olika utdata när du kör 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>
Observera
Som visas nedan rapporterar QGIS en Status 400-kod, som korrekt identifierar att begäran har misslyckats eftersom det inte finns någon aktiv http-session. Detta är inte en bugg och indikerar att servern fungerar som den ska.
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.40.0-Bratislava
Status: 400
[{"code":"Bad request error","description":"Requested URI does not match any registered API handler"}]
Låt oss lägga till ett exempelprojekt. Du kan använda ditt eget eller ett från Training demo data:
mkdir /home/qgis/projects/
cd /home/qgis/projects/
wget https://github.com/qgis/QGIS-Training-Data/archive/release_3.40.zip
unzip release_3.40.zip
mv QGIS-Training-Data-release_3.40/exercise_data/qgis-server-tutorial-data/world.qgs .
mv QGIS-Training-Data-release_3.40/exercise_data/qgis-server-tutorial-data/naturalearth.sqlite .
Naturligtvis kan du använda din favorit GIS-programvara för att öppna den här filen och titta på konfigurationen och tillgängliga lager.
För att kunna driftsätta QGIS-servern på rätt sätt behöver du en HTTP-server. Rekommenderade val är Apache eller NGINX.
2.1.1. Apache HTTP-server
Observera
I det följande ska du ersätta qgis.demo
med namnet på eller IP-adressen till din server.
Installera Apache och mod_fcgid:
apt install apache2 libapache2-mod-fcgid
Du kan köra QGIS Server på din standardwebbplats, men låt oss konfigurera ett virtualhost specifikt för detta, enligt följande.
I katalogen
/etc/apache2/sites-available
skapar du en fil med namnetqgis.demo.conf
med följande innehåll:<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>
Observera
Några av ovanstående konfigurationsalternativ förklaras i avsnitten Server environment variables och pg_service file.
Låt oss nu skapa de kataloger som ska lagra QGIS Server-loggar och autentiseringsdatabasen:
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
Observera
www-data
är Apache-användaren på Debian-baserade system och vi behöver Apache för att få tillgång till dessa platser eller filer. Kommandonachown www-data...
ändrar ägaren till respektive kataloger och filer tillwww-data
.
Vi kan nu aktivera den virtuella värden och
fcgid
mod om det inte redan är gjort:a2enmod fcgid a2enmod rewrite a2ensite qgis.demo
Starta nu om Apache så att den nya konfigurationen tas i beaktande:
systemctl restart apache2
Nu när Apache vet att han ska svara på förfrågningar till http://qgis.demo måste vi också konfigurera klientsystemet så att det vet vem
qgis.demo
är. Det gör vi genom att lägga till127.0.0.1 qgis.demo
i filen hosts.# Replace 127.0.0.1 with the IP of your server. sh -c "echo '127.0.0.1 qgis.demo' >> /etc/hosts"
Viktigt
Kom ihåg att både filerna qgis.demo.conf
och /etc/hosts
måste vara konfigurerade för att din installation ska fungera. Du kan också testa åtkomsten till din QGIS-server från andra klienter i nätverket (t.ex. Windows- eller macos-maskiner) genom att gå till deras /etc/hosts
-fil och peka namnet qgis.demo
till den IP som servermaskinen har i nätverket (inte 127.0.0.1
eftersom det är den lokala IP:n, endast tillgänglig från den lokala maskinen). På *nix
-maskiner finns filen hosts
i /etc
, medan den i Windows finns i katalogen C:\Windows\System32drivers\etc`
. Under Windows måste du starta din textredigerare med administratörsbehörighet innan du öppnar hosts-filen.
QGIS Server är nu tillgänglig på http://qgis.demo. För att kontrollera, skriv in i en webbläsare, som i det enkla fallet:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
2.1.2. NGINX HTTP-server
Observera
I det följande ska du ersätta qgis.demo
med namnet på eller IP-adressen till din server.
Du kan också använda QGIS Server med NGINX. Till skillnad från Apache startar NGINX inte automatiskt FastCGI-processer. FastCGI-processerna ska startas av något annat.
Installera NGINX:
apt install nginx
Som ett första alternativ kan du använda spawn-fcgi eller fcgiwrap för att starta och hantera QGIS Server-processerna. Officiella Debian-paket finns för båda. När du inte har någon X-server igång och du till exempel behöver skriva ut, kan du använda xvfb.
Ett annat alternativ är att förlita sig på Systemd, init-systemet för GNU/Linux som de flesta Linux-distributioner använder idag. En av fördelarna med den här metoden är att den inte kräver några andra komponenter eller processer. Den är tänkt att vara enkel, men ändå robust och effektiv för produktionsinstallationer.
NGINX-konfiguration
Den include fastcgi_params; som används i den föregående konfigurationen är viktig, eftersom den lägger till parametrarna från /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;
Dessutom kan du använda vissa Miljövariabler för att konfigurera QGIS Server. I konfigurationsfilen för NGINX, /etc/nginx/nginx.conf
, måste du använda instruktionen fastcgi_param
för att definiera dessa variabler enligt nedan:
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-omslag
Varning
fcgiwrap är enklare att installera än spawn-fcgi, eftersom den redan är inkapslad i en Systemd-tjänst. Men det leder också till en lösning som är mycket långsammare än att använda spawn-fcgi. Med fcgiwrap skapas en ny QGIS Server-process vid varje begäran, vilket innebär att QGIS Server-initialiseringsprocessen, som inkluderar läsning och parsning av QGIS-projektfilen, görs vid varje begäran. Med spawn-fcgi förblir QGIS Server-processen vid liv mellan begäranden, vilket resulterar i mycket bättre prestanda. Av den anledningen rekommenderas spawn-fcgi för produktionsanvändning.
spawn-fcgi
Om du vill använda spawn-fcgi:
Det första steget är att installera paketet:
apt install spawn-fcgi
Inför sedan följande block i din NGINX-serverkonfiguration:
location /qgisserver { gzip off; include fastcgi_params; fastcgi_pass unix:/var/run/qgisserver.socket; }
Och starta om NGINX för att ta hänsyn till den nya konfigurationen:
systemctl restart nginx
Slutligen, med tanke på att det inte finns någon standardtjänstfil för spawn-fcgi, måste du starta QGIS Server manuellt i din terminal:
spawn-fcgi -s /var/run/qgisserver.socket \ -U www-data -G www-data -n \ /usr/lib/cgi-bin/qgis_mapserv.fcgi
QGIS Server finns nu tillgänglig på http://qgis.demo/qgisserver.
Observera
När du använder spawn-fcgi kan du direkt definiera miljövariabler innan du kör servern. Till exempel: export QGIS_SERVER_LOG_STDERR=1
Naturligtvis kan du lägga till ett init-skript för att starta QGIS Server vid start eller när du vill. Till exempel med systemd:
Redigera filen
/etc/systemd/system/qgis-server.service
med detta innehåll:[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
Aktivera sedan tjänsten och starta den:
systemctl enable --now qgis-server
Varning
Med ovanstående kommandon skapar spawn-fcgi endast en QGIS Server-process.
fcgiwrap
Att använda fcgiwrap är mycket enklare att installera än spawn-fcgi men det går mycket långsammare.
Du måste först installera motsvarande paket:
apt install fcgiwrap
Inför sedan följande block i din NGINX-serverkonfiguration:
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 }
Slutligen startar du om NGINX och fcgiwrap för att ta hänsyn till den nya konfigurationen:
systemctl restart nginx systemctl restart fcgiwrap
QGIS Server finns nu tillgänglig på http://qgis.demo/qgisserver.
Systemd
QGIS Server behöver en fungerande X Server för att kunna användas fullt ut, särskilt för utskrifter. Om du redan har en X-server som körs kan du använda systemd-tjänster.
Den här metoden för att distribuera QGIS Server är beroende av två Systemd-enheter som ska konfigureras: en Socket-enhet och en Service-enhet.
Enheten QGIS Server Socket definierar och skapar en filsystemssocket som används av NGINX för att starta och kommunicera med QGIS Server. Socket-enheten måste konfigureras med
Accept=false
, vilket innebär att anropen till systemanropetaccept()
delegeras till den process som skapas av Service-enheten. Den finns i/etc/systemd/system/qgis-server@.socket
, som faktiskt är en mall:[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
Aktivera och starta nu socklar:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.socket; done
Enheten QGIS Server Service definierar och startar QGIS Server-processen. Det viktiga är att serviceprocessens standardinmatning är ansluten till det uttag som definieras av Socket-enheten. Detta måste konfigureras med hjälp av
StandardInput=socket
i konfigurationen för serviceenheten som finns i/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
Observera
QGIS-serverns miljövariabler definieras i en separat fil,
/etc/qgis-server/env
. Den kan se ut så här:QGIS_PROJECT_FILE=/etc/qgis/myproject.qgs QGIS_SERVER_LOG_STDERR=1 QGIS_SERVER_LOG_LEVEL=3
Starta nu socket-tjänsten:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.service; done
Slutligen, för NGINX HTTP-servern, låt oss introducera konfigurationen för den här installationen:
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; } }
Starta nu om NGINX för att den nya konfigurationen ska tas med i beräkningen:
systemctl restart nginx
Tack till Oslandia för att de delade med sig av sin handledning <https://oslandia.com/en/2018/11/23/deploying-qgis-server-with-systemd/>`_.
2.1.3. Xvfb
QGIS Server behöver en fungerande X-server för att kunna användas fullt ut, i synnerhet för utskrifter. På servrar rekommenderas det vanligtvis att inte installera det, så du kan använda xvfb
för att ha en virtuell X-miljö.
Om du kör servern i en grafisk/X11-miljö behöver du inte installera xvfb. Mer information finns på https://www.itopen.it/qgis-server-setup-notes/.
För att installera paketet:
apt install xvfb
Skapa servicefilen,
/etc/systemd/system/xvfb.service
, med detta innehåll:[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
Aktivera, starta och kontrollera statusen för
xvfb.service
:systemctl enable --now xvfb.service systemctl status xvfb.service
Sedan ska du, beroende på din HTTP-server, konfigurera parametern DISPLAY eller direkt använda xvfb-run.
Använda Apache:
Lägg till i din Fcgid-konfiguration (se Apache HTTP-server):
FcgidInitialEnv DISPLAY ":99"
Starta om Apache för att den nya konfigurationen ska tas i beaktande:
systemctl restart apache2
Använda NGINX
Med spawn-fcgi med hjälp av
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
Med miljövariabeln DISPLAY i HTTP-serverns konfiguration.
fastcgi_param DISPLAY ":99";
2.2. Installation i Windows
QGIS Server kan också installeras på Windows-system med hjälp av nätverksinstallatören OSGeo4W (https://qgis.org/resources/installation-guide/#windows).
Ett enkelt förfarande är följande:
Ladda ner och kör installationsprogrammet för OSGeo4W
Följ ”Advanced Install” och installera paketen QGIS Desktop, QGIS Server apache och mod_fcgid.
Apache installeras inte direkt som en tjänst i Windows. Du måste göra det:
Högerklicka på filen
OSGeo4W.bat
i roten av mappenC:\OSGeo4W\
(om standardinstallationssökvägarna har använts) och välj Kör som administratörKör
apache-install.bat
i konsolen, vilket ger följande resultat> 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. ...
Tjänsten startas som du kan se i rapporten. Men servern kan misslyckas med att köras på grund av att anpassad konfiguration saknas.
Redigera filen
C:\OSGeo4w\apps\apache\conf\httpd.conf
med följande ändringar (flera andra kombinationer är möjliga):Syfte
Befintlig konfiguration
Ersättning
(Valfritt) Anpassa adressen att lyssna på med hjälp av en IP och/eller port, Du kan och lägga till så många poster som du vill.
Listen ${SRVPORT}
Listen localhost:8080
Ange var du hittar skriptfilerna
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "C:/OSGeo4W/apps/qgis/bin/"
Tillhandahålla behörigheter för skriptmappen
<Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
<Directory "C:/OSGeo4W/apps/qgis/bin"> SetHandler cgi-script AllowOverride None Options ExecCGI Require all granted </Directory>
Aktivera filtillägg som ska användas för skriptfiler. Avkommentera och fyll i
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .exe
Lägg till fler anpassade konfigurationsvariabler för OSGeo4W
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W/httpd.d/httpd_*.conf"
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W/httpd.d/httpd_*.conf" SetEnv GDAL_DATA "C:/OSGeo4W/share/gdal" SetEnv QGIS_AUTH_DB_DIR_PATH "C:/OSGeo4W/apps/qgis/resources"
Starta om Apache-webbservern
> apache-restart.bat
Öppna webbläsarfönstret för att testa en GetCapabilities-begäran till QGIS Server. Ersätt
localhost:8080
med den IP och port som du har ställt in för att lyssna.http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
En
XML
-fil med funktionerna bör returneras. Din server är klar att användas.
2.3. Servera ett projekt
Nu när QGIS Server är installerat och igång är det bara att använda det.
Självklart behöver vi ett QGIS-projekt att arbeta med. Naturligtvis kan du anpassa ditt projekt helt och hållet genom att definiera kontaktinformation, ange vissa begränsningar för CRS eller till och med utesluta vissa lager. Allt du behöver veta om detta beskrivs senare i Konfigurera ditt projekt.
Men nu ska vi använda ett enkelt projekt som redan är konfigurerat och tidigare nedladdat i /home/qgis/projects/world.qgs
, enligt beskrivningen ovan.
Genom att öppna projektet och ta en snabb titt på lager vet vi att 4 lager för närvarande är tillgängliga:
airports
places
countries
countries_shapeburst
Du behöver inte förstå hela begäran för tillfället, men du kan hämta en karta med några av de tidigare skikten tack vare QGIS Server genom att göra något liknande i din webbläsare för att hämta countries-skiktet:
Om du följde instruktionerna ovan för att installera en Apache HTTP Server:
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
Om du följde instruktionerna ovan för att installera en NGINX HTTP Server:
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
Om du får fram nästa bild körs QGIS Server korrekt:

Fig. 2.2 Serverns svar på en grundläggande GetMap-begäran
Observera att du kan definiera miljövariabeln QGIS_PROJECT_FILE för att använda ett projekt som standard istället för att ange en MAP-parameter (se Miljövariabler).
Till exempel med 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. Konfigurera ditt projekt
För att tillhandahålla en ny QGIS Server WMS, WFS, OAPIF eller WCS måste du skapa en QGIS-projektfil med vissa data eller använda ett av dina nuvarande projekt. Definiera färger och stilar för lagren i QGIS och projektets CRS, om det inte redan är definierat. Gå sedan till menyn QGIS Server i dialogrutan och ange lite information om OWS på fliken Service Capabilities.

Fig. 2.3 Definitioner för ett QGIS Server WMS/WFS/WCS-projekt
Du måste Enable Service Capabilities först, om den är avaktiverad. Detta kommer att visas i GetCapabilities-svaret från WMS, WFS eller WCS. Om du inte markerar kryssrutan Enable Service capabilities kommer QGIS Server att använda informationen i filen wms_metadata.xml
som finns i mappen cgi-bin
.
2.4.1. WMS-funktioner

Fig. 2.4 Definitioner i fliken WMS
På fliken WMS kan du definiera alternativen för WMS-funktionerna.
Markera Advertiserad utsträckning för att definiera den utsträckning som annonseras i WMS GetCapabilities-svaret. Widgeten :ref:
spatial extent selector <extent_selector>` hjälper dig att ange omfattningen som en ``xmin, xmax, ymin, ymax
text eller plocka den från kartans canvas, lager, bokmärken…
Genom att markera
CRS restrictions kan du begränsa i vilka koordinatreferenssystem (CRS) QGIS Server kommer att erbjuda för att rendera kartor. Det rekommenderas att du begränsar de erbjudna CRS eftersom detta minskar storleken på WMS GetCapabilities-svaret. Använd knappen
nedan för att välja dessa CRS från väljaren för koordinatreferenssystem, eller klicka på Used för att lägga till de CRS som används i QGIS-projektet i listan.
Om du har utskriftslayouter definierade i ditt projekt kommer de att listas i svaret
GetProjectSettings
och de kan användas av GetPrint-begäran för att skapa utskrifter med en av utskriftslayouterna som mall. Detta är ett QGIS-specifikt tillägg till WMS 1.3.0-specifikationen. Om du vill utesluta en utskriftslayout från att publiceras av WMS, markera:guilabel:
Exclude layouts
och klicka på knappennedan. Välj sedan en utskriftslayout från dialogrutan Välj utskriftslayout för att lägga till den i listan över uteslutna layouter.
Om du vill utesluta ett lager eller en lagergrupp från att publiceras av WMS, markera kryssrutan Exclude Layers och klicka på knappen
nedan. Detta öppnar dialogrutan Select restricted layers and groups, där du kan välja de lager och grupper som du inte vill ska publiceras. Använd Shift eller Ctrl om du vill välja flera poster. Det rekommenderas att du utesluter de lager som du inte behöver från publicering eftersom detta minskar storleken på WMS GetCapabilities-svaret vilket leder till snabbare laddningstider på klientsidan.
Lager- och funktionsalternativ
Du kan ta emot begärd GetFeatureInfo som vanlig text, XML och GML. Standard är XML.
Om du markerar
Use layer ids as name, kommer lager-id att användas för att referera till lager i
GetCapabilities
-svaret ellerGetMap LAYERS
-parametern. Om inte, används skiktets namn eller kortnamn om det är definierat (se Egenskaper för QGIS-server).Som standard används lagernamn för att exponera lager via WMS. Om flera lager har samma namn kommer de att slås samman till ett enda WMS-lager och kan inte begäras individuellt. Du måste se till att dessa lager är kompatibla med varandra. Genom att använda alternativet Use layer ids as name säkerställer du att flera lager med samma namn kan begäras som enskilda lager.
Om du vill kan du kryssa i
Lägg till geometri i funktionssvaret. Detta kommer att inkludera avgränsningsrutan för varje funktion i GetFeatureInfo-svaret. Se även parametern WITH_GEOMETRY.
Eftersom många webbklienter inte kan visa cirkelbågar i geometrier har du möjlighet att segmentisera geometrin innan du skickar den till klienten i ett GetFeatureInfo-svar. Detta gör det möjligt för sådana klienter att fortfarande visa en funktions geometri (t.ex. för att markera funktionen). Du måste markera kryssrutan
Segmentize feature info geometry för att aktivera alternativet.
Du kan också använda alternativet GetFeatureInfo geometry precision för att ställa in precisionen för geometrin i GetFeatureInfo. Detta gör att du kan spara bandbredd när du inte behöver full precision.
Om ett av dina skikt använder Map Tip display (dvs. för att visa text med hjälp av uttryck) kommer detta att listas i GetFeatureInfo-utmatningen. Om skiktet använder en Value Map för ett av sina attribut kommer denna information också att visas i GetFeatureInfo-utmatningen.
Om du vill att QGIS Server ska annonsera specifika URL:er för begäran i WMS GetCapabilities-svaret anger du motsvarande URL i fältet Advertised URL.
Optioner för karta och teckenförklaring
När en lagergrupp skickas till
GetLegendGraphic
begäran, läggs alla dess bladlager till i legendbilden (dock utan gruppernas etiketter). Markera alternativetAdd layer groups in GetLegendGraphic om du även vill infoga skiktgruppernas (och undergruppernas) namn i skiktträdet, precis som i QGIS Desktop-legenden.
När QGIS-projektet innehåller lagergrupper listas de i WMS kapacitetsdokument tillsammans med lager. Om en grupp (dess namn som listas i capabilities) inkluderas i WMS GetMap
LAYERS
parameter tillsammans med namn på lager i den gruppen, skulle QGIS duplicera lagren: en gång för gruppen och en gång för det specifika lagret. Om du markerar alternativetSkippa namnattribut för grupper, kommer GetCapabilities endast att returnera titelattribut för gruppen men inte dess namnattribut, vilket gör det omöjligt att inkludera grupper i listan över lager i GetMap-begäran.
Dessutom kan du begränsa den maximala storleken på de kartor som returneras av förfrågningarna genom att ange maximal bredd och höjd i respektive fält under Maximal bildstorlek för GetMap- och GetLegendGraphic-förfrågningar.
Du kan ändra faktorn Kvalitet för JPEG- och WebP-bilder. Kvalitetsfaktorn måste ligga inom intervallet 0 till 100. Ange 0 för maximal komprimering och 100 för ingen komprimering.
Du kan ändra gränsen för hur många atlasfunktioner som ska skrivas ut i en begäran genom att ange fältet Maximum features for Atlas print requests.
När QGIS Server används i tiled-läge (se TILED-parametern) kan du ställa in Tile buffer in pixels. Det rekommenderade värdet är storleken på den största symbolen eller linjebredden i ditt QGIS-projekt.
Beroende på om kartan använder ett projicerat CRS eller ett geografiskt CRS och om det inte finns någon information för att utvärdera symbolerna med kartans enhetsstorlek, kan du ge en referens för storlek genom antingen Förvald skala för teckenförklaring eller Förvald kartans enheter per mm i teckenförklaring.
2.4.2. WMTS kapacitet
På fliken WMTS kan du välja de lager som du vill publicera som WMTS och ange om du vill publicera som PNG eller JPEG.
Under Grids, för varje :ref:restricted CRS <restricted_crs>`, kan du ange om kakelmatriserna ska publiceras och konfigurera deras övre vänstra hörn, minsta och största skalor och den sista nivån i kakelmatriserna. Observera att för CRS ``EPSG:3857
och EPSG:4326
kan endast den sista nivån i kakelmatriserna redigeras.
Du kan också ange en Minsta skala för visning av brickor.
Om du anger en URL i fältet Advertised URL, kommer QGIS Server att annonsera denna specifika URL i WMTS GetCapabilities-svaret.

Fig. 2.5 Definitioner i fliken WMTS
2.4.3. WFS/OAPIF-funktioner
På fliken WFS/OAPIF kan du välja de lager som du vill publicera som WFS eller OAPIF och ange om de ska tillåta uppdatering, infogning och radering.

Fig. 2.6 Definitioner i fliken WFS/OAPIF
Om du anger en URL i fältet Advertised URL, kommer QGIS Server att annonsera denna specifika URL i WFS GetCapabilities-svaret.
2.4.4. WCS kapacitet
På fliken WCS kan du välja de lager som du vill publicera som WCS.

Fig. 2.7 Definitioner i fliken WCS
Om du anger en URL i fältet Advertised URL i avsnittet WCS capabilities, kommer QGIS Server att annonsera denna specifika URL i WCS GetCapabilities-svaret.
2.4.5. Finjustera din OWS
För vektorlager kan du på fliken Fields i dialogrutan för varje attribut definiera om det ska publiceras eller inte. Som standard publiceras alla attribut av din WMS och WFS. Om du inte vill att ett visst attribut ska publiceras avmarkerar du kryssrutan i kolumnen Configuration:
Exponeras inte i WFS`
Exponeras inte i WMS
Du kan lägga vattenstämplar över de kartor som produceras av ditt WMS genom att lägga till textanteckningar eller SVG-anteckningar i projektfilen. Se avsnittet Verktyg för anteckningar för instruktioner om hur du skapar anteckningar. För att annoteringar ska visas som vattenstämplar på WMS-utdata måste kryssrutan Fixed map position i dialogrutan Annotation text avmarkeras. Detta kan göras genom att dubbelklicka på annotationen medan ett av annoteringsverktygen är aktivt. För SVG-annoteringar måste du antingen ställa in projektet så att absoluta sökvägar sparas (i menyn General i dialogrutan ) eller manuellt ändra sökvägen till SVG-bilden så att den representerar en giltig relativ sökväg.
2.5. Integration med tredje part
QGIS Server tillhandahåller standard OGC webbtjänster som WMS, WFS, etc. och kan därför användas av ett stort antal olika slutanvändarverktyg.
2.5.1. Integration med QGIS Desktop
QGIS Desktop är kartdesignern där QGIS Server är kartservern. Kartorna eller QGIS-projekten kommer att serveras av QGIS Server för att tillhandahålla OGC-standarder. Dessa QGIS-projekt kan antingen vara filer eller poster i en databas (genom att använda
i QGIS Desktop).Dessutom måste ett särskilt uppdateringsarbetsflöde upprättas för att uppdatera ett projekt som används av en QGIS Server (dvs. kopiera projektfiler till serverplatsen och starta om QGIS Server). För närvarande är automatiserade processer (som serveromladdning via Message Queue Service) ännu inte implementerade.
2.5.2. Integration med MapProxy
MapProxy är en kakelcacheserver och eftersom den kan läsa och betjäna alla WMS/WMTS-kartservrar kan den anslutas direkt till QGIS-serverns webbtjänster och förbättra slutanvändarens upplevelse.
2.5.3. Integration med QWC2
QWC2 är en responsiv webbapplikation som är dedikerad till QGIS Server. Det hjälper dig att bygga en mycket anpassad kartvisare med lagerval, funktionsinformation etc. Många plugins finns också tillgängliga som autentisering eller utskriftstjänst, den fullständiga listan finns i detta repository.