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
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>
<!-- -->
$ systemctl stop geoserver
$ systemctl start geoserver