本文采用make源码编译安装PostgreSQL方式,尽管相较于yum安装方式,该方式略微复杂,但为了便于管理和维护(例如:便于指定数据库安装目录、修改参数、安装扩展等),故以下详细介绍该安装方式。
源码安装包下载地址:http://www.postgresql.org/ftp/source/
如下图,本文以下载14.7版本为例
1、连网环境安装
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
2、离线环境安装
连网环境采用以下方式下载包,然后copy至离线环境即可。
离线依赖包下载地址:https://pkgs.org/
# 使用yumdownloader下载
# 安装yum-utils包,内部包含yumdownloader等命令
yum install yum-utils
# 例如下载docker.x86_64包
yumdownloader --resolve --destdir=/pack docker.x86_64
# 离线环境使用下面命令安装包
rpm -ivh *.rpm --nodeps --force
1、创建安装目录并解压安装包
# 创建安装目录
mkdir -p /pgsql/postgresql
# 上传至安装目录并解压安装包
tar -zxvf postgresql-14.7.tar.gz
2、配置PostgreSQL源码
# 进入解压后的文件夹
cd postgresql-14.7
# 配置源码
./configure --prefix=/pgsql/postgresql
该过程可根据需要指定编辑参数,例如参数说明如下:
–prefix=prefix:安装到prefix指向的目录;默认为/usr/local/pgsql
–bindir=dir:安装应用程序到dir;默认为prefix/bin
–with-docdir=dir:安装文档到dir;默认为prefix/doc
–with-pgport=port:设置默认的服务器端网络连接服务TCP端口号
–with-tcl:为服务端提供Tcl存储过程支持
–with-perl:为服务端提供Perl存储过程支持
–with-python:为服务端提供Python存储过程支持
3、编辑安装
# 确保进入解压安装包的目录
cd /pgsql/postgresql/postgresql-14.7
# 编辑安装
make && make install
4、创建用户、组、数据目录
这个数据库主目录可随实际情况而不同,这里我们的主目录是在/pgsql/postgresql/data目录。
# 创建组
groupadd postgres
# 创建用户
useradd -g postgres postgres
# 创建数据目录
mkdir –p /pgsql/postgresql/data
# 修改目录归属
chown postgres:postgres /pgsql/postgresql/data
5、配置环境变量
root用户执行以下操作
# 编辑修改.bash_profile文件
vi /home/postgres/.bash_profile
文件末尾增加以下内容:
export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH= P A T H : PATH: PATH:HOME/bin:$PGHOME/bin
# 使修改的.bash_profile文件立即生效
source /home/postgres/.bash_profile
6、初始化数据库
出现下图信息表示安装完成。
# 切换至postgres用户
su - postgres
# 使用initdb命令初始化数据库
initdb
为了让数据库使用更方便,可以修改/pgsql/postgresql/data目录下的两个文件:
postgresql.conf :配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf :配置对数据库的访问权限。
vi /pgsql/postgresql/data/postgresql.conf
修改内容:
listen_addresses = '*'
其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。
vi /pgsql/postgresql/data/pg_hba.conf
# 以下第一条为增加内容
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/32 trust
添加第一条后 ,这样局域网的人才能访问
1、修改启动脚本
PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。
文件名为linux的文件即为linux系统上的启动脚本。
# copt至系统的/etc/init.d/目录并命名为postgresql
cp /pgsql/postgresql-14.7/contrib/start-scripts /etc/init.d/postgresql
# 修改/etc/init.d/postgresql文件的两个变量
vi /etc/init.d/postgresql
修改内容:
prefix设置为postgresql的安装路径:/pgsql/postgresql
PGDATA设置为postgresql的数据目录路径:/pgsql/postgresql/data
2、设置开机自动动
# 设置postgresql服务开机自启动
chkconfig --add postgresql
# 开放5432端口
irewall-cmd --zone=public --add-port=5432/tcp --permanent
# 配置立即生效
firewall-cmd --reload
# 启动数据库
pg_ctl start
查看postgresql进程,出现下图信息表示启动成功
ps -ef | grep postgres
参照本文可以保证安装程序,路径及配置信息可根据自己需要进行修改。