麒麟Linux服务器安装配置GeoServer并创建服务的方法

创建日期:2025-06-20 14:14:50
更新日期:2025-06-20 14:31:21

1、选择合适版本的jdk 17下载并解压到/opt/jdk。

下载地址:Java Archive Downloads - Java SE 17.0.12 and earlier

2、下载并解压GeoServer到/opt/geoserver。

下载地址:\piperouteanlytool\bin\Debug\net7.0

3、编辑/opt/geoserver/bin/startup.sh。

    if [ -r ../start.jar ]; then
      echo "GEOSERVER_HOME environment variable not found, using current "
      echo "location.  If not set then running this script from other "
      echo "directories will not work in the future."
      GEOSERVER_HOME="$(cd .. && pwd)"
    fi
  fi

  if [ -z "${GEOSERVER_HOME:-}" ]; then
    echo "The GEOSERVER_HOME environment variable is not defined"
    echo "This environment variable is needed to run this program"
    echo "Please set it to the directory where geoserver was installed"
    exit 1
  fi

  export GEOSERVER_HOME
fi

if [ ! -r "${GEOSERVER_HOME}/bin/startup.sh" ]; then
  echo "The GEOSERVER_HOME environment variable is not defined correctly"
  echo "This environment variable is needed to run this program"
  exit 1
fi

#Find the configuration directory: GEOSERVER_DATA_DIR
if [ -z "${GEOSERVER_DATA_DIR:-}" ]; then
    if [ -r "${GEOSERVER_HOME}/data_dir" ]; then
        export GEOSERVER_DATA_DIR="${GEOSERVER_HOME}/data_dir"
    else
        echo "No GEOSERVER_DATA_DIR found, using application defaults"
              GEOSERVER_DATA_DIR=""
    fi
fi

cd "${GEOSERVER_HOME}" || exit 1

if [ -z "${MARLIN_JAR:-}" ]; then
    MARLIN_JAR=$(find "$(pwd)/webapps" -name "marlin*.jar" | head -1)
    if [ "${MARLIN_JAR:-}" != "" ]; then
        MARLIN_ENABLER="--patch-module java.desktop=${MARLIN_JAR}"
        export MARLIN_ENABLER
    fi
fi

JAVA_OPTS="${JAVA_OPTS:+"$JAVA_OPTS"} --add-exports=java.desktop/sun.awt.image=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED --add-opens=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.desktop/sun.java2d.pipe=ALL-UNNAMED"

echo "GEOSERVER DATA DIR is ${GEOSERVER_DATA_DIR}"
#added headless to true by default, if this messes anyone up let the list
#know and we can change it back, but it seems like it won't hurt -ch
IFS=$(printf '\n\t ')
exec "${_RUNJAVA}" ${JAVA_OPTS:--DNoJavaOpts} ${MARLIN_ENABLER:--DMarlinDisabled} "-Djetty.base=${GEOSERVER_HOME}" "-DGEOSERVER_DATA_DIR=${GEOSERVER_DATA_DIR}" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar "${GEOSERVER_HOME}/start.jar" > /dev/null 2>&1 & echo $! > /var/run/geoserver.pid

注意最后一行的修改:

exec "${_RUNJAVA}" ${JAVA_OPTS:--DNoJavaOpts} ${MARLIN_ENABLER:--DMarlinDisabled} "-Djetty.base=${GEOSERVER_HOME}" "-DGEOSERVER_DATA_DIR=${GEOSERVER_DATA_DIR}" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar "${GEOSERVER_HOME}/start.jar" > /dev/null 2>&1 & echo $! > /var/run/geoserver.pid

4、创建服务文件。

vim /usr/lib/systemd/system/geoserver.service

文件内容:

[Unit]
Description=GeoServer Service
After=network.target

[Service]
Type=forking
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="JAVA_HOME=/opt/jdk"
ExecStart=/opt/geoserver/bin/startup.sh
ExecStop=/opt/geoserver/bin/shutdown.sh
PIDFile=/var/run/geoserver.pid
TimeoutStartSec=300
TimeoutStopSec=120
Restart=on-failure
RestartSec=30
PrivateTmp=true

[Install]
WantedBy=multi-user.target

5、启动服务并设置开机自启动。

systemctl daemon-reload
systemctl start geoserver
systemctl enable geoserver