geoserver+nginx

1. 安装jdk[centos7]

# 参考https://www.4gml.com/thread-121.htm
yum search java-11-openjdk
yum install -y java-11-openjdk
java -version
which java
vim /etc/profile
source /etc/profile
   
#java
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64
export JRE_HOME=/etc/alternatives/jre_11_openjdk
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

2. 安装tomcat

#https://subscription.packtpub.com/book/networking_and_servers/9781783287697/1/ch01lvl1sec09/installing-apache-tomcat
# core目录下tar.gz
wget https://mirrors.koehn.com/apache/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.tar.gz
tar xf apache-tomcat-9.0.38.tar.gz -C /opt
cd /opt/apache-tomcat-9.0.38/
# Running Apache Tomcat as a service
groupadd tomcat
useradd -s /bin/bash -g tomcat tomcat
chown -R  tomcat:tomcat /opt/apache-tomcat-9.0.38/
# create a service control script
vim /etc/systemd/system/tomcat.service
[root@t-03 ~]# cat /etc/systemd/system/tomcat.service
        [Unit]
        Description=Tomcat 9 servlet container
        After=network.target
​
        [Service]
        Type=forking
​
        User=tomcat
        Group=tomcat
​
        Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el7_8.x86_64"
        Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
​
        Environment="CATALINA_BASE=/opt/apache-tomcat-9.0.38"
        Environment="CATALINA_HOME=/opt/apache-tomcat-9.0.38"
        Environment="CATALINA_PID=/opt/apache-tomcat-9.0.38/temp/tomcat.pid"
        Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
​
        ExecStart=/opt/apache-tomcat-9.0.38/bin/startup.sh
        ExecStop=/opt/apache-tomcat-9.0.38/bin/shutdown.sh
​
        [Install]
        WantedBy=multi-user.target
chmod 777 /opt/apache-tomcat-9.0.38/
# test[注意放开8080端口]
systemctl start/status/stop/restart  tomcat.service

3. 设置tomcat允许跨域

添加在每一个tomcat安装目录下 conf/web.xml中,(在 589行左右)

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

4. 嵌入geoserver

#参考https://subscription.packtpub.com/book/networking_and_servers/9781783287697/1/ch01lvl1sec10/deploying-geoserver-to-apache-tomcat
wget http://sourceforge.net/projects/geoserver/files/GeoServer/2.17.2/geoserver-2.17.2-bin.zip
unzip geoserver-2.15.2-bin.zip -d /opt/apache-tomcat-9.0.38/webapps/
chown -R tomcat:tomcat geoserver-2.15.2/
# 利用Apache Tomcat的自动部署功能,复制GeoServer WAR(Web存档)文件到webapps路径下,直接连接到appBase正在运行的Tomcat实例,Tomcat将检测到WAR文件的存在,然后对其进行部署以供使用
mv geoserver.war /opt/apache-tomcat-9.0.38/webapps
​
[root@t-03 webapps]# ls -l
      total 99904
      drwxr-x--- 15 tomcat tomcat      4096 Sep 23 14:46 docs
      drwxr-x---  6 tomcat tomcat      4096 Sep 23 14:46 examples
      drwxr-x---  5 tomcat tomcat      4096 Sep 23 16:58 geoserver
      drwxr-xr-x 10 tomcat tomcat      4096 Jun 28  2019 geoserver-2.15.2
      -rwxr-xr-x  1 tomcat tomcat 102270220 Sep 23 16:56 geoserver.war
      drwxr-x---  5 tomcat tomcat      4096 Sep 23 14:46 host-manager
      drwxr-x---  6 tomcat tomcat      4096 Sep 23 14:46 manager
      drwxr-x---  3 tomcat tomcat      4096 Sep 23 14:46 ROOT
      
# test,用户密码默认为admin|geoserver,查看数据是否正常显示
http://ip:8080/geoserver/web/

5. 修改tomcat默认端口

1. # 修改tomcat服务端口
[root@t-03 conf]# pwd
    /opt/apache-tomcat-9.0.38-2/conf/server.xml
    <Server port="8006" shutdown="SHUTDOWN">
        <Connector port="7791" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8444" />
                   
# 修改这三个端口[加一]
2. 将geoserver.war上传至每个节点下的webapps目录下
3. 启动tomcat
4. 编辑web.xml,设置统一的数据目录
5. 配置nginx集群
      yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
      mkdir /usr/local/nginx
      wget https://nginx.org/download/nginx-1.18.0.tar.gz
      tar xf nginx-1.18.0.tar.gz
      cd nginx-1.18.0
      ./configure
      make && make install
      vim conf/nginx.conf
      /usr/local/nginx/sbin/nginx -c /usr/local/nginx/nginx-1.18.0/conf/nginx.conf
      lsof -i:8000
     
# java环境问题/etc/profile
​
6. nginx.conf 信息[一个机器有多个nginx可能会导致请求混乱]
server
{
    listen 80;
  listen 443 ssl http2;
    server_name geoserver.citydnatech.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/geoserver.citydnatech.com;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/geoserver.citydnatech.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/geoserver.citydnatech.com/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-00.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/geo.citydnatech.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location / {
        # proxy_pass http://geoserver;
        proxy_pass http://geoserver.citydnatech.com;
    }
​
    access_log  /www/wwwlogs/geoserver.citydnatech.com.log;
    error_log  /www/wwwlogs/geoserver.citydnatech.com.error.log;
}
​
upstream geoserver.citydnatech.com {
        ip_hash;
        server 192.168.10.218:7791;
        server 192.168.10.218:7792;
        server 172.17.28.52:7791;
    }

6. oss挂载ecs

#oss挂载ecs[oss更新数据,挂载点会同步更新,请注意数据的准确与安全性]
#https://help.aliyun.com/document_detail/153892.html?spm=a2c4g.11186623.6.890.71672e08ggMbx6
wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
sudo yum localinstall ossfs_1.80.6_centos7.0_x86_64.rpm
echo citydna-geoserver:LTAI4Fxwub9FLQ:jRO7NJKwQaIAKz8m > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
ossfs citydna-geoserver /opt/GEOSERVER_DATA_DIR -ourl=http://oss-cn-beijing-internal.aliyuncs.com
​

7. 登陆各个节点做图层发布

  1. 登陆http://ip:port/geoserver/web/

2.新建工作区–>添加新的数据存储[需要添加mongo插件和矢量切片的插件],数据存储的连接参数下的schema_store选择指定路径file:///opt/GEOSERVER_DATA_DIR/工作区

# 下载mongo插件
wget http://sourceforge.net/projects/geoserver/files/GeoServer/2.15.2/extensions/geoserver-2.15.2-mongodb-plugin.zip
# 下载矢量切片的插件
wget http://sourceforge.net/projects/geoserver/files/GeoServer/2.15.2/extensions/geoserver-2.15.2-vectortiles-plugin.zip
# 放置/opt/apache-tomcat-9.0.38/webapps/geoserver/WEB-INF/lib/目录下
[root@t-03 lib]# ls geoserver-2.15.2-mongodb-plugin.zip
geoserver-2.15.2-mongodb-plugin.zip
[root@t-03 lib]# ls geoserver-2.15.2-vectortiles-plugin.zip
geoserver-2.15.2-vectortiles-plugin.zip
# 解压后重启geoserver


  1. 测试查看日志
[root@t-03 logs]# pwd
/opt/apache-tomcat-9.0.38/logs
[root@t-03 logs]# tail -f localhost_access_log.2020-xx-xx.txt
  1. geoserver 数据迁移
# 拷贝geoserver下所有数据,重启
/opt/apache-tomcat-9.0.38-2/webapps/geoserver

问题与解决:
数据迁移可只拷贝geoserver下data文件夹,但相关jar包可能出问题,报错
“在用Geoserver发布Postgis发布的图层后,去LayerPreview中预览,但是选openlayers时,没有跳转到预览页面,而是弹出了下载WMS”,是因为缺少相关jar包导致,故拷贝geoserver下data整个文件夹和lib整个文件夹,包括/opt/apache-tomcat-9.0.38-2/webapps/geoserver/WEB-INF/lib,du查看文件大小进行文件是否缺失检测


版权声明:本文为tryyourbest0928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。