- 一、下载对应版本源码包
源码下载地址:https://www.postgresql.org/ftp/source/
- 二、创建用户和安装目录
--创建用户
groupadd -g 60000 pgsql
useradd -u 60000 -g pgsql pgsql
echo "pgsql" | passwd --stdin pgsql
-- 创建目录
mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg15,soft}
chown -R pgsql:pgsql /postgresql
chmod -R 775 /postgresql
- 三、编译安装
-- 安装依赖包
yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib zlib-devel perl python36 tcl openssl ncurses-devel openldap pam perl-IPC-Run libicu-devel
-- 编译
su - pgsql
cd /postgresql/soft
tar zxvf postgresql-15.4.tar.gz
cd postgresql-15.4
./configure --prefix=/postgresql/pg15
make -j 8 && make install
make world -j 8 && make install-world
- 四、配置环境变量
cat >> ~/.bash_profile <<"EOF"
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=5432
export PGDATA=/postgresql/pgdata
export PGHOME=/postgresql/pg15
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
EOF
- 五、初始化数据库
/postgresql/pg15/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres --data-checksums
- 六、配置远程登陆
-- 修改参数
cat >> /postgresql/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
unix_socket_directories='/postgresql/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
cat >> /postgresql/pgdata/pg_hba.conf << EOF
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
EOF
-- 启动
su - pgsql
pg_ctl start
pg_ctl status
pg_ctl stop
-- 修改密码
pg_ctl start
psql
alter user postgres with password 'pgsql';
Exit
pg_ctl stop
- 七、配置系统服务
/etc/systemd/system/postgres.service
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network.target
[Service]
Type=forking
User=pgsql
Group=pgsql
Environment=PGPORT=5432
Environment=PGDATA=/postgresql/pgdata
OOMScoreAdjust=-1000
ExecStart=/postgresql/pg15/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/postgresql/pg15/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/postgresql/pg15/bin/pg_ctl reload -D ${PGDATA} -s
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
使用systemctl启动/停止/重启/查看PG:
systemctl start/stop/restart/status postgres