meface/docs/article/db/centospg.md

13 KiB
Raw Blame History

title date author tags categories
CentOS在线安装pg、postgis、geoserver 2022-06-06 ac
pg
postgis
geoserver
Database

CentOS在线安装pg、postgis、geoserver

1.查看环境

[root@localhost ~]# uname -r
3.10.0-1160.el7.x86_64
[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

2.安装PostgreSQL

官方教程:https://www.postgresql.org/download/linux/redhat/

image-20221028160310846

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:安装pg的服务端
sudo yum install -y postgresql13-server

# Optionally initialize the database and enable automatic start:初始化pg和设置自动启动
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13

卸载命令:yum remove postgresql13*

2.1创建用户和数据库

PostgresSQL安装后会自动创建postgres用户无密码

[root@localhost data]# su postgres
bash-4.2$ psql
psql (13.8)
Type "help" for help.

postgres=# create user test_user with password 'AuguritIot@2022';
CREATE ROLE
postgres=# create database test owner test_user;
CREATE DATABASE
postgres=# grant all privileges on database test to test_user;
GRANT

#\q可退出psql
#exit可退出bash命令行

2.2.配置连接

安装完pg之后默认是只接受本地访问连接。

如果想在其他主机上访问PostgreSQL数据库服务器需要配置pg_hba.confpostgresql.conf文件,以允许客户端连接。

  • **pg_hba.conf**配置对数据库的访问权限;(默认路径在/var/lib/pgsql/13/data

  • **postgresql.conf**配置PostgreSQL数据库服务器的相应的参数。默认路径在/var/lib/pgsql/13/data

1、取消listen_address的注释

#找到postgresql.conf
[root@localhost data]# vi postgresql.conf
# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/var/run/postgresql, /tmp'  # comma-separated list of directories
                                        # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                        # (change requires restart)
-- INSERT --
#Esc ,保存退出
:wq

2、增加

所有IP都是使用密码登录:host all all 0.0.0.0/0 md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

3、重启pg

systemctl restart postgresql-13.service

4、暴露端口号

# 查看防火墙状态
systemctl status firewalld
# 暴露5432端口 firewall-cmd --zone=public --add-port=3690/tcp --permanent
[root@localhost data]# firewall-cmd --zone=public --add-port=5432/tcp --permanent
success
# 重新启动防火墙
[root@localhost data]# firewall-cmd --reload
success
# 检查是否生效
[root@localhost data]# firewall-cmd --zone=public --query-port=5432/tcp
yes
# 查看防火墙开放的所有端口
firewall-cmd --list-ports

# 查看进程
ps -ef|grep svn
# 查看进程端口
netstat -lntup 

3安装PostGIS

官方教程:https://postgis.net/install/

1、安装postgis的依赖包

[root@localhost conf]# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

2、安装postgis

yum install postgis31_13.x86_64

这里的31_13是(postgis_v)_(pg_v),版本对应关系。

# 查看版本
[root@localhost /]# yum search postgis31
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * centos-sclo-rh: mirrors.aliyun.com
 * centos-sclo-sclo: mirrors.aliyun.com
 * epel: hkg.mirror.rackspace.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
============================================================================== N/S matched: postgis31 ==============================================================================
postgis31_10.x86_64 : Geographic Information Systems Extensions to PostgreSQL
postgis31_10-client.x86_64 : Client tools and their libraries of PostGIS
postgis31_10-devel.x86_64 : Development headers and libraries for PostGIS
postgis31_10-docs.x86_64 : Extra documentation for PostGIS
postgis31_10-gui.x86_64 : GUI for PostGIS
postgis31_10-utils.x86_64 : The utils for PostGIS
postgis31_11.x86_64 : Geographic Information Systems Extensions to PostgreSQL
postgis31_11-client.x86_64 : Client tools and their libraries of PostGIS
postgis31_11-devel.x86_64 : Development headers and libraries for PostGIS
postgis31_11-docs.x86_64 : Extra documentation for PostGIS
postgis31_11-gui.x86_64 : GUI for PostGIS
postgis31_11-utils.x86_64 : The utils for PostGIS
postgis31_12.x86_64 : Geographic Information Systems Extensions to PostgreSQL
postgis31_12-client.x86_64 : Client tools and their libraries of PostGIS
postgis31_12-devel.x86_64 : Development headers and libraries for PostGIS
postgis31_12-docs.x86_64 : Extra documentation for PostGIS
postgis31_12-gui.x86_64 : GUI for PostGIS
postgis31_12-utils.x86_64 : The utils for PostGIS
postgis31_13.x86_64 : Geographic Information Systems Extensions to PostgreSQL
postgis31_13-client.x86_64 : Client tools and their libraries of PostGIS
postgis31_13-devel.x86_64 : Development headers and libraries for PostGIS
postgis31_13-docs.x86_64 : Extra documentation for PostGIS
postgis31_13-gui.x86_64 : GUI for PostGIS
postgis31_13-utils.x86_64 : The utils for PostGIS
postgis31_14.x86_64 : Geographic Information Systems Extensions to PostgreSQL
postgis31_14-client.x86_64 : Client tools and their libraries of PostGIS
postgis31_14-devel.x86_64 : Development headers and libraries for PostGIS
postgis31_14-docs.x86_64 : Extra documentation for PostGIS
postgis31_14-gui.x86_64 : GUI for PostGIS
postgis31_14-utils.x86_64 : The utils for PostGIS

  Name and summary matches only, use "search all" for everything.

这里可以查看postgis与pg版本支持的对应关系。

3、在指定的数据库(test)中启用postgis空间扩展

[root@localhost pgsql]# su postgres
bash-4.2$ psql -d test
psql (13.8)
Type "help" for help.
test=# create extension postgis;
CREATE EXTENSION
test=# select postgis_version();
            postgis_version
---------------------------------------
 3.1 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

test=#
test=# \q
bash-4.2$ exit
exit

下面的语句是官网给出的PostGIS可安装的扩展命令

-- Enable PostGIS (as of 3.0 contains just geometry/geography)
CREATE EXTENSION postgis;
-- enable raster support (for 3+)
CREATE EXTENSION postgis_raster;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;

4.GeoServer

4.1 查看是否有jre

[root@localhost data]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

4.2 安装Tomcat

这里采用war包的形式部署GeoServer

1、下载、解压Tomcat。查看tomcat资源https://tomcat.apache.org/download-90.cgi

[root@localhost Downloads]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
[root@localhost Downloads]# tar xvf apache-tomcat-9.0.68.tar.gz -C /usr/local/
[root@localhost Downloads]# mv /usr/local/apache-tomcat-9.0.68/ /usr/local/tomcat/

2、修改tomcat配置

#查看全局中是否有配置JAVA_HOME变量找到Java的路径

[root@localhost bin]# cat /etc/profile
...
export JAVA_HOME=/newData/installPackage/jdk1.8.0_291
...

配置tomcat的方式有很多

  • 在全局的/etc/profile中添加TOMCAT_HOMECATALINA_HOMECLASS_PATH,网上示例:

     export JAVA_HOME=/usr/local/java
     export TOMCAT_HOME=/usr/local/tomcat
     export CATALINA_HOME=/usr/local/tomcat
     export CLASS_PATH=$JAVA_HOME/bin/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tool.jar
     export PATH=$PATH:/usr/local/java/bin:/usr/local/tomcat/bin
    
  • catalina.sh文件和setclasspath.sh文件添加Java的路径

    #修改setclasspath.sh
    vi /usr/local/tomcat/bin/setclasspath.sh
    #增加如下配置:
    export JAVA_HOME=/newData/installPackage/jdk1.8.0_291
    
    #修改catalina.sh
    vi /usr/local/tomcat/bin/catalina.sh
    #增加如下配置:
    export JAVA_HOME=/newData/installPackage/jdk1.8.0_291
    

3、修改端口

[root@localhost bin]# vi /usr/local/tomcat/conf/server.xml

#端口修改
...
<Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
:wq
# 暴露端口
[root@localhost bin]# firewall-cmd --add-port=8088/tcp --permanent
# 重新加载防火墙规则
[root@localhost bin]# firewall-cmd --reload

4、启动/停止

[root@localhost bin]# cd /usr/local/tomcat/bin && sh startup.sh

[root@localhost bin]# cd /usr/local/tomcat/bin && sh shutdown.sh

5、设置开机启动

配置Tomcat开机启动很简单将Tomcat配置为系统服务即可。

  • 配置tomcat9.service

    #创建Tomcat9服务文件
    vi /usr/lib/systemd/system/tomcat9.service
    
    #tomcat9.service文件内容
    
    [Unit]  
    Description=Tomcat9  
    After=syslog.target network.target remote-fs.target nss-lookup.target  
    
    [Service]  
    Type=forking  
    
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecReload=/usr/local/tomcat/bin/startup.sh
    ExecStop=/usr/local/tomcat/bin/shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    
  • 配置开机启动:

    #设置Tomcat9开机启动
    systemctl enable tomcat9
    
    #启动tomcat9服务
    systemctl start tomcat9
    

4.3 部署geoserver.war包

#下载
[root@localhost webapps]# pwd
/usr/local/tomcat/webapps
[root@localhost webapps]# wget https://sourceforge.net/projects/geoserver/files/GeoServer/2.21.2/geoserver-2.21.2-war.zip

下载失败!

本地下载完后用scp命令上传到服务器。

  • 用lrzsz上传lrzsz是一款程序在linux中可以代替ftp的上传和下载

  • 用WinSCP工具将war包上传webapp目录下

重新启动一下tomcat

补充

Tomcat配置跨域

  1. 引用跨域报 cors-filter.jarjava-property-utils.jar

  2. 修改Tomcat的配置文件config\web.xml,在根节点追加:

    <filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  3. 重启Tomcat