源码编译安装Postgresql 11.4

1 环境

  • 操作系统: Centos 7.6 (cat /etc/redhat-release)
  • postgresql版本: 11.4(因为12还是beta版)

2 准备工作

2.1 安装gcc编辑器

    [root@localhost postgresql-11.4]# gcc --version
    gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
    Copyright © 2015 Free Software Foundation, Inc.
    本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
    包括没有适销性和某一专用目的下的适用性担保。

gcc用于编译源码

2.2 安装make

    [root@localhost postgresql-11.4]# make --version
    GNU Make 3.82
    Built for x86_64-redhat-linux-gnu
    Copyright (C) 2010  Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

make用于批量编译链接源码,实际干活的还是gcc

2.3 安装readline

    yum install readline
    yum -y install -y readline-devel

readline是个坑啊。可以选择不安装readline,后果是在psql里执行完命令,想用方向键再次获取该命令时就成了乱码。所以必须要安装readline。

只yum install readline时,configure的时候任然会报错,提示找不到readline。解决方法是安装readline-devel。

2.4 安装zlib-devel

    yum install zlib  //一般情况下,系统已经默认安装了zlib
    yum install zlib-devel

zlib用于数据压缩

3 下载postgresql源码

postgresql的官方网站下载:https://www.postgresql.org/

4 编译安装

4.1 解压下载的压缩包

    cd /home/software/
    tar -xzvf postgresql-11.4.tar.gz 

4.2 创建postgresql的安装目录

    mkdir /home/app/postgresql

4.3 生成makefile

    ./configure --prefix=/home/app/postgresql

4.4 编译安装

    make && make install

All of PostgreSQL successfully made. Ready to install.

[1]+ 完成 make

4.5 安装工具集

    cd /home/software/postgresql-11.4/contrib
    make && make install

4.6 创建postgres用户:

    groupadd postgres
    useradd -g postgres postgres

为了安全考虑,postgresql不允许使用root用户操作数据库,我们在系统中为了使用postgresql添加一个用户postgres:

也可以是其他用户名,但是习惯上大家都是创建postgres用户作为数据库的超级用户。

初始化数据库时,就以这个用户作为数据库的超级用户

4.7 修改data目录的用户为postgres

    chown -R postgres:postgres /home/app/postgresql/data

4.8 修改环境变量

    su postgres 
    vim /home/postgres/.bash_profile

      添加环境变量:

    export PGHOME=/home/app/postgresql
    export PGDATA=/home/app/postgresql/data
    export PATH=$PGHOME/bin:$PATH
    export MANPATH=$PGHOME/share/man:$MANPATH
    export LANG=en_US.utf8
    export DATE=`date +"%Y-%m-%d %H:%M:%S"`
    export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
    alias rm='rm  -i'
    alias ll='ls -lh'

      然后使环境变量立即生效,否则initdb命令会找不到:

    source /home/postgres/.bash_profile

4.9 初始化数据库

    initdb -D /home/app/postgresql/data/

Success. You can now start the database server using:

pg_ctl -D /home/app/postgresql/data/ -l logfile start

4.10 启动数据库

    su postgres
    cd /home/postgres  //logfile需要在postgres的用户目录下创建
    pg_ctl -D /home/app/postgresql/data/ -l logfile start

  查看5432端口是否已经启动

    netstat -nltp|grep 5432

4.11 添加postgresql至服务

    cd /home/software/postgresql-11.4/contrib/start-scripts
    chmod a+x linux.
    cp linux /etc/init.d/postgresql

此时就可以使用 /etc/init.d/postgresql stop 来停止postgresql

也可以使用:service postgresql start 来启动postgresql

修改postgresql脚本中prefix和PGDATA的内容

    chkconfig --add postgresql   //设置服务开机启动

5 配置数据库允许连接

#设置监听整个网络,查找“listen_addresses ”字符串,
vim /home/app/postgresql/data/postgresql.conf
#修改为如下:
listen_addresses = '*'

#配置连接方式:
 vim /home/app/postgresql/data/pg_hba.conf
#修改为如下:
host    all             all             192.168.2.0/24           md5

结束

    原文作者:SHIYIBODEC
    原文地址: https://segmentfault.com/a/1190000019928714
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞