简介
部署环境
操作系统:
Linux Centos 7.4 x64
运行内存:4G
测试环境用户的运行内存比较小
CPU:8核
核心多安装速度快
数据库:PostgreSQL
数据库版本:12.5
需要的依赖包:
1.GCC
用于数据库安装编译
1.libgomp-4.8.5-44.el7.x86_64.rpm
2.cpp-4.8.5-44.el7.x86_64.rpm
3.glibc-common-2.17-317.el7.x86_64.rpm
4.libgcc-4.8.5-44.el7.x86_64.rpm
5.glibc-2.17-317.el7.x86_64.rpm
6.glibc-devel-2.17-317.el7.x86_64.rpm
7.glibc-headers-2.17-317.el7.x86_64.rpm
8.gcc-4.8.5-44.el7.x86_64.rpm
9.kernel-headers-3.10.0-1160.el7.x86_64.rpm
10.kernel-3.10.0-1160.el7.x86_64.rpm
11.libmpc-1.0.1-3.el7.x86_64.rpm
12.mpfr-3.1.1-4.el7.x86_64.rpm
2.lsof
用于查询运行中的服务端口,运维时使用
1.lsof-4.87-6.el7.x86_64.rpm
3.readline
安装编译依赖包
1.ncurses-base-5.9-14.20130511.el7_4.noarch.rpm
2.ncurses-5.9-14.20130511.el7_4.x86_64.rpm
3.ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm
4.ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
5.readline-devel-6.2-11.el7.x86_64.rpm
4.telnet
用于服务端口测试
1.telnet-0.17-64.el7.x86_64.rpm
5.zlib
安装编译依赖包-有18
版本和19
版本,取其一即可,建议用19版本
version 18
:
1.zlib-1.2.7-18.el7.x86_64.rpm
2.zlib-devel-1.2.7-18.el7.x86_64.rpm
version 19
:
1.zlib-1.2.7-19.el7_9.x86_64.rpm
2.zlib-devel-1.2.7-19.el7_9.x86_64.rpm
运行文件:run.sh
以上文件需要到centos官网下载
如果需要下载已经整理好的文件,请点此跳转至下载中心
脚本内容
新增了开机自启脚本
#!/bin/bash
#当前目录的绝对路径
curr_Dir=$(cd `dirname $0` ; pwd)
echo 当前所在目录:$curr_Dir
#服务端口
PORT=5432
echoSuffix="==》:"
userdel -r postgres
echo 第$((a=$a+1))步$echoSuffix创建用户
adduser postgres
#新创建的用户并不能使用sudo命令,需要给他添加授权。
echo 第$((a=$a+1))步$echoSuffix添加sudoers文件可写权限
chmod -v u+w /etc/sudoers
echo 第$((a=$a+1))步$echoSuffix添加用户权限
echo "postgres ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
echo 第$((a=$a+1))步$echoSuffix初始化目录
mkdir /home/postgres/disk_d
mkdir /home/postgres/disk_d/applications
mkdir /home/postgres/disk_d/applications/jdk_11
mkdir /home/postgres/disk_d/applications/service/
mkdir /home/postgres/disk_d/applications/service/apps
mkdir /home/postgres/disk_d/applications/service/nginx
mkdir /home/postgres/disk_d/applications/service/postgresql
mkdir /home/postgres/disk_d/applications/service/postgresql/data
mkdir /home/postgres/disk_d/applications/service/tomcats
mkdir /home/postgres/disk_d/data
mkdir /home/postgres/disk_d/datasource
mkdir /home/postgres/disk_d/installpackage
echo 第$((a=$a+1))步$echoSuffix将windows下文件上传到了linux服务器,导致有文件的执行权限丢失。
chmod 777 ./gcc_Install/*.*
chmod 777 ./readline-devel_Install/*.*
chmod 777 ./zlib_Install/version-19/*.*
chmod 777 ./telnet/*.*
chmod 777 ./lsof/*.*
echo 第$((a=$a+1))步$echoSuffix安装GCC依赖包
rpm -Uvh ./gcc_Install/*.rpm --nodeps --force
echo 第$((a=$a+1))步$echoSuffix安装readline依赖包
rpm -Uvh ./readline-devel_Install/*.rpm --nodeps --force
echo 第$((a=$a+1))步$echoSuffix安装zlib依赖包
rpm -Uvh ./zlib_Install/version-19/*.rpm --nodeps --force
echo 第$((a=$a+1))步$echoSuffix安装telnet依赖包
rpm -Uvh ./telnet/*.rpm --nodeps --force
echo 第$((a=$a+1))步$echoSuffix安装lsof端口查询依赖包
rpm -Uvh ./lsof/*.rpm --nodeps --force
#临时变量
PGHOME=/home/postgres/disk_d/applications/service/postgresql
PGDATA=$PGHOME/data
echo 第$((a=$a+1))步$echoSuffix将用户环境变量写入/home/postgres/bin目录下的.bashrc文件
echo PGHOME=$PGHOME >> /home/postgres/.bashrc
echo export PGHOME >> /home/postgres/.bashrc
echo PGDATA=$PGDATA >> /home/postgres/.bashrc
echo export PGDATA >> /home/postgres/.bashrc
echo PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME >> /home/postgres/.bashrc
echo export PATH >> /home/postgres/.bashrc
echo 第$((a=$a+1))步$echoSuffix为用户授权目录下所有子目录权限
chown -R postgres /home/postgres/disk_d/applications/service/postgresql
chown -R postgres /home/postgres/disk_d/data
echo 第$((a=$a+1))步$echoSuffix删除已解压的数据库安装包,重新解压缩数据库文件
rm -rf ./postgresql-12.5
echo 第$((a=$a+1))步$echoSuffix解压数据库安装包
tar -xf postgresql-*.tar.gz
echo 第$((a=$a+1))步$echoSuffix进入已解压的数据库目录
cd postgresql-12.5
echo 第$((a=$a+1))步$echoSuffix配置初始化
#Shell 默认提供了获取命令执行输出的方法,即用 ` 号将需要获取输出的操作括起来,并赋值给一个变量,则 Shell 会在等待命令执行完成后把输出内容用于赋值,所以,这就是实现了我们需要的等待效果,并且时间精准性很高。
configureOut=`$curr_Dir/postgresql-12.5/configure --prefix /home/postgres/disk_d/applications/service/postgresql`
echo $configureOut
echo 第$((a=$a+1))步$echoSuffix执行安装编译
configureOut=`make clean; make`
echo $configureOut
echo 第$((a=$a+1))步$echoSuffix执行安装
configureOut=`make install`
echo $configureOut
configureOut=""
echo 第$((a=$a+1))步$echoSuffix使用指定的新增数据库用户,重新启用配置文件 开始
su - postgres <<EOF
source /home/postgres/.bashrc
echo $echoSuffix数据库用户环境变量已初始化完成
echo 第$((a=$a+1))步$echoSuffix初始化数据库
$PGHOME/bin/initdb
echo $echoSuffix数据库初始化完成
echo 第$((a=$a+1))步$echoSuffix使用sed命令修改配置文件
echo $echoSuffix将【host all all 127.0.0.1/32 trust 】替换为【host all all 0.0.0.0/0 trust 】
sed -i "s/host all all 127.0.0.1\/32 trust/host all all 0.0.0.0\/0 trust/g" $PGDATA/pg_hba.conf
#将前面注释符“#”取消
sed -i "s/#listen_addresses = /listen_addresses = /g" $PGDATA/postgresql.conf
#替换掉localhost,将地址改为*
sed -i "s/listen_addresses = 'localhost'/listen_addresses = '*' /g" $PGDATA/postgresql.conf
#启用端口
sed -i "s/#port = 5432/port = $PORT/g" $PGDATA/postgresql.conf
#修改连接数
sed -i "s/max_connections = 100 /max_connections = 1000 /g" $PGDATA/postgresql.conf
echo $echoSuffix配置文件初始化完成
echo 第$((a=$a+1))步$echoSuffix启动数据库
$PGHOME/bin/pg_ctl start
echo $echoSuffix数据库已启动
echo $echoSuffix创建表空间【hospitaltable】
$PGHOME/bin/psql -h127.0.0.1 -p$PORT -U postgres <<tableSpaceCreate
create tablespace pgtbl_test location '/home/postgres/disk_d/applications/service/postgresql/data/';
tableSpaceCreate
echo $echoSuffix表空间已创建【hospitaltable】
echo $echoSuffix设置数据库密码
$PGHOME/bin/psql -h127.0.0.1 -p$PORT -U postgres <<PWDSETSQL
alter role postgres with password 'p@ssw0rd';
PWDSETSQL
echo $echoSuffix数据库密码已设置【p@ssw0rd】
echo 第$((a=$a+1))步$echoSuffix将【host all all 0.0.0.0/0 trust 】替换为【host all all 0.0.0.0/0 md5 】
sed -i "s/host all all 0.0.0.0\/0 trust/host all all 0.0.0.0\/0 md5/g" $PGDATA/pg_hba.conf
echo 第$((a=$a+1))步$echoSuffix重启数据库
$PGHOME/bin/pg_ctl restart
EOF
echo $echoSuffix使用指定的新增数据库用户,重新启用配置文件 结束
echo 第$((a=$a+1))步$echoSuffix使用telnet测试是否已启动
telnet localhost $PORT
#按服务端口检索
lsof -i:$PORT
echo 第$((a=$a+1))步$echoSuffix开放端口$PORT
firewall-cmd --add-port=$PORT/tcp --permanent
echo 第$((a=$a+1))步$echoSuffix重启防火墙
firewall-cmd --reload
echo 第$((a=$a+1))步设置数据库开机自启
#拷贝linux文件,并更名为postgresql
cp $curr_Dir/postgresql-12.5/contrib/start-scripts/linux /etc/init.d/postgresql
echo 第$((a=$a+1))步配置开机自启参数,设置数据库主目录和数据目录
sed -i "s/\/usr\/local\/pgsql/\/home\/postgres\/disk_d\/applications\/service\/postgresql/g" /etc/init.d/postgresql
sed -i "s/\/usr\/local\/pgsql\/data/\/home\/postgres\/disk_d\/applications\/service\/postgresql\/data/g" /etc/init.d/postgresql
echo 第$((a=$a+1))步给postgresql赋予权限
chmod a+x /etc/init.d/postgresql