Deployment And Setup Of GeoServer With WPS Remote Plugin
The following commands will prepare a CentOS 7 Minimal ISO machine for the deployment of:
-
GeoServer with the following plugins:
- GeoServer WPS
- GeoServer Remote WPS Orchestrator
- GeoServer Importer
The OS iso has been downloaded from::
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso
Preparation of the system: standard and basic OS packages
Hostname and other useful packages
Update the file /etc/hosts
making sure that the ip addresses matches the name of the machine.
Configure the Java Virtual Environment
# as root
$> wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackupcookie" http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u74-linux-x64.tar.gz
$> tar xzvf jdk-8u65-linux-x64.tar.gz
$> mkdir /usr/java
$> mv jdk1.8.0_65/ /usr/java/
$> alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_65/bin/java 20000
$> alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_65/bin/javac 20000
$> alternatives --install /usr/bin/jar jar /usr/java/jdk1.8.0_65/bin/jar 20000
$> alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.8.0_65/bin/javaws 20000
$> alternatives --set java /usr/java/jdk1.8.0_65/bin/java
$> alternatives --set javac /usr/java/jdk1.8.0_65/bin/javac
$> alternatives --set jar /usr/java/jdk1.8.0_65/bin/jar
$> alternatives --set javaws /usr/java/jdk1.8.0_65/bin/javaws
# Verify the proper installation on the JDK
$> java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
$> javac -version
javac 1.8.0_65
Installing Apache Tomcat
# as root
$> yum -y install tomcat-webapps
$> systemctl disable tomcat.service
$> cp /etc/sysconfig/tomcat /etc/sysconfig/geoserver
$> ln -s /usr/share/tomcat/ /opt/tomcat
Creating apache tomcat HOME context
Creating base template directory
# as root
$> mkdir -p /var/lib/tomcat/geoserver/{bin,conf,logs,temp,webapps,work}
$> cp -Rf /opt/tomcat/conf/* /var/lib/tomcat/geoserver/conf/
Creating geoserver apache tomcat BASE context
Make sure you already:
- installed tomcat (Installing apache tomcat)
- created the base catalina template (Creating apache tomcat HOME context)
Edit server.xml
file
GeoServer is the first tomcat instance we are installing in this VM, so we can keep the default ports:
- 8005 for commands to catalina instance
- 8009 for the AJP connection port
- 8080 for the HTTP connection port
Remember that you may change these ports in the file /var/lib/tomcat/geoserver/conf/server.xml
Final configurations
Set the ownership of the geoserver/
related directories to user tomcat
# as root
$> chown tomcat: -R /var/lib/tomcat/geoserver
$> cp /etc/tomcat/tomcat.conf /etc/tomcat/geoserver.conf
$> vi /etc/tomcat/geoserver.conf
# This variable is used to figure out if config is loaded or not.
TOMCAT_CFG_LOADED="1"
# In new-style instances, if CATALINA_BASE isn't specified, it will
# be constructed by joining TOMCATS_BASE and NAME.
TOMCATS_BASE="/var/lib/tomcats/"
# Where your java installation lives
#JAVA_HOME="/usr/lib/jvm/jre"
JAVA_HOME="/usr/java/jdk1.7.0_71"
# Where your tomcat installation lives
CATALINA_HOME="/usr/share/tomcat"
CATALINA_BASE="/var/lib/tomcat/geoserver"
CATALINA_PID=$CATALINA_BASE/work/pidfile.pid
# System-wide tmp
CATALINA_TMPDIR="/var/cache/tomcat/temp"
# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
# Use JAVA_OPTS to set java.library.path for libtcnative.so
#JAVA_OPTS="-Djava.library.path=/usr/lib"
JAVA_OPTS="-server -XX:SoftRefLRUPolicyMSPerMB=36000 -Xms1024m -Xmx2048m
-XX:PermSize=64m -XX:+UseConcMarkSweepGC -XX:NewSize=48m -DGEOSERVER_DATA_DIR=/storage/data/
-DENABLE_ADVANCED_PROJECTION=false -Dorg.geotools.shapefile.datetime=true -Duser.timezone=GMT
-Dorg.geotools.filter.function.simplify=true -DGEOMETRY_COLLECT_MAX_COORDINATES=50000"
# You can change your tomcat locale here
#LANG="en_US"
# Run tomcat under the Java Security Manager
SECURITY_MANAGER="false"
$> cp /usr/lib/systemd/system/tomcat.service /usr/lib/systemd/system/geoserver.service
$> vi /usr/lib/systemd/system/geoserver.service
EnvironmentFile=/etc/tomcat/geoserver.conf
$> systemctl enable geoserver.service
$> systemctl restart geoserver.service
# Follow the server startup procedure and make sure everything goes smoothly through the following command
$> tail -F /var/lib/tomcat/geoserver/logs/catalina.YYYY-MM-DD.log
Deploy And Configure GeoServer
First deployment
# as root
# Git and Maven must be installed on the system
$> yum -y install git
$> yum -y install maven
# Verify the Maven installation and double check that the JDK recognized is the Java Sun 1.7+
$> mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-16)
Maven home: /usr/share/maven
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_65/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-229.el7.x86_64", arch: "amd64", family: "unix"
# The following procedures allow to collect and compile the source code from the GIT repository.
$> cd
$> git clone https://github.com/geosolutions-it/geoserver.git geoserver.src
$> cd geoserver.src/src
$> git checkout wps-remote
$> git pull
$> mvn clean install -Pwps,wps-remote,importer,security,rest-ext -DskipTests
$> mv web/app/target/geoserver.war /var/lib/tomcat/geoserver/webapps/
$> chown -Rf tomcat: /var/lib/tomcat/geoserver
$> mv /var/lib/tomcat/geoserver/webapps/geoserver/data/ /storage/
$> chown -Rf tomcat: /storage
$> vim /storage/data/remoteProcess.properties
# Default Properties
remoteProcessStubCycleSleepTime = 100
# Base path where uploaded files are stored
# . This is used only when a remote uploader is enabled on the Python
# . WPS Agent. This property represents the local base path (on the filesystem
# . of GeoServer) where to search for uploaded files.
# . If not file has been found here (or this option is not enabled), GeoServer
# . looks for absolute path and/or paths relative to the GEOSERVER DATA DIR.
#uploadedFilesBasePath = /tmp
# Full path to the template used to generate the OWS WMC Json output
# . This property is used only when a "application/owc" output type on
# . the Python WPS Agent.
#owc_wms_json_template = absolute_path/to/wmc_template.json
# Specific kvps for {@link RemoteProcessClient) implementations
xmpp_server = localhost
xmpp_server_embedded = false
xmpp_server_embedded_secure = true
xmpp_server_embedded_certificate_file = bogus_mina_tls.cert
xmpp_server_embedded_certificate_password = boguspw
xmpp_port = 5222
xmpp_manager_username = admin
xmpp_manager_password = R3m0T3wP5
# domain and MUC service name of the XMPP Server
xmpp_domain = geoserver.org
xmpp_bus = conference
# name, user and password of the management room
xmpp_management_channel = management
xmpp_management_channel_user = admin
xmpp_management_channel_pwd = R3m0T3wP5
# comma separated list of available rooms for services. Those rooms'names will be equal to the service and WPS Process namespace
# Avoid spaces
xmpp_service_channels = default,geosolutions
# millis
xmpp_packet_reply_timeout = 500
# connection keep alive
xmpp_connection_ping_interval = 30000
xmpp_connection_ping_timeout = 10000
xmpp_connection_ping_initial_delay = 20000
# Thresholds indicating overloaded resources
xmpp_cpu_perc_threshold = 82.5
xmpp_mem_perc_threshold = 84.6
# Restart GeoServer
$> service geoserver restart
Warning
GeoServer won't connect to XMPP Server until it has been correctly configured and started as explained in the next section Installation Of OpenFire XMPP Server To Exchange Messages.