GeoServer源码在eclipse上构建并在Docker部署发布
GeoServer源码在eclipse上构建并在Docker部署发布
GodProgrammerManGeoServer 源码在 eclipse 上构建
1.环境准备
安装 jdk,安装 Maven 2.下载源码
https://geoserver.org/release/stable/,选择源码下载,解压并在src目录下cmd使用Maven构建
3.构建
新版本尽量 java11 以上–环境变量改回原来 java8 的路径即可
1 | mvn clean install -Dmaven.test.skip=true //清class文件,打包构建,跳过测试 |
打开 cmd,切换到源码目录的 src 底下,写入命令:
1 | mvn eclipse:eclipse |
4.eclipse 导入源码
File→Import,
导入时候选择已经存在的工程:Existing Project into workspace
切换目录到已经部署好的 src 目录底下,单击【finish】即可
找到 gs-web-app 目录底下的 Start.java,右击【Run as】|【Java Application】
在浏览器输入地址:
http://localhost:8080/geoserver/web
一般默认登录账号为 admin,密码是 geoserver
正常来说,至此在 eclipse 中已经可以启动 geoserver 了。但是,我在处理时,引入工程后,有些工程是报错的:
Eclipse 中有一种叫做存取限制的机制,来防止你错误使用那些非共享的 API。通常来说,Eclipse 做的是对的,因为两点,我们不想要使用非共享 API 的,而且 Eclipse 知道什么是共享的和非共享的 API。但是有时我们想要使用非共享的 API,比如说用 gmail 来发送和接收邮件,要用到 SSL。这个就是非共享的 API。这时候我们就要更改一些设置了。
更改的步骤如下:
window-Preferences-java-compiler-Error/Warning-Deprecated and restricted API-Forbidden reference 那里,设置成 Ignore 即可
二次开发
源码导入到 eclipse 中
右键工程-export-web-war file
导出 war 文件放入 webapps 上并重启 tomcat 即可
上述如不行:
则需要在项目 src\web\app 下,运行 cmd:执行命令进行打包
1
mvn clean install -DskipTests
重点,如要其他项目架包,则在 eclipse 中右键去到当前项目架包 src 下,删掉 target 文件,然后在文件路径栏下 cmd 运行 mvn 命令
1
mvn clean install -DskipTests
成功后在 target 找到当前项目架包 并替换在 tomcat 的 geoserver 下 lib 目录下即可
Docker 部署发布
1.环境准备
已安装 Docker
在线安装命令
1 | 脚本安装 |
Docker 配置镜像加速器,使用阿里云加速器
1 | sudo mkdir -p /etc/docker |
个人加速地址登陆阿里云并在控制台中搜索“容器镜像服务 ACR“- “镜像加速“内有 2.创建 tomcat 镜像并将发布好 geoserver.war 文件放入 webapps
//需要挂载配置文件 server.xml 和 web.xml、webapps、mapwebapps(为 geoserver)。后续需要配置 https 再进行证书路径配置或者可以放置 conf 中。
1 | docker run -d --name tomcat -p 7078:7078 -e TZ=Asia/Shanghai -v /usr/applin/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml -v /usr/applin/tomcat/conf/web.xml:/usr/local/tomcat/conf/web.xml -v /usr/applin/tomcat/webapps:/usr/local/tomcat/webapps -v /usr/applin/tomcat/logs:/usr/local/tomcat/logs -v /usr/applin/tomcat/cert:/usr/local/tomcat/cert --network lzx tomcat |
配置文件位于 “/usr/local/tomcat/conf/“中。默认情况下,操作“/manager/html”Web 应用程序所需的“manager-gui”角色中不包含任何用户。如果要使用此应用,则必须在 中定义此类用户”tomcat-users.xml”。
3.geoserver 的数据 data 文件配置
在 geoserver\WEB-INF\web.xml 中找到 GEOSERVER_DATA_DIR,并将该节点的路径改为容器内,或者是挂载到 tomcat 上的 data 路径【方便迁移】,否则将默认 geoserver/data 这个数据文件夹
顺便将 geoserver 部署至 tomcat
使用镜像 Nginx 代理
1.Docker 创建 Nginx 镜像
使用本地挂载数据卷,方便编写配置和映射数据
1 | docker run -d --name nginx -p 80:80 -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -v /usr/applin/nginx/webapp:/usr/share/nginx/html -v /usr/applin/nginx/nginx.conf:/etc/nginx/nginx.conf --network lzx nginx |
配置代理
server {
listen 80;
listen [::]:80;
server_name 【自己域名或location或_】;
location / {
rewrite ^/$ /geoserver/ permanent;
}
location /geoserver/ {
proxy_pass http://tomcat:7078/geoserver/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这里的 http://tomcat:7078/geoserver/;需要将 nginx 和 tomcat 加入 Docker 创建的网桥 lzx
1 | docker network create lzx |