PostgreSQL 编译安装通用步骤

news/2024/11/30 14:33:04/

导读

postgresql的源码编译安装比较复杂。笔记总结了从pg12-pg15的安装方式并作了抽象。基本上通用于pg12以来的编译安装操作了。在这里分享给大家,希望给大家提供便利。

本文基于Centos7.9-x86_64的环境。

注意:关键的一节是二、配置安装需求,这里是本文的全局配置,以环境变量的形式。一定不要随便起一个会话就执行,得有这些配置变量才行。

Here we go!!! >>>


一、安装依赖包

1.1 操作系统工具包

安装命令:

yum install -y vim lrzsz wget bzip2 unzip net-tools telnet tree mlocate bash-completion

1.2 PG依赖包

安装命令:

yum install -y readline readline-devel zlib zlib-devel bison bison-devel flex perl-ExtUtils-Embed perl-devel \openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel tcl tcl-devel \openldap openldap-devel python python-devel gcc gcc-c++ rsync icu libicu-devel \e2fsprogs-devel uuid uuid-devel libuuid-devel 

PG15及以上版本需要 Python3+

yum install -y python3 python3-devel

二、配置安装需求

本文档使用变量来定义需求,命令如下:

export PG_VERSION_NUM=15.3
export PG_NAME=postgresql-${PG_VERSION_NUM}
export PG_PKGFILE_NAME=postgresql-${PG_VERSION_NUM}.tar.bz2
export PG_PKGFILE_MD5=postgresql-${PG_VERSION_NUM}.tar.bz2.md5
export PG_SRC_DEST_DIR=/usr/local/src
export PG_SRC_FULL_PATH=${PG_SRC_DEST_DIR}/${PG_NAME}
export PG_INSTALL_PATH=/opt/pgsql${PG_VERSION_NUM}
export PG_DATA_PARENT_DIR=/pgdata/${PG_VERSION_NUM}
export PG_DATA_FULL_PATH=${PG_DATA_PARENT_DIR}/data

说明:

  1. PG_VERSION_NUM:版本号,数字小数点组成;
  2. PG_NAME:源码包解压后的目录名;
  3. PG_PKGFILE_NAME:源码包完整名称;
  4. PG_PKGFILE_MD5:源码包验证散列值;
  5. PG_SRC_DEST:源码安装目标路径;
  6. PG_SRC_FULL_PATH:源码完整路径,该目录下就是源码;
  7. PG_INSTALL_PATH:二进制文件的安装目录;
  8. PG_DATA_PARENT_DIR:数据目录(PGDATA)在这个目录下;
  9. PG_DATA_FULL_PATH:数据目录(PGDATA)的完整路径,该目录下就是PADATA内容。

三、下载源码

#下载:

wget https://ftp.postgresql.org/pub/source/v${PG_VERSION_NUM}/postgresql-${PG_VERSION_NUM}.tar.bz2
wget https://ftp.postgresql.org/pub/source/v${PG_VERSION_NUM}/postgresql-${PG_VERSION_NUM}.tar.bz2.md5

#校验:

md5sum -c ${PG_PKGFILE_MD5}

#解压到指定位置:

tar -xjvf ${PG_PKGFILE_NAME} -C ${PG_SRC_DEST_DIR}

四、编译安装

4.1 创建 build 目录

进入源码目录执行命令:

mkdir ${PG_SRC_FULL_PATH}/build && cd ${PG_SRC_FULL_PATH}/build

4.2 编译配置

一般配置命令:

../configure --prefix=${PG_INSTALL_PATH} --with-libxml --with-ssl=openssl --with-uuid=ossp \--with-systemd --with-python --with-perl --with-icu 

使用编译安装的 ICU 可能需要这样(推荐):

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
../configure --prefix=${PG_INSTALL_PATH} --with-libxml --with-ssl=openssl --with-uuid=ossp \--with-systemd --with-python --with-perl --with-icu 

你需要知道ICU编译安装到哪个路径下,这里的PKG_CONFIG_PATH是指代添加到 pkg-config 搜索路径的目录。

4.3 编译安装

执行命令:

make -j$(nproc) && make install -j$(nproc)

五、创建用户和目录

5.1 创建用户

创建操作系统用户postgres

/usr/sbin/groupadd postgres
/usr/sbin/useradd -g postgres postgres -c "${PG_NAME} Server"
echo "postgres:666666" | chpasswd

5.2 创建相关目录

创建一些目录以及相应的权限:

mkdir -p ${PG_INSTALL_PATH}
mkdir -p ${PG_DATA_FULL_PATH}
ln -sf ${PG_INSTALL_PATH} /opt/pgsql
chown -R postgres.postgres ${PG_INSTALL_PATH}
chown -R postgres.postgres ${PG_DATA_PARENT_DIR}
chmod 0700 ${PG_INSTALL_PATH}
chmod 0700 ${PG_DATA_FULL_PATH}

5.3 配置环境变量

配置用户 postgres 环境变量:

cat >> /home/postgres/.bash_profile <<-EOF################################ add by QCJ at `date +%Y-%m-%d_%H:%M:%S` ################################
umask 022
export LD_LIBRARY_PATH=${PG_INSTALL_PATH}/lib:/usr/local/lib:\$LD_LIBRARY_PATH
export PATH=${PG_INSTALL_PATH}/bin:\$PATH
export PGDATA=${PG_DATA_PARENT_DIR}/data
################################ the End Line  at `date +%Y-%m-%d_%H:%M:%S` ################################EOF

注意:

这里有个目录/usr/local/lib是其他库文件的所在路径,例如前面ICU自己编译安装可能会安装到这里。就是说,你自己的一些库文件最好是放到这里。否则你需要将目录添加到这里。

六、切换用户操作

6.1 切换用户

这一节的操作需要切换到用户postgres执行。切换命令:

su - postgres

6.2 初始化

initdb -A md5 -D $PGDATA -E 'UTF8' --pwfile=<(printf "%s" "666666")

6.3 配置客户端验证

cat >> $PGDATA/pg_hba.conf <<-EOF
################################ add by QCJ at `date +%Y-%m-%d_%H:%M:%S` ################################
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
################################ the End Line  at `date +%Y-%m-%d_%H:%M:%S` ################################EOF

6.4 免密文件

cat > ~/.pgpass <<-EOF
# host:port:database:user:password
localhost:5432:postgres:postgres:666666
EOFchmod 0600 ~/.pgpass

6.5 启动数据库

pg_ctl start

停掉服务,因为我们下一节要自启动配置:

pg_ctl stop

七、自启动服务

切回root用户,注意是切回,如果不是切回需要执行以下第二章节的环境变量配置。执行以下命令配置服务:

cat >/usr/lib/systemd/system/postgresql.service <<-EOF
[Unit]
Description=PostgreSQL v${PG_VERSION_NUM} database server
Documentation=https://www.postgresql.org
Requires=network.target local-fs.target
After=network.target local-fs.target[Service]
Type=forkingUser=postgres
Group=postgresEnvironment=PGDATA=/pgdata/${PG_VERSION_NUM}/dataOOMScoreAdjust=-1000ExecStart=/opt/pgsql${PG_VERSION_NUM}/bin/pg_ctl start -D \${PGDATA}
ExecStop=/opt/pgsql${PG_VERSION_NUM}/bin/pg_ctl stop -D \${PGDATA}
ExecReload=/opt/pgsql${PG_VERSION_NUM}/bin/pg_ctl reload -D \${PGDATA}TimeoutSec=0[Install]
WantedBy=multi-user.target
EOF

确认服务已经停掉,如果没有停掉请切到postgres停掉。然后root下执行以下命令启用并启动服务:

systemctl enable --now postgresql.service

<<< There you go!!!

总结

好了,这就是我分享给大家的源码编译安装步骤。有问题请在csdn上留言哈。


http://www.ppmy.cn/news/541613.html

相关文章

名帖170 唐代 行书《栖岩寺智通禅师塔铭》(附启功跋)

《中国书法名帖目录》 有唐一代&#xff0c;行书碑刻日益流行。有论者云&#xff0c;唐太宗御制御书《晋祠之铭并序》&#xff0c;是迄今为止中国发现的最早的一块行书碑&#xff0c;素有中国第一通行书大碑之称。 唐代另一块经典的行书碑刻《栖岩寺智通禅师塔铭》&#xff0…

未來用工新趨勢_医工结合将成未来医疗新趋势

日前&#xff0c;由清华大学医学院、北京清华长庚医院与北京速迈医疗科技有限公司共同举办的“超声精准微创&#xff0c;智能医术创新” 第二届超声精准医疗高峰论坛在清华大学顺利召开。中国工程院院士、清华大学医学院副院长、北京清华长庚医院院长董家鸿&#xff1b;中国工程…

《止学》 [隋]文中子(王通)

《止学》 [隋]文中子(王通) 智卷一 智极则愚也。圣人不患智寡&#xff0c;患德之有失焉。【译文】过于聪明就是愚蠢了。圣人不担心自己的智谋少&#xff0c;而担心自己的品德有缺失。才高非智&#xff0c;智者弗显也。位尊实危&#xff0c;智者不就也。大智知止&#xff0c;小智…

止学-文中子-隋朝

文章目录 止学-文中子-隋朝原文-注解智卷一用势卷二利卷三辩卷四誉卷五情卷六蹇卷七释怨卷八心卷九修身卷十 止学-文中子-隋朝 文中子&#xff08;王通&#xff09; 原文-注解 智卷一 智极则愚也. 圣人不患智寡, 患德之有失焉. 译文 :: 过于聪明就是愚蠢了. 圣人不担心自己…

python与labview混合编程_LabVIEW与MATLAB混合编程的实现_张晖

本栏目责任编辑 &#xff1a; 谢媛媛 系统软件与软件工程 Computer Knowledge and Technology 电脑知识 与技术 第 6 卷第 15 期 (2010 年 5 月 ) LabVIEW 与 MATLAB 混合编程的实现 张 晖 &#xff0c; 郑 炜 ( 空军航空大学 电工电子教研室 &#xff0c; 吉林 长春 130022 ) …

海思开发:mobilefacenet 模型: pytorch -> onnx -> caffe -> nnie

一、前言 最近有空&#xff0c;把之前的项目梳理记录一下&#xff0c;惠已惠人。我的demo代码 二、详情 人脸模型是在 pytorch 下训练的&#xff0c;工程文件用的是这个&#xff1a;MobileFaceNet_Tutorial_Pytorch 训练完成之后&#xff0c;先转为onnx模型并做简化&#xf…

陆奇:开源开发是更优越的开发方式

点击上方“开源社”关注我们 | 转载自&#xff1a;腾讯科技 | 编辑&#xff1a;沈于蓝 | 设计&#xff1a;朱亿钦 开源社引言 根据 COSS Media 统计显示&#xff0c;年收入曾达到 1 亿美元的商业开源软件数量在全球已经高达 47 个。近年来&#xff0c;国内越来越多的开源公司及…

网易控股的立马理财逾期,网易前员工爆料:把内部员工当韭菜

作者 | 卡贝 来源 | 零点财经 网易用自己的信誉背书的立马理财逾期了&#xff0c;这一次&#xff0c;爆料的不是普通投资人&#xff0c;而是网易前员工。 4月12日&#xff0c;一位ID为前网易员工的脉脉用户爆料称&#xff1a;“网易用自己的信誉背书的立马理财逾期了。今天在…