meface/docs/article/gis/geoserver/install.md

8.3 KiB
Raw Blame History

title date author tags categories
安装部署 2020-02-24 ac
GeoServer
GIS

GeoServer是用Java编写的开放源代码软件服务器允许用户共享和编辑地理空间数据。GeoServer 是参考开放地理空间联盟(OGC的Web Feature ServiceWFS、Web Coverage ServiceWCS、Web Map ServiceWMS等标准来实现的。

安装部署

Geoserver 官方的用户手册:https://docs.geoserver.org/latest/en/user/installation/win_installer.html

1.安装Java环境

因为GeoServer是用Java编写的所以需要Java环境jre,安装JDK 8。

java 9 目前还不支持

GeoServer的速度在很大程度上取决于所选的Java Runtime EnvironmentJRE。最新版本的GeoServer已通过Oracle JRE和OpenJDK进行了测试。除了经过测试的实现之外其他实现也可能会正常工作但通常不建议这样做。

经测试:

  • Java 11和Java 8-GeoServer 2.15.x及更高版本已测试OpenJDK
  • Java 8-GeoServer 2.9.x及更高版本已测试OpenJDK和Oracle JRE
  • Java 7-GeoServer 2.6.x至GeoServer 2.8.x已测试OpenJDK和Oracle JRE
  • Java 6-GeoServer 2.3.x至GeoServer 2.5.x已测试Oracle JRE
  • Java 5-GeoServer 2.2.x和更低版本已通过Sun JRE测试

为了获得最佳性能,建议使用Oracle JRE 8也称为JRE 1.8)。

从GeoServer 2.0开始Java运行时环境JRE足以运行GeoServer。GeoServer不再需要Java开发工具包JDK

2.下载安装包

选择稳定版的stable

image-20201120205655053

可以看到该版本提供的安装方式只有平台独立的二进制包和war包形式的文件都是免安装的。

  • 平台独立二进制包是捆绑在Jetty中的GeoServer Web应用程序。
  • war包作为现有servlet容器例如Tomcat的一部分运行。

在较旧的版本中还提供Windows或MacOS平台的安装文件。直接双击一路下一步完成安装这样以安装文件的形式安装的通常会在系统环境变量中增加环境变量GEOSERVER_HOMEGEOSERVER_DATA_DIR。同时GeoServer会集成到Windows服务中这样做的好处是更易于管理。

3. 启动分析

我们选择二进制包的版本解压后进入bin目录

image-20201123095249363

在windows环境中双击startup.batshutdown.bat文件就可以启动和关闭GeoServer

在Linux环境执行sh startup.sh就可以启动GeoServer。

@echo off
rem -----------------------------------------------------------------------------
rem Startup Script for GeoServer
rem -----------------------------------------------------------------------------

cls
echo Welcome to GeoServer!
echo.
set error=0

rem JAVA_HOME not defined
if "%JAVA_HOME%" == "" goto trySystemJava

rem JAVA_HOME defined incorrectly
if not exist "%JAVA_HOME%\bin\java.exe" goto badJava

rem Setup the java command and move on
set RUN_JAVA=%JAVA_HOME%\bin\java
echo JAVA_HOME: %JAVA_HOME%
echo.

:checkGeoServerHome
rem GEOSERVER_HOME not defined
if "%GEOSERVER_HOME%" == "" goto noHome

rem GEOSERVER_HOME defined incorrectly
if not exist "%GEOSERVER_HOME%\bin\startup.bat" goto badHome

goto checkDataDir

:trySystemJava
  echo The JAVA_HOME environment variable is not defined, trying to use System Java
for /f %%i in ('where java') do set RUN_JAVA=%%i
rem --- we might be on amd64 having only x86 jre installed ---
if "%RUN_JAVA%"=="" if DEFINED ProgramFiles(x86) if NOT "%PROCESSOR_ARCHITECTURE%"=="x86" (
    rem --- restart the batch in x86 mode---
    echo Warning: No java interpreter found in path.
    echo Retry using Wow64 filesystem [32bit environment] redirection.
    %SystemRoot%\SysWOW64\cmd.exe /c %0 %*
    exit /b %ERRORLEVEL%
  )
if "%RUN_JAVA%"=="" goto noJava
  echo Using System Java at:
  echo    %RUN_JAVA%
  echo.
goto checkGeoServerHome

:noJava
  echo The JAVA_HOME environment variable is not defined, and no Java executable could be found.
goto JavaFail

:badJava
  echo The JAVA_HOME environment variable is not defined correctly.
goto JavaFail

:JavaFail
  echo Please install Java or, if present but not in the path, set this environment variable via the following command:
  echo    set JAVA_HOME=[path to Java]
  echo Example:
  echo    set JAVA_HOME=C:\Program Files\Java\jdk8
  echo.
  set error=1
goto end

:noHome
  if exist ..\start.jar goto noHomeOK
  echo The GEOSERVER_HOME environment variable is not defined.
goto HomeFail

:badHome
  if exist ..\start.jar goto badHomeOK
  echo The GEOSERVER_HOME environment variable is not defined correctly.
goto HomeFail

:HomeFail
  echo This environment variable is needed to run this program.
  echo.
  echo Set this environment variable via the following command:
  echo    set GEOSERVER_HOME=[path to GeoServer]
  echo Example:
  echo    set GEOSERVER_HOME=C:\Program Files\GeoServer
  echo.
  set error=1
goto end


:noHomeOK
  echo The GEOSERVER_HOME environment variable is not defined.
goto setHome

:badHomeOK
  echo The GEOSERVER_HOME environment variable is not defined correctly.
goto setHome

:setHome
  echo Temporarily setting GEOSERVER_HOME to the following directory:
  cd ..
  set GEOSERVER_HOME=%CD%
  echo %GEOSERVER_HOME%
  echo.
goto checkDataDir


:checkDataDir
  rem GEOSERVER_DATA_DIR not defined
  if "%GEOSERVER_DATA_DIR%" == "" goto noDataDir
  goto setMarlinRenderer

:noDataDir
  rem if GEOSERVER_DATA_DIR is not defined then use GEOSERVER_HOME/data_dir/
  if exist "%GEOSERVER_HOME%\data_dir" goto setDataDir
  echo No valid GeoServer data directory could be located.
  echo Please set the GEOSERVER_DATA_DIR environment variable.
  echo.
  echo Set this environment variable via the following command:
  echo    set GEOSERVER_DATA_DIR=[path to data_dir]
  echo Example:
  echo    set GEOSERVER_DATA_DIR=C:\Program Files\GeoServer\data_dir
  echo.
  set error=1
goto end

:setDataDir
  set GEOSERVER_DATA_DIR=%GEOSERVER_HOME%\data_dir
  echo The GEOSERVER_DATA_DIR environment variable is not defined correctly.
  echo Temporarily setting GEOSERVER_DATA_DIR to the following directory:
  echo %GEOSERVER_DATA_DIR%
  echo.
goto setMarlinRenderer

:setMarlinRenderer
  cd "%GEOSERVER_HOME%"
  for /f "delims=" %%i in ('dir /b/s "%GEOSERVER_HOME%\webapps\geoserver\WEB-INF\lib\marlin*.jar"') do set MARLIN_JAR=%%i
  if "%MARLIN_JAR%" == "" (
    echo Marlin renderer jar not found
    goto run
  )
  set MARLIN_ENABLER=-Xbootclasspath/a:"%MARLIN_JAR%" -Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine
  set JAVA_OPTS=%JAVA_OPTS% %MARLIN_ENABLER%
goto run

:run
  cd "%GEOSERVER_HOME%"
  echo Please wait while loading GeoServer...
  echo.
  "%RUN_JAVA%" %JAVA_OPTS% -DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%" -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar
  cd bin
goto end


:end
  if %error% == 1 echo Startup of GeoServer was unsuccessful. 
  echo.
  pause

可以从startup.bat脚本中看到GeoServer的启动流程

  1. 寻找JAVA_HOME
  2. 查找GeoServer的目录(GEOSERVER_HOME)
  3. 检查和设置数据目录(GEOSERVER_DATA_DIR,默认%GEOSERVER_HOME%\data_dir")
  4. 最后启动- jar start.jar

跟start.jar启动相关的还有根目录下的start.ini文件里面可以设置Jetty的相关配置如端口、http连接超时时间、最大最小线程数等。

如果系统已经安装了一个GeoServer安装包的形式或是系统中存在GEOSERVER_HOMEGEOSERVER_DATA_DIR环境变量再去启动一个二进制包的GeoServer则启动的程序是二进制的GeoServer但使用的数据目录是安装到系统里面的GeoServer且后面的配置也是保存在数据目录中的。

在Linux 环境

开启:

让jetty在后台运行执行./startup.sh后如果关闭SSH客户端服务也会关闭所以要换种方式

nohup ./startup.sh &

注意:#nohup:忽略输入并把输出追加到"nohup.out" nohup:无法运行命令"startup.sh":没有那个文件或目录但GeoServer管理页依然可以访问。

关闭:

直接执行sh shutdown.sh

4.登陆

image-20201123113019104

GeoServer默认提供一个管理员账号admin/geoserver。可以在Seurity/Users,Groups,Roles/UsersGroups中配置新增和删除用户。

image-20201123113250515