8. Poznámky k produkčnímu nasazení

Produkční nasazení GeoServer/OpenLayers mapové aplikace skýtá několik kroků a několik úskalí. Následující poznámky se vztahují k zprovoznění mapové aplikace na Unix serveru (konkrétně Ubuntu 20.02).

1) Instalace webového serveru Apache

$ app install apache2

2) Kompilace mapové aplikace

OpenLayers mapovou aplikaci je potřeba zkompilovat a teprve výsledné skripty umístit k produkční webové stránce.

$ cd /usr/share/geoserver/www/planek_svatba
$ npm run build
Výsledné skripty jsou vytvořeny v adresáři dist.

3) Překopírování adresářů k produkční webové stránce

Adresáře features, icons, pictures překopírujeme do cesty /var/www/html/. K tomuto účelu si nejprve vytvoříme potřebné složky. Tyto adresáře nejsou součástí zkompilovaného dist adresáře a je třeba je překopírovat zvlášť.

mkdir /var/www/html/features
mkdir /var/www/html/pictures
mkdir /var/www/html/icons
cp -r features /var/www/html/features
cp -r pictures /var/www/html/pictures
cp -r icons /var/www/html/icons

Do stejné složky překopírujeme obsah adresáře dist, který vznikl kompilací.

cp -r dist/* /var/www/html/

4) CORS problematika

Nejpalčivějším problémem je nastavení CORS. Defaultně totiž není umožněno, aby cizí prohlížeč mohl získávat odpovědi z našeho GeoServeru. Abychom se vyhnuli CORS problému, kdy nemůžeme zvenku přistoupit ke GeoServeru, je nutné ve webovém nastavení GeoServeru odkomentovat řádky 138 - 157 a 190 - 193. GeoServer defaultně běží jako Java Jetty kontejnerová aplikace, proto je třeba odkomentovat řádky vztaženy k Jetty. Naopak TomCat nastavení na řádcích 161 - 176 zůstane zakomentováno.

Webové nastavení nalezneme na Linuxu v souboru /usr/share/geoserver/webapps/geoserver/WEB-INF/web.xml (na MS Windows se stejný soubor nachází v cestě C:/Program Files/geoserver/webapps/geoserver/WEB-INF/web.xml).

<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.-->
<filter>
  <filter-name>cross-origin</filter-name>
  <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
  <init-param>
    <param-name>chainPreflight</param-name>
    <param-value>false</param-value>
  </init-param>
  <init-param>
    <param-name>allowedOrigins</param-name>
    <param-value>*</param-value>
  </init-param>
  <init-param>
    <param-name>allowedMethods</param-name>
    <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
  </init-param>
  <init-param>
    <param-name>allowedHeaders</param-name>
    <param-value>*</param-value>
  </init-param>
</filter>
<!--  -->

<!-- Uncomment following filter to enable CORS-->
<filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!--  -->
Abychom CORS nastavení promítli do GeoServeru, musíme GeoServer restartovat:

$ systemctl stop geoserver
$ systemctl start geoserver