Linux CentOS7 离线安装PostgreSQL 9.6.10(源码编译)

最近研究PostgreSQL,需要部署在Linux服务器上。在实际生产环境中,服务器通常是不会连接外网的,因此本人参考官方文档和网上相关资料,总结出在离线环境下Linux服务器(CentOS7)以源码编译的方式安装PostgreSQL的详细步骤如下:

一、准备编译环境

检查服务器上是否存在gcc-c++的环境,使用命令:

rpm -qa | grep gcc-c++

如果没有该环境,则需要安装该环境,离线安装步骤为:

1、获取相关rpm包,将其存放到服务器上某一路径

这里有两种方式:

方式1:从centos7的系统安装镜像中提取:解压镜像文件,进入"Packages"目录,取出如图1所示rpm包

方式2:访问镜像网站获取:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ ,然后将其上传

                                                                                 图1 

2、安装rpm包。进入该路径,使用命令:

rpm -Uvh *.rpm --nodeps --force

然后使用

gcc -v
g++ -v

查看gcc版本和g++版本,会看到详细的版本信息,安装完成。

二、下载postgresql源码包

浏览器访问 https://www.postgresql.org/ftp/source/,选择对应版本,如图2所示

                                                                                图2

点击之后,下载对应的tar.gz源码包,然后将其上传到服务器指定路径。

三、解压postgresql源码包

输入解压命令,其中 "-C"后面的为解压缩后的路径:

tar -zxvf postgresql-9.6.10.tar.gz -C /bigdata/soft

四、编译安装

进入解压后目录,通过命令 ./configure --help 可以看到配置相关的帮助信息,如图3所示

                                                                          图3

其中,--prefix=dir 可以指定安装目录:

./configure --prefix=/bigdata/work/postgresql

执行命令后,会进行配置过程,如果缺少相关包,则会导致配置失败,如图4所示

                                                                            图4

通过命令 rpm -qa | grep readline 发现,服务器上是存在readline包的,如图5所示

                                                                           图5

出现这种情况一般是缺少相关 devel 包,即这里缺少了 readline-devel 包。这里仍采取步骤一讲述的方法进行获取以及安装,如图6所示(readline-devel依赖于ncurses-devel,注意先后次序)

                                                                          图6

安装完成后,回到postgresql源码包的解压目录,再次执行之前的配置命令

cd /bigdata/soft/postgresql-9.6.10
./configure --prefix=/bigdata/work/postgresql

可以看到提示创建了config.status配置文件,如图7所示

                                                                          图7

依次执行如下命令,进行编译安装(编译时间视机器性能而定,请耐心等待)

make
make install

如果分别看到如图8所示提示,则说明编译安装成功。

                                                                      图8

五、相关配置

1、创建用户

root用户不能启动postgresql,所以需要创建一个普通用户来启动数据库,如图9所示,创建用户并设定登录口令

                                                                       图9

2、设定权限

在postgresql目录下创建目录 data(数据库存储)log(日志存储),然后将postgresql的目录权限全部赋予给postgres用户。

chown -R postgres:postgres /bigdata/work/postgresql

3、配置环境变量

使用命令 vim /etc/profile 配置环境变量,向其中追加如下内容:

export PGDATA=/bigdata/work/postgresql/data
export PGHOME=/bigdata/work/postgresql
export PATH=$PGHOME/bin:$PATH

修改完成后,使用命令 source /etc/profile,使得配置生效。

4、初始化数据库

切换为 postgres 用户,使用 initdb --help 可以看到初始化数据库的帮助信息,如图10所示

                                                                         图10

如图10红框中文字所示,由于之前在配置文件中已经设定了环境变量 PGDATA ,因此可以直接使用命令 initdb 来完成数据库初始化操作。

5、配置数据库

进入 */postgresql/data 目录,使用命令 vim pg_hba.conf ,配置对数据库的访问控制(设置为可以通过密码访问)。如图11所示

                                                                         图11

然后,使用命令 vim postgresql.conf ,配置数据库参数(设置服务器监听整个网络,设置端口号为5432)。如图12所示

                                                                         图12

6、关闭防火墙(root用户)

使用命令 systemctl status firewalld.service 查看防火墙状态,如图13所示

                                                                          图13

可以看见服务器防火墙处于开启状态,使用命令 systemctl stop firewalld.service 关闭防火墙。(ps:使用命令 systemctl disable firewalld.service ,可以停用防火墙开机自启)

7、配置系统服务(root用户)

进入postgresql源码包的解压目录(本文为 /bigdata/soft/postgresql-9.6.10 ),执行命令 cp contrib/start-scripts/linux /etc/init.d/postgresql,然后 vim /etc/init.d/postgresql,进行配置修改,如图14所示

                                                                                  图14

然后使用命令 chmod +x /etc/init.d/postgresql,赋予该文件执行权限。另外,还可以使用命令 chkconfig --add postgresql,设置服务开机自启。

8、启动及连接数据库

使用命令 service postgresql start,启动数据库服务。可以通过 ps -ef|grep postgres,查看postgres相关进程。如图15所示。

                                                                                  图15

启动成功后,可以通过 postgresql 自带的客户端工具 psql 来进行连接,postgresql用户直接输入 psql 看到版本信息则说明连接成功。然后,使用 “\password”,设置密码。如图16所示

                                                                                  图16

最后也是最重要的一步,就是验证非本地客户端工具的连接。本文选择的工具是Navicat Premium,在主机(Windows7)打开Navicat与虚拟机中的postgresql服务器进行连接测试,如图17所示

                                                                                   图17 

可以发现连接成功。另外,可以使用命令service postgresql stop(非root用户执行后需要输入密码,root用户可以直接执行)停止数据库服务。至此,关于源码编译安装postgresql的全过程到此结束。

总结

 以上就是Linux离线环境下源码编译安装PostgreSQL的全过程,希望本文可以对遇到同样问题的朋友提供一些帮助。

原文链接:加载失败,请重新获取