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即可
二次开发
-
源码导入到eclipse中
-
右键工程-export-web-war file
-
导出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