Najczęściej, rozważając wybór serwera WMS dostępnego na wolnej licencji, ma się na myśli jeden z dwóch projektów: UMN MapServer albo GeoServer. Obydwa mają już za sobą długą historię, liczną społeczność oraz wielu użytkowników. Mają jednak również swoje wady, w tym jedną największą: wszelkich ustawień wizualizacji danych dokonuje się tekstowo. Szczególnie dokuczliwy w tym zakresie jest GeoServer, wykorzystujący język SLD z jego nadmiernie rozbudowaną składnią. W przypadku chęci stworzenia bardziej rozbudowanej symbolizacji, staje się to poważnym problemem.
Na szczęście pojawiła się interesująca alternatywa dla tych programów – QGIS Server. Dzięki niemu możemy opublikować w postaci usługi WMS projekty stworzone w QGIS Desktop, z użyciem graficznego interfejsu użytkownika i bogatych opcji wizualizacji danych.
Ponieważ uruchomienie QGIS Server na komputerze lokalnym nie przedstawia większych trudności, skupię się zatem na tym, jak dokonać tego na zewnętrznym serwerze.
Dalszy opis zakłada, że dysponujemy serwerem VPS lub dedykowanym, z zainstalowanym systemem Debian/Ubuntu, do którego mamy dostęp przez SSH i uprawnienia superużytkownika.
Instalację zaczniemy od zalogowania się na serwer jako użytkownik z uprawnieniami administracyjnymi, lub jeśli konfiguracja nie dopuszcza takiego logowania bezpośrednio przez SSH – wydajemy komendę sudo su, dzięki czemu nie trzeba będzie wpisywać „sudo“ przed każdą kolejną.
Wersja stabilna 1.7, niestety, nie nadaje się do użycia jako serwer – każde skierowane do niego zapytanie skończy się komunikatem błędu 500 Internal Server Error. Jest to spowodowane błędem programistycznym, wykrytym już po opublikowaniu wydania. Konieczne jest zatem skorzystanie z usług wersji Master. Na stronie http://hub.qgis.org/projects/quantum-gis/wiki/Download#Master odnajdziemy repozytorium odpowiednie dla naszej dystrybucji. Otwieramy do edycji plik /etc/apt/sources.list i wklejamy właściwe linie, na przykład dla Ubuntu 11.10 będą one następujące:
deb http://qgis.org/debian-nightly oneiric main deb-src http://qgis.org/debian-nightly oneiric main
W kolejnym kroku wydajemy komendy:
apt-get update apt-get install qgis-mapserver libapache2-mod-fcgid
Jeśli wszystko poszło dobrze, QGIS Server powinien zostać zainstalowany w katalogu /usr/lib/cgi-bin/qgis_mapserv.fcgi . Jeśli jednak zdecydujemy się teraz skierować do niego zapytanie, odpowiedź będzie brzmiała Internal Server Error – brak jest bowiem dostępnych plików projektu.
W oknie Właściwości projektu znajduje się zakładka o nazwie Serwer WMS, która odpowiada za ustawienia związane z publikacją projektu w sieci. Najważniejszym z nich jest sekcja „Tylko te układy współrzędnych“ – trzeba koniecznie ją zaznaczyć i wybrać rzeczywiście przydatne, w przeciwnym wypadku serwer zwróci w odpowiedzi na GetCapabilities wszystkie dostępne, włącznie z bardzo egzotycznymi.
Oprócz tego konieczne jest ustawienie zapisu bezwzględnych ścieżek dostępu.
Wszystkie niestandardowe symbole SVG muszą zostać przekopiowane na serwer. Domyślnie odczytywane są one z katalogu /usr/share/qgis/svg.
Symbole stworzone innymi metodami – poprzez złożenie czcionek, kształtów i kolorów – są zapisywane w pliku .qgs, zatem nie trzeba się nimi przejmować.
Najbardziej komfortowa sytuacja ma miejsce wtedy, gdy komputer używany do pracy nad projektem ma identyczny system operacyjny i konfigurację, co serwer – w takim wypadku można już przystąpić do kopiowania danych i pliku projektu. Jeśli jednak jest inaczej, trzeba będzie dokonać pewnych zmian w pliku projektu przy pomocy edytora tekstu – najlepiej, żeby był dostosowany do edycji dokumentów XML.
Żeby projekt stworzony w QGIS Desktop zadziałał prawidłowo na serwerze, wszystkie ścieżki dostępu muszą się zgadzać. W przypadku przenoszenia projektu z systemu Windows należy zwrócić szczególną uwagę na katalog domowy (Windows używa C:/Users/nazwa, natomiast Linux – /home/nazwa). Dla przykładu porównanie definicji warstwy Shapefile dla Linux i Windows:
W przypadku danych przechowywanych w bazie PostGIS trzeba sprawdzić parametry połączenia – te są na szczęście zapisywane identycznie niezależnie od systemu.
Dane umieszczamy w katalogach zgodnie z podanymi w pliku projektu ścieżkami, pamiętając o tym, żeby mogły być odczytane przez wszystkich (chmod 644 albo chmod a+r).
Jeśli chodzi zaś o plik projektu, to istnieje kilka możliwości:
Teraz wystarczy już tylko zrestartować serwer HTTP:
/etc/init.d/apache2 restart
i można dokonać próby połączenia.
Pierwsze zapytanie będzie przetwarzane dość długo, gdyż serwer będzie potrzebował czasu na przetworzenie pliku projektu. Kolejne powinny być przetworzone już dużo szybciej.