</div>
<!--一个博主专栏付费入口-->
<!--一个博主专栏付费入口结束-->
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-4a3473df85.css">
<div class="htmledit_views" id="content_views">
<p>最近研究PostgreSQL,需要部署在Linux服务器上。在实际生产环境中,服务器通常是不会连接外网的,因此本人参考官方文档和网上相关资料,总结出在离线环境下Linux服务器(CentOS7)以源码编译的方式安装PostgreSQL的详细步骤如下:</p>
一、准备编译环境
检查服务器上是否存在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的全过程,希望本文可以对遇到同样问题的朋友提供一些帮助。