PG一键安装

1.RPM包一键安装

#!/bin/bash
#==============================================================#
# 脚本名     :   PG_RPM_ShellInstall.sh
# 创建时间   :   2024-03-08 22:00:00
# 更新时间   :   2024-03-09 23:00:00
# 描述      :    PostgreSQL 数据库RPM离线一键安装脚本(单机)
# Linux系统 :    Liunx7
# PG版本    :    15.6
# 脚本路径   :   /opt
# 版本      :   1.0.0
# 作者      :  
# 说明      :   其他版本替换相应的RPM包即可
#==============================================================#
#==============================================================#
#                         基础参数                              #
#==============================================================#
##需要设置的参数
#本机服务器IP
export MY_SERVER_IP=192.168.3.20
#本机服务器主机名
export MY_HOSTNAME=pghost
#PostgreSQL相关RPM包上传根目录
export MY_SOFT_BASE=/opt
#PG依赖
export MY_RPM=libzstd-1.5.5-1.el7.x86_64.rpm
#PG相关RPM包
export MY_PG_RPM1=postgresql15-libs-15.6-1PGDG.rhel7.x86_64.rpm
export MY_PG_RPM2=postgresql15-15.6-1PGDG.rhel7.x86_64.rpm
export MY_PG_RPM3=postgresql15-server-15.6-1PGDG.rhel7.x86_64.rpm
##PG RPM包存放的目录
export MY_DIRECTORY_SOFT=$MY_SOFT_BASE
##PG脚本存放的目录
export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE
#==============================================================#
#           PG安装相关配置                                       #
#==============================================================#
#PG根目录
export MY_PG_HOME=/pgccc
#PG数据目录
export PGDATA=$MY_PG_HOME/pgdata
#PG家目录
export PGHOME=/usr/pgsql-15
##判断依赖是否上传
if [ -f $MY_DIRECTORY_SOFT/$MY_RPM ]; then 
    echo "PG RPM Already Upload"
else
    echo "Please Upload PG RPM First"
    exit
fi
#==============================================================#
#           1.安装前准备工作                                     #
#==============================================================#
## 1.1 设置主机名
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/^HOSTNAME=/d' /etc/sysconfig/network
echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network
echo "1.1 Configure hostname completed."
## 1.2 修改hosts
cp /etc/hosts /tmp/confbak
cat >> /etc/hosts <<EOF
$MY_SERVER_IP $MY_HOSTNAME
EOF
echo "1.2 Configure Hosts Completed."
## 1.3 安装PG依赖及RPM包
cd $MY_DIRECTORY_SOFT
rpm -ivh $MY_RPM  >/dev/null 2>&1
rpm -ivh $MY_PG_RPM1  >/dev/null 2>&1
rpm -ivh $MY_PG_RPM2  >/dev/null 2>&1
rpm -ivh $MY_PG_RPM3  >/dev/null 2>&1
echo "1.3 Install rpm Software Completed."
## 1.4 关闭防火墙
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1
echo "1.4 Disable Firewalld Service Completed."
## 1.5 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1
echo "1.5 Disable SELINUX Completed."
## 1.6 创建相关目录
mkdir -p $MY_PG_HOME/{pgdata,archive,scripts,backup,pgsql-15,soft}
chown -R postgres:postgres $MY_PG_HOME
chmod -R 775 $MY_PG_HOME
echo "1.6 PG Directories Created Completed."
## 1.7 修改postgres用户环境变量
echo 'export PS1="[\u@\h \W]\$"'  >> /var/lib/pgsql/.bash_profile
su - postgres -c "
cat >> /var/lib/pgsql/.bash_profile <<EOF
export LANG=en_US.UTF-8
export PGPORT=5432
export PGDATA=$PGDATA
export PGHOME=$PGHOME
export PATH=$PGHOME/bin:$PATH:.
export PGUSER=postgres
export PGDATABASE=postgres
EOF
"
source /var/lib/pgsql/.bash_profile >/dev/null 2>&1
echo "1.7 Configure postgres Env Completed."
#==============================================================#
#           2.PG数据库安装工作                                    #
#==============================================================#
## 2.1 数据库初始化
su - postgres -c "initdb -U postgres -E utf8 -D $PGDATA"
echo "2.1 database initialized Completed."

## 2.2 配置数据库参数
su - postgres -c "
cat >> $PGDATA/postgresql.conf <<EOF
listen_addresses = '*'
port=5432
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
"
echo "postgresql.conf successfully"
su - postgres -c "
cat > $PGDATA/pg_hba.conf << EOF
# TYPE  DATABASE    USER    ADDRESS       METHOD
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
local  replication  all                    trust
EOF
"
echo "pg_hba.conf successfully"
#==============================================================#
#           3.开机自启管理                                       #
#==============================================================#
## 3.1 Server配置
cat >> /etc/systemd/system/postgresql.service <<EOF
[Unit]
Description=postgresql.service  
After=network.target
[Service]
Type=forking
User=postgres      
Group=postgres
WorkingDirectory=/var/lib/pgsql
ExecStart=$PGHOME/bin/pg_ctl start -D $PGDATA
ExecReload=$PGHOME/bin/pg_ctl restart -D $PGDATA
ExecStop=$PGHOME/bin/pg_ctl stop -D $PGDATA
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
echo "3.1 postgresql.service Add successfully"
## 3.2 服务加载
systemctl daemon-reload
systemctl start postgresql.service
systemctl enable postgresql.service
echo "3. service Load successfully"
echo "PostgreSQL successfully installed"

2.源码一键安装

#!/bin/bash
#==============================================================#
# 脚本名     :   PG_SOUECE_ShellInstall.sh
# 创建时间   :   2024-03-08 22:00:00
# 更新时间   :   2024-03-09 23:00:00
# 描述      :    PostgreSQL数据库源码一键安装脚本(单机)
# Linux系统 :    Liunx7
# PG版本    :    15.6
# 脚本路径   :   /opt
# 版本      :   1.0.0
# 作者      :   
# 说明      :   其他版本替换相应的源码包即可
#==============================================================#
#==============================================================#
#                         基础参数                              #
#==============================================================#
##需要设置的参数
#本机服务器IP
export MY_SERVER_IP=192.168.3.20
#本机服务器主机名
export MY_HOSTNAME=pghost
#PostgreSQL相关RPM包上传根目录
export MY_SOFT_BASE=/opt
#PG源码包
export PG_SOFT=postgresql-15.6.tar.gz
#PG版本
export PG_VERSION=15.6
## ISO系统镜像存放目录
export MY_DIRECTORY_ISO=/opt
export MY_SOFT_ISO=CentOS-7-x86_64-DVD-2009.iso
##PG源码包存放的目录
export MY_DIRECTORY_SOFT=$MY_SOFT_BASE
##PG脚本存放的目录
export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE
#==============================================================#
#           PG安装相关配置                                       #
#==============================================================#
#PG根目录
export MY_PG_HOME=/pgccc
#PG数据目录
export PGDATA=$MY_PG_HOME/pgdata
#PG家目录
export PGHOME=/pgccc/pgsql-15
##PG源码编译目录
export MY_PG_COMPILE=/pgccc/soft/postgresql-$PG_VERSION
##判断依赖是否上传
if [ -f $MY_DIRECTORY_SOFT/$PG_SOFT ]; then 
    echo "PG Source Soft Already Upload"
else
    echo "Please Upload PG Source Soft First"
    exit
fi
#==============================================================#
#                        挂载光驱                               #
#==============================================================#
## 1.将ISO系统镜像上传到系统
## 2.将数据库软件上传到系统
## 确认是否有光驱设备
echo " "
MY_ISO=`mount | grep iso9660`
if [ ! -n "$MY_ISO" ];then
    echo "Please Mount A CD ISO Image First"
else
    mount /dev/cdrom /mnt/ >/dev/null 2>&1
    echo "Mount A CD ISO Image Already"
fi
#挂载镜像
if [ -f $MY_DIRECTORY_SOFT/$MY_SOFT_ISO ]; then 
mount -o loop $MY_DIRECTORY_ISO/$MY_SOFT_ISO /mnt  >/dev/null 2>&1
    echo "ISO Already Mount"
else
    echo "Please Upload ISO First"
fi
#==============================================================#
#           1.本地yum配置                                       #
#==============================================================#
mkdir -p /tmp/confbak/yumbak/
mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1
cat >> /etc/yum.repos.d/my.repo  <<EOF
[Oracle]
name=oracle_install
baseurl=file:///mnt/
gpgcheck=0
enabled=1
EOF
yum -y install bc  >/dev/null 2>&1
echo "1 Configure yum Completed."
#==============================================================#
#           2.安装前准备工作                                     #
#==============================================================#
## 2.1 设置主机名
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/^HOSTNAME=/d' /etc/sysconfig/network
echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network
echo "2.1 Configure hostname completed."
## 2.2 修改hosts
cp /etc/hosts /tmp/confbak
cat >> /etc/hosts <<EOF
$MY_SERVER_IP $MY_HOSTNAME
EOF
echo "2.2 Configure Hosts Completed."
## 2.3 安装PG依赖
yum install -y openssl openssl-devel pam pam-devel libxml2 libxml2-devel \
libxslt libxslt-devel perl perl-devel python-devel perl-ExtUtils-Embed \
readline readline-devel bzip2 zlib zlib-devel \
gettext gettext-devel bison flex gcc gcc-c++ \
boost-devel gmp* mpfr* libevent* libpython3.6m >/dev/null 2>&1
echo "2.3 Install PG dependency Completed."
## 2.4 关闭防火墙
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1
echo "2.4 Disable Firewalld Service Completed."
## 2.5 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1
echo "2.5 close SELinux completed."
## 2.6 建立用户和组
if id -u postgres >/dev/null 2>&1; then
    echo "postgres User Exists."
else
    groupadd -g 60000 postgres  >/dev/null 2>&1
    useradd -u 60000 -g postgres postgres >/dev/null 2>&1
    echo postgres | passwd --stdin postgres  >/dev/null 2>&1
    echo "1.6 User postgres Created Completed."
fi
echo "2.6 Establish users and groups Completed."
## 2.7 创建相关目录
mkdir -p $MY_PG_HOME/{pgdata,archive,scripts,backup,pgsql-15,soft}
chown -R postgres:postgres $MY_PG_HOME
chmod -R 775 $MY_PG_HOME
echo "2.7 PG Directories Created Completed."
## 2.8 修改postgres用户环境变量
echo 'export PS1="[\u@\h \W]\$"'  >> /home/postgres/.bash_profile
su - postgres -c "
cat >> /home/postgres/.bash_profile <<EOF
export LANG=en_US.UTF-8
export PGPORT=5432
export PGDATA=$PGDATA
export PGHOME=$PGHOME
export PATH=$PGHOME/bin:$PATH:.
export PGUSER=postgres
export PGDATABASE=postgres
EOF
"
source /home/postgres/.bash_profile >/dev/null 2>&1
echo "2.8 Configure postgres Env Completed."
#==============================================================#
#           3.PG数据库安装工作                                    #
#==============================================================#
## 3.1 解压数据库软件
echo "3.1 Start Unzip PG Software."
cp $MY_DIRECTORY_SOFT/$PG_SOFT $MY_PG_HOME/soft
cd $MY_PG_HOME/soft
tar -zxvf $MY_PG_HOME/soft/$PG_SOFT
chown -R postgres:postgres $MY_PG_HOME/soft
chmod 755 -R $MY_PG_HOME/soft
echo "3.1 Unzip PG Software Completed."
## 3.2 PG编译安装
su - postgres -c "$MY_PG_COMPILE/configure --prefix=$PGHOME --without-readline" >/dev/null 2>&1
cd $MY_PG_COMPILE
su - postgres -c "make -j 4 && make install" >/dev/null 2>&1
su - postgres -c "$PGHOME/bin/initdb -D $PGDATA -E UTF8 --locale=en_US.utf8 -U postgres" >/dev/null 2>&1
echo "3.2 PG Compile Installation."
## 3.3 配置数据库参数
su - postgres -c "
cat >> $PGDATA/postgresql.conf <<EOF
listen_addresses = '*'
port=5432
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
"
echo "postgresql.conf successfully"
su - postgres -c "
cat > $PGDATA/pg_hba.conf << EOF
# TYPE  DATABASE    USER    ADDRESS       METHOD
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
local  replication  all                    trust
EOF
"
echo "pg_hba.conf successfully"
echo "3.3 Configure database parameters successfully"
#==============================================================#
#           4.开机自启管理                                       #
#==============================================================#
## 4.1 Server配置
cat >> /etc/systemd/system/postgresql.service <<EOF
[Unit]
Description=postgresql.service  
After=network.target
[Service]
Type=forking
User=postgres      
Group=postgres
WorkingDirectory=$PGHOME
ExecStart=$PGHOME/bin/pg_ctl start -D $PGDATA
ExecReload=$PGHOME/bin/pg_ctl restart -D $PGDATA
ExecStop=$PGHOME/bin/pg_ctl stop -D $PGDATA
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
echo "4.1 postgresql.service Add successfully"
## 4.2 服务加载
systemctl daemon-reload
systemctl start postgresql.service
systemctl enable postgresql.service
echo "4. service Load successfully"
echo "PostgreSQL successfully installed"

3.总结

在大批量部署的过程中,一键化脚本安装是必备的一个手段

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值