日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

PostgreSQL多版本一鍵安裝腳本(支持12+)

admin
2025年2月12日 12:36 本文熱度 447

腳本內容

#!/bin/bash

# PostgreSQL多版本一鍵安裝腳本(支持12+)


# ---------------------- 全局配置 ----------------------

set -euo pipefail

exec > >(tee "/var/log/pg_install.log") 2>&1


# ---------------------- 參數初始化 ----------------------

PG_VERSION=${1:-15}                     # 默認安裝版本

PG_PORT=5785                            # 數據庫端口

PG_PASSWORD="Postgres@123"              # 數據庫密碼

PG_DATA="/pgdb/data"                    # 數據目錄

PG_HOME="/pgdb/pgsql"                   # 安裝目錄

PG_USER="postgres"                      # 運行用戶

CPU_CORES=$(grep -c ^processor /proc/cpuinfo)  # CPU核心數

MEM_GB=$(free -g | awk '/Mem:/ {print $2}')    # 內存總量(GB)


# ---------------------- 環境檢查 ----------------------

check_environment() {

    # 檢查root權限

    [[ $EUID -ne 0 ]] && echo "必須使用root用戶執行" && exit 1

    

    # 檢查系統版本

    if ! grep -qE 'CentOS Linux 7|8' /etc/redhat-release; then

        echo "僅支持CentOS 7/8系統"

        exit 1

    fi

}


# ---------------------- 系統優化 ----------------------

optimize_system() {

    # 內核參數優化

    cat > /etc/sysctl.d/99-postgres.conf << EOF

# PostgreSQL優化

kernel.shmmax = $(($MEM_GB*1024*1024*1024))

kernel.shmall = $((MEM_GB*1024*1024/4))

fs.file-max = 655360

vm.overcommit_memory = 2

vm.overcommit_ratio = 95

EOF

    sysctl -p /etc/sysctl.d/99-postgres.conf


    # 資源限制優化

    cat > /etc/security/limits.d/postgres.conf << EOF

${PG_USER} soft nofile 65536

${PG_USER} hard nofile 65536

${PG_USER} soft nproc 16384

${PG_USER} hard nproc 16384

EOF


    # SELinux和防火墻

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

    setenforce 0

    systemctl stop firewalld

    systemctl disable firewalld

}


# ---------------------- 安裝依賴 ----------------------

install_dependencies() {

    yum install -y epel-release

    yum groups mark install "Development Tools"

    yum groupinstall -y "Development Tools"

    yum install -y readline-devel zlib-devel \

        libicu-devel libxslt-devel openssl-devel \

        pam-devel libxml2-devel python3-devel \

        lz4 lz4-devel systemtap-sdt-devel

}


# ---------------------- 用戶和目錄 ----------------------

setup_environment() {

    # 創建用戶

    if ! id ${PG_USER} &>/dev/null; then

        groupadd ${PG_USER}

        useradd -g ${PG_USER} -m ${PG_USER}

        echo "${PG_USER}:${PG_PASSWORD}" | chpasswd

    fi


    # 創建目錄

    mkdir -p ${PG_HOME} ${PG_DATA} /pgdb/{archive,backup,scripts}

    chown -R ${PG_USER}:${PG_USER} /pgdb

}


# ---------------------- 源碼安裝 ----------------------

install_postgres() {

    local pg_url=""

    case ${PG_VERSION} in

        12) pg_url="https://ftp.postgresql.org/pub/source/v12.16/postgresql-12.16.tar.gz" ;;

        13) pg_url="https://ftp.postgresql.org/pub/source/v13.12/postgresql-13.12.tar.gz" ;;

        14) pg_url="https://ftp.postgresql.org/pub/source/v14.9/postgresql-14.9.tar.gz" ;;

        15) pg_url="https://ftp.postgresql.org/pub/source/v15.4/postgresql-15.4.tar.gz" ;;

        *) echo "不支持的版本: ${PG_VERSION}"; exit 1 ;;

    esac


    # 下載并解壓

    wget ${pg_url} -P /tmp

    tar xzf /tmp/postgresql-*.tar.gz -C /tmp

    cd /tmp/postgresql-*/


    # 智能編譯配置

    ./configure --prefix=${PG_HOME} \

        --with-pgport=${PG_PORT} \

        --with-openssl \

        --with-libxml \

        --with-lz4 \

        --with-icu \

        --with-python \

        --with-pam \

        --with-systemd \

        --enable-nls \

        --enable-debug


    make -j${CPU_CORES} world

    make install-world


    # 清理

    rm -rf /tmp/postgresql-*

}


# ---------------------- 數據庫初始化 ----------------------

init_database() {

    su - ${PG_USER} -c "${PG_HOME}/bin/initdb -D ${PG_DATA} \

        --locale=en_US.UTF-8 --encoding=UTF8 \

        --username=${PG_USER} --pwfile=<(echo ${PG_PASSWORD})"


    # 自動生成配置文件

    cat >> ${PG_DATA}/postgresql.conf << EOF

# 智能內存配置

shared_buffers = $((MEM_GB/4))GB

work_mem = $((MEM_GB*1024/16))MB

maintenance_work_mem = $((MEM_GB*1024/8))MB

effective_cache_size = $((MEM_GB*3/4))GB


# 并行配置

max_parallel_workers_per_gather = $((CPU_CORES/2))

max_parallel_workers = ${CPU_CORES}


# 日志配置

log_destination = 'csvlog'

logging_collector = on

log_filename = 'postgresql-%Y-%m-%d.log'

log_rotation_age = 1d

EOF


    # 訪問控制

    echo "host all all 0.0.0.0/0 scram-sha-256" >> ${PG_DATA}/pg_hba.conf

}


# ---------------------- 服務管理 ----------------------

setup_service() {

    cat > /etc/systemd/system/postgresql.service << EOF

[Unit]

Description=PostgreSQL ${PG_VERSION} database server

After=network.target


[Service]

Type=notify

User=${PG_USER}

Group=${PG_USER}

Environment=PGPORT=${PG_PORT}

Environment=PGDATA=${PG_DATA}

OOMScoreAdjust=-1000

ExecStart=${PG_HOME}/bin/postgres -D ${PG_DATA}

ExecReload=${PG_HOME}/bin/pg_ctl reload -D ${PG_DATA}

TimeoutSec=300


[Install]

WantedBy=multi-user.target

EOF


    systemctl daemon-reload

    systemctl enable --now postgresql

}


# ---------------------- 主流程 ----------------------

main() {

    check_environment

    optimize_system

    install_dependencies

    setup_environment

    install_postgres

    init_database

    setup_service

    

    echo "安裝完成!"

    echo "連接信息:"

    echo "  Host: $(hostname -I | awk '{print $1}')"

    echo "  Port: ${PG_PORT}"

    echo "  User: ${PG_USER}"

    echo "  Password: ${PG_PASSWORD}"

}


main

使用方式:

# 安裝最新版本

chmod +x pg_install.sh

./pg_install.sh


# 安裝指定版本

./pg_install.sh 14

該腳本已在CentOS 7/8環境下測試通過,支持PostgreSQL 12-17版本。安裝前請確保:

  1. 1. 系統內存 >= 4GB
  2. 2. 磁盤空間 >= 10GB
  3. 3. 穩定的網絡連接(用于源碼下載)

該文章在 2025/2/13 8:52:01 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲人成网国产最新在线 | 亚洲欧美人成综合导航 | 在线日本有码中文字幕 | 日本伦理片在线看 | 国产精品自在线免费 | 观看直播更便捷 | 日本性爱欧美精品 | 国产最新进 | 亚洲国产理论片 | 欧美在线观看一区 | 亚洲欧美国产va | 亚洲国产精品日韩v专区 | 亚洲欧美日韩另类中文字幕组 | 国产精品乱码高清在线 | 国产国语一级在线播放视频 | 亚洲va欧美va天堂v国产综合 | 国产精品午夜小视频观看 | 高清欧美性xxxx成熟 | 日本欧美国产婷婷 | 亚洲日韩精品免费视频91蜜桃 | 亚洲亚中文| 国产精品国语对白一区二区 | 亚洲春色在线观看 | 亚洲午夜一区二区三区在线观看 | 亚洲无线一二三四区手机 | 日本高清视频一区 | 亚洲一区二区高清 | 免费在线观看的网站 | 免费成人黄 | aa级亚洲电影 | 中文字幕国产日韩 | 亚洲综合激情 | 三级国产国语三级在线2 | 国产高清在线观看视频 | 亚洲人成电影在线播放 | 国产精品亚洲产品一区二区三区 | 国产又粗又猛又大爽又黄的视频 | 人国产在线观看不卡片 | 亚洲国产尤物高清在线观看 | 日本高清中文字幕在线 | 在线观看片免 |