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