百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

PostgreSQL 一键安装部署脚本化

toyiye 2024-06-21 12:23 10 浏览 0 评论

由于在一些环境下无法配置外网,导致安装组件的时候非常的麻烦,存在各种依赖或者包的版本问题。为了简化这种重复性的动作,一键安装 PostgreSQL 成为了一种需要。

下面是一键安装 PostgreSQL 数据库的脚本:
[root@localhost postgresql-12]# cat postgresql_install.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# ScriptName: postgresql_install.sh
# Author: cloud.com 云端
# Description: 一键部署 PostgreSQL
# Version: v1.0
# Date: 2023-06-01
# -------------------------------------------------------------------------------


echo  "
    ┌──────────────────────────────────────────────────────────────────────┐
    │                                                                      │
    │                ? Linux 环境下一键部署 PostgreSQL v1.0 ?              │
    │   (One-click postgresql installation based on Linux environment)     │
    │                                                                      │
    │   ? Description :  基于 Linux 环境实现 PostgreSQL 一键式部署         │
    │   ? Author      :  cloud.com 云端                                    │
    │   ? E-Mail      :  2429425191@qq.com                                 │
    │   ? Version     :  v1.0                                              │
    │                                                                      │
    └──────────────────────────────────────────────────────────────────────┘
"

# 关闭系统防火墙和安全机制
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

# 关闭邮件服务以及 NetworkManager
systemctl stop postfix.service
systemctl disable postfix.service
systemctl stop NetworkManager
systemctl disable NetworkManager

# 修改文件句柄数
cat > /etc/security/limits.conf << EOF
root            hard    nproc           65535
root            soft    nproc           65535
*               hard    nproc           65535
*               soft    nproc           65535
root            hard    nofile          65535
root            soft    nofile          65535
*               hard    nofile          65535
*               soft    nofile          65535
EOF
sed -i 's/*          soft    nproc     4096/*          soft    nproc     65535/' /etc/security/limits.d/20-nproc.conf


# 修改环境变量提示符
cat > /etc/profile << EOF
export PS1='[\u@\h \W]\$ '
EOF
source /etc/profile

# 删除系统自带的 postgresql
rpm -qa | grep postgres
rpm -e postgresql-9.2.24-8.el7_9.x86_64 --nodeps
rpm -e postgresql-server-9.2.24-8.el7_9.x86_64 --nodeps
rpm -e postgresql-libs-9.2.24-8.el7_9.x86_64 --nodeps
rpm -qa | grep postgresql | xargs rpm -e --nodeps

# 安装 postgresql
userdel postgres
groupdel postgres
groupadd postgres
useradd -d /home/postgres -g postgres postgres
cd /usr/local/src/postgresql-12/
chmod 755 /usr/local/src/postgresql-12/postgresql.conf
chmod 755 /usr/local/src/postgresql-12/pg_hba.conf
yum localinstall -y *
cat > /etc/profile.d/setenv-postgres.sh << EOF
export PGHOME=/home/postgres
export PGDATA=/home/postgres/pgsql-12/data
export PGLIBRARY=/usr/pgsql-12/lib
export PATH=\$PATH:/usr/pgsql-12/bin
EOF
source /etc/profile
su - postgres -c "/usr/pgsql-12/bin/initdb -D /home/postgres/pgsql-12/data"
mkdir -p /home/postgres/pgsql-12/data/archive
mkdir -p /home/postgres/pgsql-12/data/log
cp /usr/local/src/postgresql-12/postgresql.conf /home/postgres/pgsql-12/data/
cp /usr/local/src/postgresql-12/pg_hba.conf /home/postgres/pgsql-12/data/
chown -R postgres:postgres /home/postgres
su - postgres -c "/usr/pgsql-12/bin/pg_ctl -D /home/postgres/pgsql-12/data -l logfile start"
su - postgres -c "/usr/pgsql-12/bin/psql -h 127.0.0.1 -p 5432 -U postgres -d postgres"
/usr/pgsql-12/bin/psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "alter user postgres with password 'Cnhis.com@2023';"
这个是另外的一种可以安装自己的需求简单修改一下即可
[root@localhost postgresql-14]# cat install_postgresql.sh
#!/bin/bash

# *******************************************
# Author:    		peter
# FileName:  		install_postgresql.sh
# Date:				2023-08-11
# Description:      Install PostgreSQL
# *******************************************

postgres_user=postgres
postgres_password=centos@2023
pgsql_install_dir=/home/postgres/pgsql-14
pgsql_data=/home/postgres/pgsql-14/data

echo "Create user and groups for postgres Database service"
groupadd $postgres_user
useradd -g $postgres_user $postgres_user -d /home/postgres
mkdir -p $pgsql_install_dir $pgsql_data
chown -R $postgres_user:$postgres_user $pgsql_install_dir

echo "Dependent installation"
yum install -y gcc gcc-c++ net-tools sysstat make cmake readline readline-devel zlib zlib-devel lz4-devel openssl openssl-devel libxml2 libxml2-devel pam pam-devel ncurses ncurses-devel perl-ExtUtils-Embed libxslt libxslt-devel perl perl-devel flex flex-devel uuid uuid-devel

echo "Install pgsql"
tar -zxvf /usr/local/src/postgresql-14.7.tar.gz
cd /usr/local/src/postgresql-14.7
./configure --prefix=$pgsql_install_dir && make && make install

echo "pgsql environment variable"
su - postgres <<EOF
echo 'export PGHOME=/home/postgres/pgsql-14' >> ~/.bash_profile
echo 'export PGDATA=/home/postgres/pgsql-14/data' >> ~/.bash_profile
echo 'export PATH=$PATH:/home/postgres/pgsql-14/bin' >> ~/.bash_profile
echo 'export MANPATH=/home/postgres/pgsql-14/share/man' >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH=/home/postgres/pgsql-14/lib' >> ~/.bash_profile
echo 'export LANG=en_US.UTF8' >> ~/.bash_profile
source ~/.bash_profile
/home/postgres/pgsql-14/bin/initdb -D /home/postgres/pgsql-14/data
cd /home/postgres/pgsql-14/data
/home/postgres/pgsql-14/bin/pg_ctl -D /home/postgres/pgsql-14/data -l logfile start
/home/postgres/pgsql-14/bin/psql -c "ALTER USER postgres WITH PASSWORD 'centos@2023'"
EOF

echo "postgresql.service add system"
cat >>/etc/systemd/system/postgresql.service<<EOF
[Unit]
Description=PostgresQL database server
After=network.target

[service]
Type=forking
User=postgres
Environment=PGHOME=/home/postgres/pgsql-14
Environment=PGDATA=/home/postgres/pgsql-14/data
ExecStart=/home/postgres/pgsql-14/bin/pg_ctl start -D /home/postgres/pgsql-14/data
ExecStop=/home/postgres/pgsql-14/bin/pg_ctl stop -D /home/postgres/pgsql-14/data
ExecReload=/home/postgres/pgsql-14/bin/pg_ctl reload -D /home/postgres/pgsql-14/data
Restart=always
TimeoutSec=0

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl enable postgresql

相关推荐

Python 驱动的 AI 艺术批量创作: 免费的Bing 绘图代码解析

这篇文章将深入分析一段Python代码,该代码利用Bing的AI绘图功能,即bing的images/create,根据用户提供的文本提示生成图像。我们将详细探讨其工作原理、代码结构、...

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

Qt开发,使用Qt for Python还是Qt C++ Qt开发,使用Qt for

Qt开发使用QtforPython还是QtC++?1.早些年写过一个PyQt5的项目,最近几年重构成QtC++了,其中有个人原因,如早期代码写得烂,...

最简单方法!!用python生成动态条形图

最近非常流行动态条形图,在B站等视频网站上,此类视频经常会有上百万的播放量,今天我们通过第三方库:bar_chart_race(0.2版本)来实现动态条形图的生成;生成的效果如图:问题:...

Asterisk通道和ARI接口的通信(aau通道数)

Asterisk通道和ARI详解什么是通道Asterisk中,通道是介于终端和Asterisk自己本身的一个通信媒介。它包含了所有相关信息传递到终端,或者从终端传递到Asterisk服务器端。这些信...

取消回复欢迎 发表评论:

请填写验证码