--- title: 安装部署 date: 2020-02-24 author: ac tags: - GeoServer categories: - GIS --- > `GeoServer`是用Java编写的开放源代码软件服务器,允许用户共享和编辑地理空间数据。`GeoServer` 是参考开放地理空间联盟(`OGC`)的Web Feature Service(WFS)、Web Coverage Service(WCS)、Web Map Service(WMS)等标准来实现的。 ## 安装部署 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 Environment(JRE)。最新版本的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.[下载安装包](http://geoserver.org/release/stable/) 选择稳定版的(stable) ![image-20201120205655053](./images/image-20201120205655053.png) 可以看到该版本提供的安装方式只有,平台独立的二进制包和war包形式的文件,都是免安装的。 - 平台独立二进制包:是捆绑在Jetty中的GeoServer Web应用程序。 - war包:作为现有servlet容器(例如Tomcat)的一部分运行。 在较旧的版本中还提供Windows或MacOS平台的安装文件。直接双击一路下一步完成安装,这样以安装文件的形式安装的通常会在系统环境变量中增加环境变量`GEOSERVER_HOME`、`GEOSERVER_DATA_DIR`。同时GeoServer会集成到Windows服务中,这样做的好处是更易于管理。 ### 3. 启动分析 我们选择二进制包的版本,解压后进入bin目录: ![image-20201123095249363](./images/image-20201123095249363.png) 在windows环境中双击`startup.bat`和`shutdown.bat`文件就可以启动和关闭GeoServer; 在Linux环境执行`sh startup.sh`就可以启动GeoServer。 ```powershell @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_HOME`、`GEOSERVER_DATA_DIR`环境变量,再去启动一个二进制包的GeoServer,则启动的程序是二进制的GeoServer,但使用的数据目录是安装到系统里面的GeoServer,且后面的配置也是保存在数据目录中的。 在Linux 环境 开启: 让jetty在后台运行,执行./startup.sh后,如果关闭SSH客户端,服务也会关闭,所以要换种方式 ```shell nohup ./startup.sh & ``` 注意:#nohup:忽略输入并把输出追加到"nohup.out" nohup:无法运行命令"startup.sh":没有那个文件或目录,但GeoServer管理页依然可以访问。 关闭: 直接执行:sh shutdown.sh ### 4.登陆 ![image-20201123113019104](./images/image-20201123113019104.png) GeoServer默认提供一个管理员账号:admin/geoserver。可以在Seurity/Users,Groups,Roles/UsersGroups中配置新增和删除用户。 ![image-20201123113250515](./images/image-20201123113250515.png)