zoukankan      html  css  js  c++  java
  • [原创]OpenEuler20.03安装配置PostgreSQL13.4详细图文版

    OpenEuler安装配置PostgreSQL

    编写时间:2021年9月18日

    作者:liupp

    邮箱:liupp@88.com

    序号 更新内容 更新日期 更新人
    1 完成第一至三章内容编辑; 2021年9月18日 liupp
    2 增加PostgreSQL服务开机自动启动; 2021年10月25日 liupp
    3

    一、准备条件

    OpenEuler(Hyper-V虚拟机):

    PostgreSQL:

    • 版本:13.4源码版

    • 下载地址:https://www.postgresql.org/download/

    • 因PostgreSQL并未对OpenEuler发行版发布打包安装版本,需要我们自己下载源码进行编译安装,其他linux发行版如果有打包版,可以自行下载安装。

      源码下载位置:



    *选择当前稳定版的最新版的tar.gz压缩文件,可以复制右键复制下载链接,保存备用。

    下载链接:https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz

    二、安装OpenEuler

    2.1 安装提示

    操作系统的安装按照提示进行即可,在进行软件包选择的时候,本次选择了Server模式,右侧的软件包保持默认未选择。

    按照提示安装完毕后重启即可进入到登录界面(命令行模式),本次安装未安装图形界面。

    注意:系统启动后,默认DHCP自动分配IP,需要先配置网络。

    2.2网络配置

    登录成功后,输入以下命令获取当前主机的网络配置文件:

    /** 1.切换到网络配置文件目录 **/
    cd /etc/sysconfig/network-scripts/
    
    /** 2.查看配置文件名称 **/
    ls 
    

    获取到配置文件名称如下:

    配置文件名称为“ifcfg-eth0”,此时可以使用 “vi 文件名”来编辑该文件,如果对vi工具熟悉的情况下,以上操作可以通过一条命令来处理:

    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    默认配置如下:

    需要修改的配置项如下:

    • BOOTPROTO:将dhcp 修改为 none,代表将采用静态分配IP地址;
    • ONBOOT:将no 修改为 yes,代表在启动时自动启用该设备;
    • 新增:IPADDR=192.168.12.132 //代表分配的IP地址,这里根据情况自行设定;
    • 新增:GATEWAY=192.168.12.254 //默认网关
    • 新增:PREFIX=24 //掩码
    • 新增:DNS1=202.102.224.68 //默认DNS,多个DNS按序号自行增加;

    修改后的配置文件如下:

    修改完成后保存退出vi编辑模式。

    • vi 打开文件后,进入编辑模式 需要按下 “i”键,编辑完成后,先按下“Esc”键,然后输入“:wq”为保存退出。

    输入以下命令重启网络服务:

      systemctl restart NetworkManager
    

    没有错误提示即代表重启成功,可通过ifconfig命令或者"ip a"命令查看当前网络情况,通过ping命令来查看网络是否通畅。

    如果此时重启网络后仍提示服务不可用,且无法ping通各个网站的话,可以停用当前网卡然后重启启用即可。(经测试发现采用Hyper-V创建的OpenEuler虚拟机偶尔出现这种情况,VM配置后直接成功联网。)命令如下:

    # 查看 网卡信息
    nmcli con show
    
    # 停用 指定网卡 (eth0为查询到的配置网卡信息)
    nmcli con down eth0
    
    # 启用 指定网卡
    nmcli con up eth0
    

    此时网络已通畅,ssh默认是打开的,此时可以通过ssh连接来管理该系统,后续说明均通过ssh来处理。ssh登录成功后如图所示:

    三、安装PostgreSQL

    3.1安装步骤

    • 阅读官方源码安装说明;

    • 下载源码包;

    • 根据官方说明安装必须依赖;

    • 根据官方说明编译安装PostgreSQL;

    • 配置、启动PostgreSQL;

    如无特殊说明,本说明是以root账号登录安装,所以特殊需要系统权限命令不再需要sudo前缀,如实际安装过程未采用root账号导致安装出现错误,可尝试在命令前增加sudo。

    3.2官方安装说明

    官方源码安装说明文档地址:https://www.postgresql.org/docs/current/installation.html

    入口寻找方法:

    打开文档后,16.1Short Version章节给了基本安装的命令,其他相关配置的说明见其他章节,16.2Requirements章节说明与之相关的依赖,建议阅读。

    3.3下载源码包

    1.首先ssh连接上服务器,连接命令:

    ssh root@192.168.12.132
    

    回车后输入root密码然后回车:看到如下截图代表登录成功:

    image-20210918123846921

    2.在使用ssh登录后,默认在root用户的根目录,我们可以创建一个tools文件,将下载的源码包放置在该文件夹下,命令如下:

    mkdir tools
    cd tools
    wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz
    

    下载完成见下图:

    3.4安装依赖

    根据文档说明必要的依赖如下:

    • make 需要版本3.80+

    • gcc

    • tar

    • Readline

    • zlib

    其他可选依赖根据自身需要选装。

    3.4.1make

    检查当前系统make 版本,可通过如下命令:

    make --version
    

    得到版本号为4.3,符合安装要求,无需再安装;

    3.4.2gcc
    gcc -v
    

    查询到gcc已安装,且版本为7.3.0,符合安装条件;

    3.4.3tar

    tar为解压软件,系统已内置,无需安装;

    3.4.4readline

    Readline库:它允许psql记住你输入的每个命令,这样就可以通过上下方向键快速输入之前的命令,默认开启,也可以通过编译参数--without-readline来禁止它,建议保留默认。

    readline 库系统已经内置,但OpenEuler安装PostgreSQL还要安装readline-devel库。

    安装命令:

    dnf install readline-devel
    

    yum install readline-devel
    
    3.4.5zlib

    zlib为默认的压缩库,同readline,zlib系统已默认内置,但需要额外安装zlib-devel库。

    安装命令:

    dnf install zlib-devel
    

    yum install zlib-devel
    
    3.4.6 其他

    缺少的库也可以一个命令统一安装:

    dnf install readline-devel zlib-devel
    

    yum install readline-devel zlib-devel
    

    3.5编译安装

    步骤:

    • 解压源码包
    • 根据官方简单版本安装命令编译安装
    • 补充操作
    3.5.1解压源码包

    回到tools文件夹下,通过tar工具解压源码包到当前目录下,命令如下:

    tar -xvf postgresql-13.4.tar.gz
    

    解压后在当前tools下生成一个 postgresql-13.4的文件夹。

    3.5.2解释官方提供的安装命令

    官方提供的简单版本的安装命令如下:

    ./configure                       ##配置
    make                              ##编译
    su                                ##切换管理员权限
    make install                      ##安装
    adduser postgres                  ##添加postgres用户
    mkdir /usr/local/pgsql/data       ##创建data存放目录
    chown postgres /usr/local/pgsql/data   ##给postgres用户授权
    su - postgres                     ##切换到postgres用户(数据库的操作不允许使用root用户)
    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data  ##初始化数据库
    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start   ##启动数据库
    /usr/local/pgsql/bin/createdb test  ##创建test数据库
    /usr/local/pgsql/bin/psql test      ##连接test数据库
    

    官方提供的命令相对简单,这里需要解释一下,部分操作将会修改官方的命令:

    configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。

    其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

    如果配置了--prefix,如:

    ./configure --prefix=/usr/local/test
    

    安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。

    *这里我们配置的路径为:

     ./configure --prefix=/usr/local/postgresql	
    

    其他有修改命令将会在编译安装章节单独说明。

    3.5.3编译安装

    现在我们逐项进行执行。

    请保证当前所在目录为:/tools/ postgresql-13.4/

    3.5.3.1 configure

    执行命令

    ./configure --prefix=/usr/local/postgresql
    

    正确执行完毕应未报错:

    3.5.3.2 make

    命令输入make后回车,编译过程耗时较长,请耐心等待编译结束。

    命令:

    make
    

    编译过程未出现Error错误字样,代表编译正常结束。

    3.5.3.3 su

    该命令为切换root管理权限,但当前操作我们采用的是root账号,所以该命令无需执行,如果您使用的是非root账号,请先执行su命令。

    3.5.3.4 make install

    命令:

    make install
    

    编译过程未出现Error错误字样,代表编译正常结束。

    3.5.3.5 adduser postgres

    命令:

    adduser postgres
    

    创建postgres用户和用户组,默认密码随机,回车后无任何错误提示代表创建成功;

    3.5.3.6 mkdir /usr/local/pgsql/data

    上面 我们将安装地址修改为了我们自定义的地址,该条命令需要修改一下:

    mkdir /usr/local/postgresql/data
    

    3.5.3.7 chown postgres /usr/local/pgsql/data

    同样该命令修改为:

    chown postgres /usr/local/postgresql/data
    

    3.5.3.8 su - postgres

    切换到postgres用户

    3.5.3.8 数据库操作

    因为我们修改了安装位置,所以如下命令都要根据实际安装位置修改。

    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data  ##初始化数据库
    

    修改为:

    /usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data  ##初始化数据库
    

    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start   ##启动数据库
    

    修改为:

    /usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l logfile start   ##启动数据库
    

    启动成功。

    /usr/local/pgsql/bin/createdb test  ##创建test数据库
    

    修改为:

    /usr/local/postgresql/bin/createdb test  ##创建test数据库
    

    /usr/local/pgsql/bin/psql test      ##连接test数据库
    

    修改为:

    /usr/local/postgresql/bin/psql test      ##连接test数据库
    

    出现“test=#”代表已经成功连接test数据库,可以进行相关sql操作了。

    3.5.4.补充操作
    3.5.4.1配置数据库远程连接

    经过以上操作,数据库已经成功安装完成,可以通过ps命令查看后台进程确认:

    但是无法从外部通过数据库工具连接,所以我们需要简单对postgres进行配置。

    进入postgrelsql下的data目录,命令及目录结构如下:

    base目录是表空间目录,global目录是相关全局变量目录, pg_hba.conf是访问控制配置文件,postgresql.conf是postgresql主配置文件。我们需要修改的配置文件为pg_hba.conf和postgresql.conf文件。

    修改pg_hba.conf文件,命令如下:

    vi pg_hba.conf	
    

    拉到最下面,找到如下图所示:

    修改红框内容,修改为:

    保存退出。

    修改postgresql.conf文件,命令如下:

    vi postgresql.conf
    

    在展开到内容中找到“# - Connection Settings -”配置项:

    修改红圈圈中内容,将前面的“#”去掉,修改'localhost'为’*‘,其他配置项保持不变,保存退出。

    配置完毕后应在防火墙对5432端口放行,此时使用postgres用户(密码随机,如果自行修改postgres密码知晓的情况下可以直接执行)无法执行,应先退出postgres账号,返回到root账号。执行命令如下:

    exit    ##退出postgres账号
    
    ##以下命令在root账户下执行
    sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent     ##配置防火墙放行5432端口
    sudo firewall-cmd --reload       ##防火墙重新加载配置文件
    

    此时切换回postgres账号,停止postgressql服务后,重新启动发现无法启动,报错如下:

    报错原因:没有指定启动日志的路径。启动命令和停止命令中的logfile需要指定为具体的log日志的命令。此时我们使用postgres账户在postgresql目录创建log文件夹是没有权限的,在3.5.3.7章节,我们只给postgres账号授权了data目录。我们做如下操作:

    • 1.切换回root账号;
    • 2.给postgres账号授权/usr/local/postgresql目录的权限;
    • 3.再切换回postgres账号进行log文件夹的创建;

    在log文件夹下创建server.log文件:

    命令如下:

    touch log/server.log	
    

    创建成功后修改启动命令为:

    /usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/server.log start
    

    执行命令,启动成功。

    此时使用外部的sql工具如navicat测试网络是畅通的,但是我们需要修改一下数据库账户postgres的默认密码才能进行连接,先使用本地postgres账号连接默认数据库来修改数据库账户postgres的密码:

    /usr/local/postgresql/bin/psql      ##使用postgres用户连接默认postgres数据库;
    ALTER USER postgres WITH PASSWORD 'postgres';     #修改数据库用户postgres的密码为postgres;
    

    此时使用Navicat测试数据库连接成功。

    3.5.5.2配置环境变量

    截止到现在如果我们想在安装postgresql的服务器使用psql或其他提供的工具连接数据库,就必须输入psql的全路径来调用,如:

    /usr/local/postgresql/bin/psql 
    

    并不是很方便我们使用,此时我们可以将postgresql配置到系统环境变量里面去,注意:请配置到postgres用户或者其他自定义操作postgresql的用户的bash_profile环境变量中,不要配置到root账号的环境变量中,或者可以配置到etc/profile中,单独配置到root的环境变量中时不能使用的。

    配置请以root用户配置:

    vi /etc/profile
    
    ##将如下内容添加到文件末尾
    PATH=/usr/local/postgresql/bin:$PATH
    export PATH
    
    ##保存退出后执行刷新配置
    source /etc/profile
    
    ##切换到postgres用户
    su - postgres
    
    ##此时就可以直接执行psql命令了
    psql
    

    3.5.5.3设置PostgreSQL为开机启动

    PostgreSQL的开机自动启动脚本位于PostgreSQL源码目录下的contrib/start-scripts目录下:

    其中linux文件为linux环境下的开机自启动脚本,将其拷贝到“/etc/init.d”目录下,并改名为postgresql:

    cp linux /etc/init.d/postgresql
    

    切换到/etc/init.d目录,使用vi打开postgresql文件修改如下内容:

    #修改前:
    #Installation prefix
    prefix=/usr/local/pgsql
    
    #修改后: 
    #Intalllation prefix[2021-10-25]
    prefix=/usr/local/postgresql
    
    #修改前:
    # Data directory
    #PGDATA="/usr/local/pgsql/data"
    
    #修改后:
    # Data directory[2021-10-25]
    PGDATA="/usr/local/postgresql/data"
    
    # Who to run the postmaster as, usually "postgres".  (NOT "root")
    # 将启动用户修改为实际用户,这里使用postgres,所以不变。
    PGUSER=postgres
    
    #修改前:
    # Where to keep a log file
    PGLOG="$PGDATA/serverlog"
    
    #修改后:
    # Where to keep a log flie[2021-10-25]
    PGLOG="/usr/local/postgresql/log/server.log"
    

    然后保存退出。

    然后修改postgresql文件的执行权限:

    chmod a+x postgresql
    

    添加开机启动:

    chkconfig --add postgresql
    

    然后重启服务器开机验证即可。

    后记

    此文原创 ,转载请注明出处。谢谢。
    2021年10月25日增加“PostgreSQL服务开机自动启动”;

  • 相关阅读:
    (转)交换两个变量的值,不使用第三个变量的四种法方
    Java权威编码规范
    Git的安装和设置
    ActiveMQ简单入门
    JMS术语
    求助 WPF ListViewItem样式问题
    初步探讨WPF的ListView控件(涉及模板、查找子控件)
    圆角button
    用Inno Setup来解决.NetFramework安装问题
    [!!!!!]Inno Setup教程-常见问题解答
  • 原文地址:https://www.cnblogs.com/boyliupan/p/15324331.html
Copyright © 2011-2022 走看看