GeoServer源码在eclipse上构建并在Docker部署发布

GeoServer源码在eclipse上构建

1.环境准备
安装jdk,安装Maven
2.下载源码
https://geoserver.org/release/stable/,选择源码下载,解压并在src目录下cmd使用Maven构建

3.构建
新版本尽量java11以上–环境变量改回原来java8的路径即可

mvn clean install -Dmaven.test.skip=true //清class文件,打包构建,跳过测试

打开cmd,切换到源码目录的src底下,写入命令:

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即可

二次开发

  1. 源码导入到eclipse中

  2. 右键工程-export-web-war file

  3. 导出war文件放入webapps上并重启tomcat即可

    上述如不行:

    则需要在项目src\web\app下,运行cmd:执行命令进行打包

    mvn clean install -DskipTests
    

    重点,如要其他项目架包,则在eclipse中右键去到当前项目架包src下,删掉target文件,然后在文件路径栏下cmd运行mvn命令

    mvn clean install -DskipTests
    

    成功后在target找到当前项目架包 并替换在tomcat的geoserver下lib目录下即可

Docker部署发布

1.环境准备
已安装Docker
在线安装命令

脚本安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
完毕

rpm安装
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
完毕

Docker配置镜像加速器,使用阿里云加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

个人加速地址登陆阿里云并在控制台中搜索“容器镜像服务 ACR“- “镜像加速“内有
2.创建tomcat镜像并将发布好geoserver.war文件放入webapps
//需要挂载配置文件server.xml和web.xml、webapps、mapwebapps(为geoserver)。后续需要配置https再进行证书路径配置或者可以放置conf中。

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

解释
          -d   后台运行
          --name 容器名称为tomcat
          -p 配置端口7078
          -e TZ=Asia/Shanghai //配置时区
          -v 本地挂载配置server.xml,需要配置端口
          -v 本地挂载配置web.xml   
          -v 本地挂载配置logs  tomcat启动日志
          -v 本地挂载配置webapps
          --network 加入网络lzx
无法挂载lib,只能先创建容器后再进行将jar复制到容器中。
docker cp /usr/applin/tomcat/lib tomcat:/usr/local/tomcat
*在使用原有镜像tomcat的lib中发现报错,而且本身也需要添加java-property-utils-1.9.jar和cors-filter-1.7.jar两个架包 *

重新启动
docker start tomcat

进入容器:docker exec -it tomcat bash

映像中的默认 Tomcat 环境为:
CATALINA_BASE:   /usr/local/tomcat
CATALINA_HOME:   /usr/local/tomcat
CATALINA_TMPDIR: /usr/local/tomcat/temp
JRE_HOME:        /usr
CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

配置文件位于 "/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镜像
使用本地挂载数据卷,方便编写配置和映射数据

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

//启动nginx
docker start 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

 docker network create lzx
 docker network connect  nginx lzx
 docker network connect  tomcat lzx
  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值