Install GeoServer on Linux
Using Ubuntu Server 18.04.1-LTS
BASIC
1. Download geoserver "Platform Independent Binary"
2. Create folder:
/opt/geoserver/
3. Create folder:
/opt/geoserver-data/X.XX.X/ (X.XX.X is geo server version)
4. Extract downloaded file
5. Copy extracted file onto /opt/geoserver
6. Copy /opt/geoserver/data_dir onto /opt/geoserver-data/X.XX.X/
7. Enable CORRS configuration, edit file
/opt/geoserver/webapps/geoserver/WEB-INF/web.xml , then uncomment cross-origin
filter:
<!-- Uncomment following filter to enable CORS -->
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
<!-- Uncomment following filter to enable CORS -->
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
8. Create new file on:
/etc/default/geoserver
9. Copy paste following text:
USER=geoserver
GEOSERVER_DATA_DIR=/opt/geoserver-data/X.XX.X/
GEOSERVER_HOME=/opt/geoserver
JAVA_HOME=/PATH_TO_YOUR_JAVA
JAVA_OPTS="-Xms128m -Xmx2048m"
10. Create init scripts file: /etc/init.d/geoserver , and then copy paste text on Appendix -
Geoserver init script into that file.
11. Make that file executable:
sudo chmod +x /etc/init.d/geoserver
12. To make geoserver service auto-start, run following command:
sudo update-rc.d geoserver defaults
Installing native JAI and IMAGEIO
1. Download JAI 1.1.3, choosing the appropriate architecture:
o i586 for the 32 bit systems
o amd64 for the 64 bit ones (even if using Intel processors)
2. Estract the file into a temporary directory
3. Move jar files in the JDK/JRE lib/ext folder.
4. Move so files in the JDK/JRE lib/amd64 folder.
5. For example, on an Ubuntu 64 bit system:
$ cd /tmp
$ wget http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-linux-
amd64.tar.gz && \
gunzip -c jai-1_1_3-lib-linux-amd64.tar.gz | tar xf - && \
mv /tmp/jai-1_1_3/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \
mv /tmp/jai-1_1_3/lib/*.so $JAVA_HOME/jre/lib/amd64/ && \
rm /tmp/jai-1_1_3-lib-linux-amd64.tar.gz && \
rm -r /tmp/jai-1_1_3
6. Download JAI Image I/O 1.1, choosing the appropriate architecture:
o i586 for the 32 bit systems
o amd64 for the 64 bit ones (even if using Intel processors)
7. Estract the file into a temporary directory
8. Move jar files in the JDK/JRE lib/ext folder.
9. Move so files in the JDK/JRE lib/amd64 folder.
10. For example, on an Ubuntu 64 bit system:
$ cd /tmp
$ wget http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-
1_1-lib-linux-amd64.tar.gz && \
gunzip -c jai_imageio-1_1-lib-linux-amd64.tar.gz | tar xf - && \
mv /tmp/jai_imageio-1_1/lib/*.jar $JAVA_HOME/jre/lib/ext/ && \
mv /tmp/jai_imageio-1_1/lib/*.so $JAVA_HOME/jre/lib/amd64/ && \
rm /tmp/jai_imageio-1_1-lib-linux-amd64.tar.gz && \
rm -r /tmp/jai_imageio-1_1
Optional cleanup
Once the installation is complete, you may optionally remove the original JAI files from the
GeoServer instance:
jai_core-x.y.z.jar
jai_imageio-x.y.jar
jai_codec-x.y.z.jar
where x, y, and z refer to specific version numbers.
APPENDIX
1. Geoserver init script
#! /bin/sh
### BEGIN INIT INFO
# Provides: geoserver
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: GeoServer OGC server
### END INIT INFO
# Geoserver configuration - use /etc/default/geoserver to override these vars
# user that shall run GeoServer
#USER=geoserver
#GEOSERVER_DATA_DIR=/home/$USER/data_dir
#GEOSERVER_HOME=/home/$USER/geoserver
PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="GeoServer daemon"
NAME=geoserver
#JAVA_HOME=/usr/lib/jvm/java-6-sun
#JAVA_OPTS="-Xms128m -Xmx512m"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
if [ -z $MARLIN_JAR]; then
MARLIN_JAR=`find $GEOSERVER_HOME/webapps -name "marlin*.jar" | head -1`
fi
MARLIN_ENABLER="-Xbootclasspath/a:$MARLIN_JAR -
Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine"
DAEMON="$JAVA_HOME/bin/java"
DAEMON_ARGS="$JAVA_OPTS $MARLIN_ENABLER $DEBUG_OPTS -
DGEOSERVER_DATA_DIR=$GEOSERVER_DATA_DIR -Djava.awt.headless=true -jar start.jar"
# Load the VERBOSE setting and other rcS variables
VERBOSE=yes
[ -f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
do_start(){
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --pidfile $PIDFILE --make-pidfile \
--chuid $USER --chdir $GEOSERVER_HOME \
-b --test --exec $DAEMON -- $DAEMON_ARGS > /dev/null \
|| return 1
start-stop-daemon --start --pidfile $PIDFILE --make-pidfile \
--chuid $USER --chdir $GEOSERVER_HOME \
-b --exec $DAEMON -- $DAEMON_ARGS \
|| return 2
}
do_stop(){
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --pidfile $PIDFILE \
--user $USER \
--retry=TERM/30/KILL/5
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
[ "$VERBOSE" != no ] && log_daemon_msg "JAVA_HOME location: $JAVA_HOME"
[ "$VERBOSE" != no ] && log_daemon_msg "GEOSERVER_DATA_DIR location:
$GEOSERVER_DATA_DIR"
[ "$VERBOSE" != no ] && log_daemon_msg "MARLIN: $MARLIN_ENABLER"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac