当前位置:Gxlcms > 数据库问题 > PostgreSQL13+PostGIS31安装手册

PostgreSQL13+PostGIS31安装手册

时间:2021-07-01 10:21:17 帮助过:49人阅读

dba # useradd -u 501 -g dba -G root -d /usr/local/pgsql postgres

2. 添加postgres用户环境变量

$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
export PATH=$PGHOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S> "

3. 调整系统参数

# tail -n 12 /etc/sysctl.conf
vm.overcommit_memory=1
vm.overcommit_ratio=90
fs.aio-max-nr=1048576
fs.file-max= 7672460
net.ipv4.ip_local_port_range=9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
kernel.sem= 50100 64128000 50100 1280
kernel.shmall=5242880
kernel.shmmax=12884901888

# tail -n 4 /etc/security/limits.conf
postgres soft nproc 8192
postgres hard nproc 16384
postgres soft nofile 4096
postgres hard nofile 65536

4. 安装依赖包

# yum install -y python-devel perl-ExtUtils-Embed python-devel gcc-c++ openssl-devel readline readline-devel bzip2 zlib zlib-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel openldap openldap-devel libgeos-dev libproj-dev libgdal-dev xsltproc docbook-xsl docbook-xml imagemagick libmagickcore-dev dblatex tcl tcl-devel unixODBC unixODBC-devel libpng12 libpng12-devel libtiff libtiff-devel curl-devel

三 PostgreSQL数据库安装

$ mkdir /usr/local/pgsql
$ mkdir /usr/local/pgsql/{data,arch,plugin}
$ chown -R postgres.dba /usr/local/pgsql
$ tar -zxf postgresql-13.1.tar.gz
$ cd postgresql-13.1
$ ./configure --prefix=/usr/local/pgsql --with-segsize=32 --with-tcl --with-perl --with-python --with-gssapi --with-pam --with-openssl --with-libxml --with-libxslt
$ make world
$ make install-world
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/

$ cat /usr/local/pgsql/data/postgresql.conf | grep -v "^$" | grep -v "^#"
listen_addresses = *
port = 5432
max_connections = 600
superuser_reserved_connections = 3
unix_socket_directories = /tmp
shared_buffers = 16GB
huge_pages = try
temp_buffers = 256MB
work_mem = 256MB
maintenance_work_mem = 256MB
logging_collector = on
log_directory = log
log_filename = postgresql-%Y-%m-%d_%H%M%S.log
log_file_mode = 0600
log_rotation_size = 10MB

$ cat /usr/local/pgsql/data/pg_hba.conf | grep -v "^$" | grep -v "^#"
local   all             all                                     trust
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               md5
host    all             all             ::1/128                 trust

使用systemctl来管理PostgreSQL服务

# cat /usr/lib/systemd/system/pgsql.service 
[Unit]
Description=PostgreSQL database server
Documentation=https://www.postgresql.org/docs/
After=syslog.target
After=network.target

[Service]
Type=forking
User=postgres
Group=dba
Restart=always
LimitNOFILE=65536

# Note: avoid inserting whitespace in these Environment= lines, or you may
# break postgresql-setup.

# Location of database directory
Environment=PGDATA=/usr/local/pgsql/data/

# Maximum number of seconds pg_ctl will wait for postgres to start.  Note that
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=200

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s
KillMode=mixed
KillSignal=SIGINT
 

# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0

[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl start pgsql
# systemctl enable pgsql
# su - postgres
$ psql 
psql (13.1)
Type "help" for help.

postgres=# 

 

四 安装PostGIS扩展

1. 安装SQLITE3

$ tar -zxf sqlite-snapshot-202101022356.tar.gz
$ cd sqlite-snapshot-202101022356
$ ./configure --prefix=/usr/local/pgsql/plugin/sqlite
$ make
$ make install

2. 安装proj

$ tar -zxf proj-7.2.0.tar.gz
$ cd proj-7.2.0
$ ./configure --prefix=/usr/local/pgsql/plugin/proj SQLITE3_CFLAGS=-I/usr/local/pgsql/plugin/sqlite/include SQLITE3_LIBS="-L/usr/local/pgsql/plugin/sqlite/lib -lsqlite3"
$ make
$ make install
$ echo "/usr/local/pgsql/plugin/proj/lib" > /etc/ld.so.conf.d/proj.conf
$ ldconfig

3. 安装geos

$ tar -jxf geos-3.9.0.tar.bz2
$ cd geos-3.9.0
$ ./configure --prefix=/usr/local/pgsql/plugin/geos
$ make
$ make install
$ echo "/usr/local/pgsql/plugin/geos/lib" > /etc/ld.so.conf.d/geos.conf
$ ldconfig

4. 安装gdal

$ tar -zxf gdal-3.2.0.tar.gz
$ cd gdal-3.2.0
$ ./configure --prefix=/usr/local/pgsql/plugin/gdal --with-proj=/usr/local/pgsql/plugin/proj
$ make
$ make install
$ echo "/usr/local/pgsql/plugin/gdal/lib" > /etc/ld.so.conf.d/gdal.conf
$ ldconfig

5. 安装PostGIS

$ tar -zxf postgis-3.1.0.tar.gz
$ cd postgis-3.1.0
$ ./configure --prefix=/usr/local/pgsql/plugin/postgis --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/usr/local/pgsql/plugin/geos/bin/geos-config --with-gdalconfig=/usr/local/pgsql/plugin/gdal/bin/gdal-config --with-projdir=/usr/local/pgsql/plugin/proj --without-protobuf
$ make
$ make install

6. 创建PostgGIS扩展

postgres=# \c template1
template1=# CREATE EXTENSION hstore;
CREATE EXTENSION
template1=# CREATE EXTENSION postgis;
CREATE EXTENSION
template1=# CREATE EXTENSION postgis_topology;
CREATE EXTENSION
template1=# CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION
template1=# CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION
template1=# \dx
                                        List of installed extensions
          Name          | Version |   Schema   |                        Description                         
------------------------+---------+------------+------------------------------------------------------------
 fuzzystrmatch          | 1.1     | public     | determine similarities and distance between strings
 hstore                 | 1.7     | public     | data type for storing sets of (key, value) pairs
 plpgsql                | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis                | 3.1.0   | public     | PostGIS geometry and geography spatial types and functions
 postgis_tiger_geocoder | 3.1.0   | tiger      | PostGIS tiger geocoder and reverse geocoder
 postgis_topology       | 3.1.0   | topology   | PostGIS topology spatial types and functions
(6 rows)

 

PostgreSQL13+PostGIS31安装手册

标签:director   Fix   openldap   stand   systemd   flags   hba   address   class   

人气教程排行