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

255 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 安装部署
date: 2020-02-24
author: ac
tags:
- GeoServer
categories:
- 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.[下载安装包](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)