När jag provat tidigare så har jag inte tyckt att det är speciellt enkelt att sätta upp en QGIS server, men nu är det dags att testa igen och se om det skett några framsteg.
Vad är då QGIS Server? Jo det är lite förenklat motorn bakom QGIS paketerat för att presentera vanliga QGIS projekt via olika webbstandarder som WMS och WFS, så att dessa data kan visas online till GIS klienter eller webbkartor som Leaflet och OpenLayers. Genom att använda QGIS i stället för att paketera kartor i XYZ-tiles eller liknande så kan man hoppa över flera manuella steg och direkt få ändringar att slå igenom i en webbkarta om man skulle önska det. Det är såklart lite mer komplicerat än så då det exempelvis går att använda cache-tjänster för att snabba upp visningen och liknande, men kortfattat så kan man publicera kartor från QGIS ”desktop” direkt till webben via QGIS Server.
Det går att installera QGIS Server på Windows, men jag kommer att installera på en Linux server och instruktionen för detta finns på https://docs.qgis.org/3.22/en/docs/server_manual/index.html.
Instruktionen är riktad mot Debian-baserade distributioner, så jag hämtar och installerar Ubuntu Server 22.04. Vid installationen så sätter jag en fast IP adress på servern och lägger även till SSH så att det blir enklare att logga in via en terminal, men det går att arbeta direkt via terminalen på servern också.
Installationen av QGIS Server följer i stort installation av klient enligt instruktion på qgis.org.
sudo apt install gnupg software-properties-common
wget -qO - https://qgis.org/downloads/qgis-2021.gpg.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/qgis-archive.gpg --import
sudo chmod a+r /etc/apt/trusted.gpg.d/qgis-archive.gpg
sudo add-apt-repository "deb [arch:amd64] https://qgis.org/ubuntu $(lsb_release -c -s) main"
sudo apt update
sudo apt install qgis-server
Alla kommandon ovan krävs inte, men beroende på distribution så skadar det inte att köra dem ändå. Jag har även modifierat ”deb” raden så att den fungerar på Ubuntu utan felmeddelande (amd64). Den nyckel som används skapades 2021 så beroende på när du läser det här så kan en annan nyckel vara aktuell. Kontrollera helt enkelt på qgis.org.
Det går att testa installationen genom ett kommando som skall ge någon form av svar:
/usr/lib/cgi-bin/qgis_mapserv.fcgi
Instruktionen beskriver installation med Apache och NGINX HTTP server, så jag väljer här Apache. Efter installationen av Ubuntu och en uppdatering av grundsystemet så installeras Apache HTTP server med:
sudo apt install apache2 libapache2-mod-fcgid
Instruktionen rekommenderar att en virtuell miljö sätts upp för servern genom att redigera en fil:
sudo nano /etc/apache2/sites-available/qgis.demo.conf
Innehållet kan hämtas från instruktionssidan, och det kommer att redigeras lite senare i det här inlägget också.
Därefter så skapas kataloger för loggar och databaser för servern med behörigheter.
sudo mkdir -p /var/log/qgis/ sudo chown www-data:www-data /var/log/qgis sudo mkdir -p /home/qgis/qgisserverdb sudo chown www-data:www-data /home/qgis/qgisserverdb
Dessa kataloger är främst till för de demodata som laddas ner i instruktionen på qgis.org, och de kan anpassas till rådande förutsättningar, men jag visar dem här som de är skrivna i instruktionen.
För att sätta igång servern och den virtuella miljön så behövs några kommandon till:
sudo a2enmod fcgid sudo a2ensite qgis.demo sudo systemctl reload apache2
Instruktionen anger att man skall sätta upp en hänvisning i ”hosts” filen så att adressen som anges i HTTP konfigurationen (qgis.demo) kan användas i webbläsaren. Denna inställning görs på klienten och det skiljer sig mellan Windows och Linux (och MacOS). Jag antar att du kan göra motsvarande på en DNS server om du använder en sådan på nätverket.
Testa installationen med adressen:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
Resultatet är ett felmeddelande, men det är helt i sin ordning eftersom det inte finns något att svara med ännu.
För full funktionalitet, framför allt för utskrifter, så behövs det även en X-server på servern för att ”rendera” sådant som normalt presenteras till en skärm. Eftersom jag installerat Ubuntu Server som saknar ett grafiskt gränssnitt så lägger jag därför till:
sudo apt install xvfb
Och skapar sedan en fil med innehåll som hämtas från instruktionssidan. Filen skapas och redigeras med:
sudo nano /etc/systemd/system/xvfb.service
Därefter så startas och kontrolleras tjänsten med:
sudo systemctl enable --now xvfb.service
sudo systemctl status xvfb.service
Det sista kommandot avslutas med ”q” om allt går som det ska.
För att använda tjänsten i Apache så behöver ett tillägg göras i konfigurationsfilen som skapades tidigare, så igen, redigera den filen med kommandot:
sudo nano /etc/apache2/sites-available/qgis.demo.conf
Där letar du reda på en rad som innehåller en liknande text (det finns flera), och lägger helt enkelt till följande på en egen rad:
FcgidInitialEnv DISPLAY ":99"
Sedan behöver Apache startas om:
sudo systemctl restart apache2
Innan det går att titta på data på servern, så behöver ett projekt laddas upp. Det finns instruktioner för hur detta skall göras för att ett demoprojekt skall fungera, men i det här fallet så tycker jag att en enkel file-share kan vara på sin plats så att det blir enklare att testa med egna data.
Skapa en projektkatalog på servern för användaren ”qgis” och ge ägandeskapet till www-data:
sudo mkdir /home/qgis/projects/
sudo chown www-data:www-data /home/qgis/projects/
Sedan installeras Samba och katalogen delas ut via nätverket som ”qgis-server”.

Därefter läggs följande till i slutet av filen:
[qgis-server]
comment = QGIS projekt
path = /home/qgis/project
read only = no
browsable = yes
Sambaservern startas om med:
sudo service smbd restart
Sedan så behöver en användare ges rättigheter att hantera katalogen och det görs med:
sudo smbpasswd -a username
Här skall ”username” ersättas med en befintlig användare på servern, så jag använder det användarnamn som jag installerade servern med. Det går att skapa ett användarnamn specifikt för just QGIS serverprojekt först och sedan konfigurera det med samba, om det känns bättre.
Jag har ofta lite problem med uppsättning av delade kataloger, behörigheter, användare och liknande med samba, så när inget verkar fungera så sätter jag ”sudo chmod -R 777 /etc/qgis/projects” för att öppna katalogen för ALLT (obs rekommenderas ej).
Efter detta så skall katalogen vara sökbar och gå att öppna via nätverket. Skapa ett QGIS projekt med endast ”online” datakällor och spara det i katalogen.
När det finns ett projekt på sökvägen så går det att peka en webbläsare på url:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities&MAP=/home/qgis/projects/osm_test.qgz
Sökvägen behöver såklart modifieras så att den pekar på ett projekt som faktiskt finns, men sedan så bör det visas en sida med massa xml-text som anger vilka resurser som finns via tjänsten.
Vilka resurser som är tillgängliga går att styra via projektinställningarna i QGIS.
Vill du lägga till en WMS tjänst någonstans baserad på projektet så är det samma sökväg som läggs till, exempelvis tillbaka i QGIS. Men mer användbart är sannolikt att skapa en webbkarta som använder tjänsten som grund.
För att göra allt snabbare så behöver man säkert komplettera med en webbcache med mera, men det kan man exempelvis göra om man i stället för att använda WMS tjänsten direkt, går via en tjänst som GeoServer. Vad som är bäst och enklast får bli ett test en annan gång. Just nu är jag nöjd att jag nått så här långt.
QGIS server är fortfarande lite krånglig att sätta upp! Läser man noga och har någotsånär en förståelse för vad man gör så kan man i alla fall relativt enkelt nå så långt som jag visar här. QGIS Server kan dock så mycket mera. Det finns en ”landing page” som underlättar enormt för hanteringen av projekt på servern, men hur man sätter upp denna är inte beskrivet speciellt detaljerat. Det förutsätts att man är ganska bekväm med framför allt konfigurationen av en webbserver. Även om man gjort det några gånger så känns det som att instruktionerna är skrivna av och för bra mycket mer insatta personer än jag själv. Du kan prova att lägga till /wfs3.html efter fcgi-adressen för att se om något intressant dyker upp…
För att tillgängliggöra QGIS server för flera så hade en ”For Dummies” version av anvisningarna varit en klar fördel. I alla fall så att i stort vem som helst kan testa och konfigurera en QGIS Server för personligt bruk. Nu kan man även testa OSGeoLive distributionen, där även QGIS Server ingår, men det är inte så lätt att testa det i en befintlig miljö då.
Så länge majoriteten av QGIS användare inte är bekväma med mer än msi-installers eller mycket enkla och tydliga skriptinstruktioner, så förblir nog QGIS Server en tjänst för de allra mest insatta. Nu är detta inte på något vis ett undantag för just QGIS. Försök exempelvis som amatör att sätta upp en Enterprise Server från Esri… (detta är dock inte en 1-till-1 jämförelse). Det hade däremot kunnat vara betydligt enklare än vad det är nu.
Enligt gängse Linux-standard så bör server-data ligga någonstant under ”/srv/”, exempelvis ”/srv/qgis/projects/”
sudo mkdir /srv/qgis/projects/
Detta eftersom det är en server, och det är enklare att veta vilka filer som skall göras säkerhetsuppgraderingar om de ligger på lämplig katalog. Och /srv/ är datafiler för servers, som webbserver, samba-filer etc.
Men det är bara Linux-standarden, man kan göra som man vill på sin egna server. Men det underlättar för andra om man använder standarden.
Och som du skriver, man skall verkligen inte använda chmod 777 på servrar som man har data som man bryr sig om. Men på en virtuell testmaskin kan det var ok, som man kastar bort när man provat programmet. Men helst skall man ju naturligvis göra rätt. Men när man inte hittar korrekt lösning så kan det vara ett alternativ.
Tips om namnet, så kan man lägga in det i sin hemmarouter, så kommer alla maskiner i hemmanätverket automatiskt hitta maskinen. Där kan man även reservera en IP-adress för servern, baserat på dess MAC-adress.
Jag tycker inte det behövs en msi för QGis server för att installera på en windows-maskin, där är OSGeo4W ett alldeles utmärkt alternativ. Det som däremot skulle behövas är en bättre installationspaketering så man slipper att installera Qgis desktop tillsammans med Server för att inte tappa en massa dependencies. Det går att köra QGis server på en windows maskin med IIS som webserver men att komma så långt så att det är dags att konfigurera IIS tar så mkt kraft att man kroknar på vägen när man letar vilka dll:er som saknas. Det skulle vara så mycket lättare att få in programmet i en typisk kommunal windowsbaserad driftsmiljö om bara grundinstallationen fungerade.
Eller så använder man WSL2 i en MS Windows server, med Ubuntu installerat. Det är ju en fullständig Linux som man kör virtuellt/container i MS Windows. Finns många olika distributioner att välja från.
Men skall man köra skarpt, så kör man nog i en ”riktig” virtuallisering, med någon lämplig Linux-distribution.
Vilket inte är speciellt lätt att få i en kommunal organisation som standardiserar på Microsofts plattform.