wtorek, 8 kwietnia 2014

OpenShift - Darmowy hosting GeoServer (WMS + WFS)

OpenShift od Ret Hat

OpenShift.com udostępnia bezpłatnie trzy małe jednostki serwera (gear). Jedna jednostka składa się z 0.5GB RAM + 1GB HDD. Dzięki tym trzem jednostkom można uruchomić np. trzy różne aplikacje. A w przypadku dużego ruchu można rozłożyć zużycie mocy obliczeniowej jednej aplikacji na trzy jednostki serwera, który za pośrednictwem "load-balancer'a" replikuje jedną aplikację na trzy wirtualne maszyny.

Wykorzystajmy te możliwości do utworzenia instancji geoserver.org umożliwiającej udostępnianie map za pośrednictwem takich usług jak Web Map Service (WMS).

Zakładanie konta


Tworzenie nowej aplikacji Open Shift

GeoServer działa w środowisku Tomcat, który jest dostępny wśród wielu opcji Open Shift:

GeoServer ma raczej duże wymagania systemowe, szczególnie jeżeli chodzi o zasoby RAM więc warto utworzyć aplikację, która skaluje się wraz ze wzrostem ruchu na serwerze. Dodatkowa zaleta aplikacji skalowalnej to możliwość dodania bazy danych PostGIS jako osobny cartridge (wydzielone wyłącznie dla PostGIS 0.5GB RAM + 1GB HDD). W przypadku wybrania opcji 'No scaling' też będzie można dodać PostGIS, ale w tym przypadku będzie korzystał ze współdzielonej z GeoServer pamięci RAM (0.5GB).

W tym momencie Tomcat jest uruchomiony. W moim przypadku nazwa aplikacji to gis uruchomiona w przestrzeni nazw umgdy.

Red Hat client tools

Aby móc do niego dodać GeoServer niezbędne będą narzędzia uruchamiane w linii komend:
Po instalacji Red Hat client tools trzeba skonfigurować dostęp dostęp do aplikacji na komputerze lokalnym. Najpierw należy użyć polecenia
rhc setup
Należy podać dane do logowania, utworzyć token autoryzacyjny, utworzyć klucz SSH. Na końcu powinna być wyświetlona informacja Your client tools are now configured.

Klonowanie zdalnego repozytorium

Aby dodać GeoServer to Tomcat'a najpierw trzeba sklonować repozytorium aplikacji na komputer lokalny. Tworzymy folder, w którym będą przechowywane repozytoria git, w linii komend przechodzimy do tego folderu a następnie klonujemy repozytorium. Adres zdalny repozytorium podany jest w sekcji Source Code
 
mkdir gitcd gitgit clone ssh://<source-code>cd <app-name>


Po sklonowaniu repozytorium trzeba w linii komend przejść do folderu repozytorium. Nazwa folderu to nazwa aplikacji. W moim przypadku jest to gis. Domyślnie OpenShift jest skonfigurowany tak aby kompilować zawartość folderu src zgodnie z parametrami ustalonymi w pliku pom.xml. Ponieważ nie mam zamiaru pisać własnego kodu źródłowego usuwam zarówno folder src jak i plik pom.xml.

Konfiguracja GeoServer

Teraz najważniejsza część - dodajemy GeoServer do Tomcat'a. W tym celu należy pobrać Web Archive ze strony http://geoserver.org/display/GEOS/Stable, rozpakować, a następnie skopiować plik geoserver.war do folderu git/gis/webapps/. Plik geoserver.war to zawartość całej aplikacji GeoServer, która zostanie uruchomiona w środowisku Tomcat. GeoServer zostanie uruchomiony w podfolderze www.nazwa-domeny.com/geoserver.

GeoServer będzie działać świetnie ale będzie problem ze zmianą domyślnej konfiguracji w tym również danych GIS. Aby rozwiązać ten problem trzeba rozpakować plik geoserver.war a następnie zawartość folderu data skopiować do git/<app-name>/data/geoserver_data.

Dodatkowo w folderze git/<app-name>/.openshift/action_hooks/ należy utworzyć plik pre_start_jbossews-2.0 z następującą zawartością:
export CATALINA_OPTS=-DGEOSERVER_DATA_DIR=${OPENSHIFT_DATA_DIR}geoserver_data

Prawie wszystko gotowe. Teraz wysyłamy zmienione repozytorium na serwer - w wierszu poleceń trzeba wpisać:
git update-index --chmod=+x .openshift/action_hooks/*
git add -A .
git commit -m "push"
git push
Powpduje to odpowiednio:
- przypisanie praw do wykonywania plików w folderze action_hooks
- dodanie zmian do repzytorium Git
- potwierdzenie dodanych zmian
- wysłanie potwierdzonych zmian do zdalnego serwera


Po wysłaniu repozytorium na serwer trzeba jeszcze skopiować dane konfiguracyjne GeoServer z folderu git/<app-name>/data do folderu OPENSHIFT_DATA_DIR, a następnie zrestartować aplikację. W tym celu należy użyć poleceń:
rhc ssh -a [app-name]
> cp -a $OPENSHIFT_REPO_DIR/data/. $OPENSHIFT_DATA_DIR/
> chmod -R ugo+rw $OPENSHIFT_DATA_DIR/geoserver_data/
> exit
rhc app restart -a [app-name]
Do kopiowania zostały wykorzystane zmienne  systemowych OpenShift.

Po restarcie GeoServer potrzebuje kilku minut na wystartowanie. Uruchamia się od razu więc OpenShift wyświetla status "success", ale po wystartowaniu wczytuje dużo danyc (konfiguracje, układy współrzędnych, style warstw, ... i inne) i to wczytywanie trwa kilka minut. Więc odczekaj dłuższą chwilę zanim zaczniesz szukać błędów z powodu 503 Service Unavailable.

Problemy jakie mogą wystąpić dotyczą praw dostępu do plików w folderze geoserver_data. GeoServer potrzebuje praw do odczytu/edycji/tworzenia. W razie potrzeby trzeba użyć
chomod -R ugo+rw data/geoserver_data/
chomod -R ugo+x .openshift/action_hooks/
Efekt pracy działający on-line można sprawdzić pod adresem:
http://geoserver-ksz.rhcloud.com/http://geoserver-ksz.rhcloud.com/geoserver/web/




Sprawdź też:

1 komentarz: