不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2025-03-29 21:58:31  修改时间:2025-03-31 21:27:59  分类:01.PostgreSQL  编辑

1、下载源码包

源码包放到了以下目录中:

/data/tmp/123/

2、安装编译工具、依赖包

yum -y install -y gcc readline-devel  zlib-devel

3、创建postgres的系统用户和用户组

useradd -r postgres

4、解压源码包

cd /data/tmp/123
tar -zxvf ./postgresql-14.17.tar.gz

5、编译

cd ./postgresql-14.17
./configure --prefix=/data/pgsql

6、构建、安装

make && make install

7、创建数据目录

mkdir -p /data/pgsql/data
# 修改目录权限(注意:非常重要)
chown postgres.postgres /data/pgsql/

8、切换到postgres用户操作

su postgres

# 初始化数据库
/data/pgsql/bin/initdb -D /data/pgsql/data

# 启动实例
/data/pgsql/bin/pg_ctl -D /data/pgsql/data -l logfile start

# 创建测试数据库
/data/pgsql/bin/createdb test

# 登录
/data/pgsql/bin/psql test

9、修改管理员用户密码

ALTER USER postgres WITH PASSWORD '123456';

10、授权远程登录

(1).修改两个配置文件

文件1:pg_hba.conf

vim /data/pgsql/data/pg_hba.conf

修改内容为:

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

文件2:postgresql.conf

修改内容为:

listen_addresses = '*'

(2).重新加载配置文件

# 先切换至 postgres 用户
su postgres
# 重新加载配置文件
/data/pgsql/bin/pg_ctl -D /data/pgsql/data reload

(3). 配置防火墙

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

11、配置postgreSQL开机启动服务

vim /usr/lib/systemd/system/postgresql.service

输入一下内容:

[Service]
User=postgres
Group=postgres
Type=forking
TimeoutSec=0

# 工作目录
WorkingDirectory=/data/pgsql

# 启动命令
ExecStart=/data/pgsql/bin/pg_ctl start -D /data/pgsql/data -l logfile
# 重新加载
ExecReload=/data/pgsql/bin/pg_ctl reload -D /data/pgsql/data
# 停止
ExecStop=/data/pgsql/bin/pg_ctl stop -D /data/pgsql/data

# 是否给服务分配独立的临时空间,需要
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

再次检查一下,安装目录权限:

上述脚本会在 /data/pgsql 下生成一个日志文件 logfile,如果没有生成文件权限,服务会启动失败

# 修改目录权限(注意:非常重要)
chown postgres.postgres /data/pgsql/

 

12、加载配置和启动

systemctl daemon-reload

# 设置开机自启动
systemctl enable postgresql

# 重新加载
systemctl restart postgresql
# 启动
systemctl start postgresql
# 关闭
systemctl stop postgresql
# 重启
systemctl restart postgresql

 

13、编译安装其他 扩展:ltree

特别注意:PostgreSQL源码自带了好多“扩展”,但是默认情况下,这些扩展几乎不会被安装

查看已安装的扩展(只有1个plpgsql):

[root@CentOS7-A extension]# pwd
/data/pgsql/share/extension
[root@CentOS7-A extension]# ll
-rw-r--r--. 1 root root   658 3月  29 21:15 plpgsql--1.0.sql
-rw-r--r--. 1 root root   193 3月  29 21:15 plpgsql.control

查看源码包中可安装的扩展包:

[root@CentOS7-A contrib]# pwd
/data/tmp/123/postgresql-14.17/contrib
[root@CentOS7-A contrib]# ll
drwxrwxrwx. 4 1107 1107  230 2月  18 05:29 adminpack
drwxrwxrwx. 5 1107 1107  256 2月  18 05:29 amcheck
drwxrwxrwx. 2 1107 1107   42 2月  18 05:29 auth_delay
drwxrwxrwx. 3 1107 1107   71 2月  18 05:29 auto_explain
drwxrwxrwx. 5 1107 1107  239 2月  18 05:29 bloom
drwxrwxrwx. 4 1107 1107  200 2月  18 05:29 bool_plperl
drwxrwxrwx. 4 1107 1107  230 2月  18 05:29 btree_gin
drwxrwxrwx. 5 1107 1107 4096 2月  18 05:29 btree_gist
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 citext
-rw-r--r--. 1 1107 1107   85 2月  18 05:15 contrib-global.mk
drwxrwxrwx. 5 1107 1107 4096 2月  18 05:30 cube
drwxrwxrwx. 6 1107 1107  234 2月  18 05:29 dblink
drwxrwxrwx. 4 1107 1107  134 2月  18 05:29 dict_int
drwxrwxrwx. 4 1107 1107  162 2月  18 05:29 dict_xsyn
drwxrwxrwx. 4 1107 1107  184 2月  18 05:29 earthdistance
drwxrwxrwx. 7 1107 1107  173 2月  18 05:29 file_fdw
drwxrwxrwx. 4 1107 1107  204 2月  18 05:29 fuzzystrmatch
drwxrwxrwx. 5 1107 1107 4096 2月  18 05:29 hstore
drwxrwxrwx. 4 1107 1107  210 2月  18 05:29 hstore_plperl
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 hstore_plpython
drwxrwxrwx. 2 1107 1107   95 2月  18 05:29 intagg
drwxrwxrwx. 6 1107 1107 4096 2月  18 05:29 intarray
drwxrwxrwx. 4 1107 1107  252 2月  18 05:29 isn
drwxrwxrwx. 4 1107 1107  205 2月  18 05:29 jsonb_plperl
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 jsonb_plpython
drwxrwxrwx. 4 1107 1107  159 2月  18 05:29 lo
drwxrwxrwx. 5 1107 1107 4096 3月  29 21:44 ltree
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 ltree_plpython
-rw-r--r--. 1 1107 1107 1478 2月  18 05:15 Makefile
drwxrwxrwx. 3 1107 1107   67 2月  18 05:29 oid2name
drwxrwxrwx. 2 1107 1107  101 2月  18 05:29 old_snapshot
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 pageinspect
drwxrwxrwx. 4 1107 1107   90 2月  18 05:29 passwordcheck
drwxrwxrwx. 2 1107 1107  221 2月  18 05:29 pg_buffercache
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 pgcrypto
drwxrwxrwx. 2 1107 1107  184 2月  18 05:29 pg_freespacemap
drwxrwxrwx. 2 1107 1107  180 2月  18 05:29 pg_prewarm
drwxrwxrwx. 2 1107 1107  159 2月  18 05:29 pgrowlocks
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 pg_stat_statements
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 pgstattuple
drwxrwxrwx. 4 1107 1107  142 2月  18 05:29 pg_surgery
drwxrwxrwx. 5 1107 1107 4096 2月  18 05:29 pg_trgm
drwxrwxrwx. 4 1107 1107  219 2月  18 05:29 pg_visibility
drwxrwxrwx. 4 1107 1107  274 2月  18 05:29 postgres_fdw
-rw-r--r--. 1 1107 1107 1131 2月  18 05:15 README
drwxrwxrwx. 5 1107 1107 4096 2月  18 05:30 seg
drwxrwxrwx. 4 1107 1107 4096 2月  18 05:29 sepgsql
drwxrwxrwx. 2 1107 1107 4096 3月  29 21:15 spi
drwxrwxrwx. 2 1107 1107  144 2月  18 05:29 sslinfo
drwxrwxrwx. 3 1107 1107   47 2月  18 05:29 start-scripts
drwxrwxrwx. 5 1107 1107  168 2月  18 05:29 tablefunc
drwxrwxrwx. 2 1107 1107   74 2月  18 05:29 tcn
drwxrwxrwx. 6 1107 1107  132 2月  18 05:29 test_decoding
drwxrwxrwx. 4 1107 1107  155 2月  18 05:29 tsm_system_rows
drwxrwxrwx. 4 1107 1107  155 2月  18 05:29 tsm_system_time
drwxrwxrwx. 4 1107 1107  220 2月  18 05:29 unaccent
drwxrwxrwx. 4 1107 1107  168 2月  18 05:29 uuid-ossp
drwxrwxrwx. 3 1107 1107   67 2月  18 05:29 vacuumlo
drwxrwxrwx. 4 1107 1107  168 2月  18 05:29 xml2

进入源码包,按需逐个安装这些扩展包:

(1) 安装 adminpack

[root@CentOS7-A Albert]# cd /data/tmp/123/postgresql-14.17/contrib/adminpack
[root@CentOS7-A Albert]# make && make install
make -C ../../src/backend generated-headers
make[1]: 进入目录“/data/tmp/123/postgresql-14.17/src/backend”
make -C catalog distprep generated-header-symlinks
make[2]: 进入目录“/data/tmp/123/postgresql-14.17/src/backend/catalog”
......
make[2]: 离开目录“/data/tmp/123/postgresql-14.17/src/backend/utils”
make[1]: 离开目录“/data/tmp/123/postgresql-14.17/src/backend”
/usr/bin/mkdir -p '/data/pgsql/lib'
/usr/bin/mkdir -p '/data/pgsql/share/extension'
/usr/bin/mkdir -p '/data/pgsql/share/extension'
/usr/bin/install -c -m 755  adminpack.so '/data/pgsql/lib/adminpack.so'
/usr/bin/install -c -m 644 ./adminpack.control '/data/pgsql/share/extension/'
/usr/bin/install -c -m 644 ./adminpack--1.0.sql ./adminpack--1.0--1.1.sql ./adminpack--1.1--2.0.sql ./adminpack--2.0--2.1.sql  '/data/pgsql/share/extension/'

(2) 安装 amcheck

cd /data/tmp/123/postgresql-14.17/contrib/amcheck
make && make install

(3) 安装 auth_delay

cd /data/tmp/123/postgresql-14.17/contrib/auth_delay
make && make install

(4) 安装 auto_explain

cd /data/tmp/123/postgresql-14.17/contrib/auto_explain
make && make install

(5) 安装 bloom

cd /data/tmp/123/postgresql-14.17/contrib/bloom
make && make install

(6) 安装 bool_plperl

# 安装依赖库
yum -y install perl-devel
 
cd /data/tmp/123/postgresql-14.17/
./configure --prefix=/data/pgsql --with-perl
 
cd /data/tmp/123/postgresql-14.17/contrib/bool_plperl
make && make install

(7) 安装 btree_gin

cd /data/tmp/123/postgresql-14.17/contrib/btree_gin
make && make install

(8) 安装 btree_gist

cd /data/tmp/123/postgresql-14.17/contrib/btree_gist
make && make install

(9) 安装 citext

cd /data/tmp/123/postgresql-14.17/contrib/citext
make && make install

(10) 安装 cube

cd /data/tmp/123/postgresql-14.17/contrib/cube
make && make install

(11) 安装 dblink

cd /data/tmp/123/postgresql-14.17/contrib/dblink
make && make install

(12) 安装 dict_int

cd /data/tmp/123/postgresql-14.17/contrib/dict_int
make && make install

(13) 安装 dict_xsyn

cd /data/tmp/123/postgresql-14.17/contrib/dict_xsyn
make && make install

(14) 安装 earthdistance

cd /data/tmp/123/postgresql-14.17/contrib/earthdistance
make && make install

(15) 安装 file_fdw

cd /data/tmp/123/postgresql-14.17/contrib/file_fdw
make && make install

(16) 安装 fuzzystrmatch

cd /data/tmp/123/postgresql-14.17/contrib/fuzzystrmatch
make && make install

(17) 安装 hstore

cd /data/tmp/123/postgresql-14.17/contrib/auth_delay
make && make install

(18) 安装 hstore_plperl

cd /data/tmp/123/postgresql-14.17/contrib/hstore_plperl
make && make install

(19) 安装 hstore_plpython

cd /data/tmp/123/postgresql-14.17/contrib/hstore_plpython
make && make install

(20) 安装 intagg

cd /data/tmp/123/postgresql-14.17/contrib/intagg
make && make install

(21) 安装 intarray

cd /data/tmp/123/postgresql-14.17/contrib/intarray
make && make install

(22) 安装 isn

cd /data/tmp/123/postgresql-14.17/contrib/isn
make && make install

(23) 安装 jsonb_plperl

cd /data/tmp/123/postgresql-14.17/contrib/jsonb_plperl
make && make install

(24) 安装 jsonb_plpython

cd /data/tmp/123/postgresql-14.17/contrib/jsonb_plpython
make && make install

(25) 安装 lo

cd /data/tmp/123/postgresql-14.17/contrib/lo
make && make install

(26) 安装 ltree

cd /data/tmp/123/postgresql-14.17/contrib/ltree
make && make install

(27) 安装 ltree_plpython

cd /data/tmp/123/postgresql-14.17/contrib/ltree_plpython
make && make install

(28) 安装 oid2name

cd /data/tmp/123/postgresql-14.17/contrib/oid2name
make && make install

(29) 安装 old_snapshot

cd /data/tmp/123/postgresql-14.17/contrib/old_snapshot
make && make install

(30) 安装 pageinspect

cd /data/tmp/123/postgresql-14.17/contrib/pageinspect
make && make install

(31) 安装 passwordcheck

cd /data/tmp/123/postgresql-14.17/contrib/passwordcheck
make && make install

(32) 安装 pg_buffercache

cd /data/tmp/123/postgresql-14.17/contrib/pg_buffercache
make && make install

(33) 安装 pgcrypto

cd /data/tmp/123/postgresql-14.17/contrib/pgcrypto
make && make install

(34) 安装 pg_freespacemap

cd /data/tmp/123/postgresql-14.17/contrib/pg_freespacemap
make && make install

(35) 安装 pg_prewarm

cd /data/tmp/123/postgresql-14.17/contrib/pg_prewarm
make && make install

(36) 安装 pgrowlocks

cd /data/tmp/123/postgresql-14.17/contrib/pgrowlocks
make && make install

(37) 安装 pg_stat_statements

cd /data/tmp/123/postgresql-14.17/contrib/pg_stat_statements
make && make install

(38) 安装 pgstattuple

cd /data/tmp/123/postgresql-14.17/contrib/pgstattuple
make && make install

(39) 安装 pg_surgery

cd /data/tmp/123/postgresql-14.17/contrib/pg_surgery
make && make install

(40) 安装 pg_trgm

cd /data/tmp/123/postgresql-14.17/contrib/pg_trgm
make && make install

(41) 安装 pg_visibility

cd /data/tmp/123/postgresql-14.17/contrib/pg_visibility
make && make install

(42) 安装 postgres_fdw

cd /data/tmp/123/postgresql-14.17/contrib/postgres_fdw
make && make install

(43) 安装 seg

cd /data/tmp/123/postgresql-14.17/contrib/seg
make && make install

(44) 安装 sepgsql

cd /data/tmp/123/postgresql-14.17/contrib/sepgsql
make && make install

(45) 安装 spi

cd /data/tmp/123/postgresql-14.17/contrib/spi
make && make install

(46) 安装 sslinfo

cd /data/tmp/123/postgresql-14.17/contrib/sslinfo
make && make install

(47) 安装 start-scripts

cd /data/tmp/123/postgresql-14.17/contrib/start-scripts
make && make install

(48) 安装 tablefunc

cd /data/tmp/123/postgresql-14.17/contrib/tablefunc
make && make install

(49) 安装 tcn

cd /data/tmp/123/postgresql-14.17/contrib/tcn
make && make install

(50) 安装 test_decoding

cd /data/tmp/123/postgresql-14.17/contrib/test_decoding
make && make install

(51) 安装 tsm_system_rows

cd /data/tmp/123/postgresql-14.17/contrib/tsm_system_rows
make && make install

(52) 安装 tsm_system_time

cd /data/tmp/123/postgresql-14.17/contrib/tsm_system_time
make && make install

(53) 安装 unaccent

cd /data/tmp/123/postgresql-14.17/contrib/unaccent
make && make install

(54) 安装 uuid-ossp

# 安装依赖库
yum -y install e2fsprogs-devel uuid-devel libuuid-devel

cd /data/tmp/123/postgresql-14.17/
./configure --prefix=/data/pgsql --with-uuid=ossp

cd /data/tmp/123/postgresql-14.17/contrib/uuid-ossp
make && make install

(55) 安装 vacuumlo

cd /data/tmp/123/postgresql-14.17/contrib/vacuumlo
make && make install

(56) 安装 xml2

# 安装依赖库
yum install -y postgresql-server-devel libxml2 libxml2-devel

cd /data/tmp/123/postgresql-14.17/
./configure --prefix=/usr/local/pgsql --with-uuid=ossp --with-libxml --with-libxslt

cd /data/tmp/123/postgresql-14.17/contrib/xml2
make && make install

 

 

参考:

  1. PostgreSQL安装uuid-ossp