1、下载源码包
- 历史版本源码包
- v14.17源码包:postgresql-14.17.tar.gz
源码包放到了以下目录中:
/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
参考: