CentOS 7 源码编译安装PostgreSQL 9.5

下载

在postgresql的官方即可找到源码文件目录,地址如下:https://www.postgresql.org/ftp/source/,在下载列表中根据需求选择版本,进入子目录后,可以看到文件列表:

如上图,可以看到提供了两种压缩格式,此处我们选择postgresql-9.5.5.tar.gz,下载完成后上传至CentOS服务器的指定目录即可。

配置编译安装

首先进入pg压缩包目录通过tar -zxvf ./postgresql-9.5.5.tar.gz进行解压,然后就可以开始编译安装了,进入解压目录,通过./configure --help可以看到编译相关的帮助信息,如下图:

如上图,--prefix=dir可以指定安装目录,还有比如--with-python则可以使用python语法的PL/Python过程语言自定义函数,根据需求我们暂且用不到,所以编译时仅指定一个安装目录即可:

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

运行编译后发现会提示没有c编译器,是因为新系统的原因,所以安装一个gcc编译器即可:

yum install gcc

安装完成后再次编译postgres,发现提示缺少readline库,如下图:

如上图,但是通过rpm -qa | grep readline命令查看可以发现系统默认是自带readline包的,如下图:

那么肯定还是缺少与readline相关的包了,通过yum search readline进行搜索可以发现一个readline-devel包,如下图:

其实我们缺少的正是这个readline开发包(readline-devel),而不是readline包,所以接下来安装一下readline-devel:

yum install readline-devel

安装完成后再次编译postgresql,还是报错,这次提示缺少zlib库:

同理,缺少的依然是zlib开发包(zlib-devel)而并不是zlib包,所以继续安装zlib-devel:

yum install zlib-devel

安装完成后再次编译postgresql,并没有再报error,可以看到提示创建了config.status配置文件

配置完成了,接下来就可以编译安装了,依次执行:

make
make install

看到如下提示即可说明编译安装成功:

用户权限与环境变量

编译安装成功后,接下来要做的就是创建一个普通用户,因为默认超级用户(root)不能启动postgresql,所以需要创建一个普通用户来启动数据库,执行以下命令创建用户:

useradd postgres

接下来需要设置权限,将postgres的数据目录全部赋权给postgres用户(此处我将postgres的数据目录指定在在/usr/local/postgresql/data目录下):

chown -R postgres:postgres /usr/local/postgresql/

最后为了方便起见设置一下相关的环境变量,此处仅仅设置postgres用户的环境变量,所以首先通过su - postgres切换到postgres用户,打开.bash_profile文件并追加以下内容:

修改完成后可以通过source ./.bash_profile使其立即生效,接下来检验一下环境变量是否设置正确,切换任意目录输入which psql以及psql -V即可分别查看psql客户端的路径以及postgresql的数据库版本,如下图:

初始化数据库

由于配置了环境变量,所以此处我们直接执行initdb即可完成db初始化,但在这之前我们可以通过initdb --help看一下初始化相关的帮助信息:

如上图,可以看到在使用initdb进行初始化的同时我们可以指定参数来同时进行一些初始化工作,

例如

指定pgdata(postgresql数据目录)、

指定encoding(编码)、

指定数据库超级用户的用户名和密码等等

在最后面我标记出的这段话指出了如果data目录没有指定,则会默认使用环境变量中的PGDATA,由于之前我们刚刚设置了PGDATA环境变量,所以此处我们也就无需再额外指定,最后执行初始化命令即可:

# initdb

看到如下信息就说明初始化成功了:

同时在postgresql的目录可以看到生成的数据目录data以及该目录的相关数据和配置文件:

如上图,base目录是表空间目录global目录是相关全局变量的目录

pg_hba.conf和postgresql.conf在之前的博客也都提及了,

一个是访问控制配置(127.0.0.1改为信任的客户端ip网段使其可以远程访问),

一个是postgresql主配置文件(listen_address=localhost改为星号使其监听整个网络),方便起见我这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问,算是提供一个最低级的安全防护:

而postgresql.conf就像上面说的那样修改一下listen_address使其监听整个网络即可:

最后别忘记开放pg的5432端口,否则即使做了上面两处修改客户端依然无法连接postgresql,所以将5432端口加入到zone即可,依次运行以下命令(注意此处需要切回root用户,否则没有权限):

firewall-cmd --zone=public --add-port=5432/tcp --permanent

firewall-cmd --reload

至此就配置完毕了,还可以通过firewall-cmd --zone=public --list-ports来查看已打开的端口列表再次确认一下:

firewall-cmd --zone=public --list-ports

启动和连接

由于我们设置了环境变量,所以已经指定了数据目录PGDATA,-l表示日志文件目录,通常需要指定,所以我们在/usr/local/postgresql根目录下再创建一个log目录用来存放日志文件(注意别忘记赋予可写的权限),

最后运行pg_ctl start -l /usr/local/postgresql/log/pg_server.log即可启动数据库,看到如下提示就说明启动成功了:

或者通过ps -ef|grep postgres查看一下postgres相关是否存在相关进程,如下图也可以说明已启动成功:

启动成功后我们就可以通过postgresql自带的客户端工具psql来进行连接,直接输入psql看到版本信息则说明连接成功:

接下来要做的第一件事就是设置postgres用户的密码(默认为空),用psql连接成功后直接输入\password即会提示输入两次密码,如下图:

原文地址:https://www.cnblogs.com/feixiablog/p/9249454.html

时间: 2024-11-13 19:21:00

CentOS 7 源码编译安装PostgreSQL 9.5的相关文章

Centos 7 源码编译安装内核4.14.12

为什么要编译内核 需要新功能的支持: 在生产环境中,突然会需要使用一些新的功能,但是原有的内核并不支持此功能,这是就需要重新编译出一个新的内核来提供对此新功能的支持,比如虚拟化.iptables功能必须要在2.4.X以上版本的内核中才支持. 原核心太过于臃肿: 原来安装的内核中,有很多不常用甚至基本上用不到的功能支持,而这些功能又会使内核文件变得很大,这时要将此变成一个简化切功能够用的内核就需要进行重新编译. 与硬件搭配的稳定性: 很多情况下,系统内核中默认一般默认支持的CPU类型为Inter,

CentOS 6源码编译安装 PHP 7.0.5

环境介绍: 系统版本:RHEL 6 软件仓库:yum-Base,yum-Epel PHP版本:PHP 7.0.5 安装方式:源码编译 删除原有yum安装版本php # yum remove php -y # yum remove php-* -y 2.安装开发包和依赖环境 # yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel

Centos 7 源码编译安装mysql 5.6.22(整理篇)

经过看了几篇文档,都没有写完全.稍微整理了一下,重新一步一步进行编译安装mysql在centos7上. 安装步骤如下: 1.安装编译环境 # yum -y install gcc- gcc-c++  ncurses-devel per # yum install cmake 2.建立mysql目录和帐号,及目录属性 # mkdir -p /data/mydata # mkdir -p /usr/local/mysql # useradd -d /data/mydata -s  /sbin/nol

centos软件源码编译安装httpd

使用CentOS软件过程中,可能需要用编译使用.src的软件源码包,有些是因为需要某些功能,有些是需要某个版本,以下以httpd为例: 下载源码httpd并编译[[email protected] ~]# tar -xf httpd-2.4.6.tar.bz2[[email protected] ~]# cd httpd-2.4.6; ls #看到install文件[[email protected] httpd-2.4.6]# cat install #查看帮助,有些软件是README...$

CentOS 7 源码编译安装MySQL 5.7.14

一.添加用户和组 1. 进入root: su 2. 添加组: groupadd mysql 3. 添加用户: useradd -r -g mysql -s /bin/false mysql 二.安装 1. 首先到MySQL官网下载最新版的MySQL 5.7.14,进入http://dev.mysql.com/downloads/mysql/,选择Source Code下的Generic Linux. 2. 解压 tar zxvf mysql-5.7.14.tar.gz 3. 安装MySQL所需要

CentOS 7 源码编译安装 Nginx

这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx-1.14.0.tar.gz cd nginx-1.14.0 2.安装编译环境 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 3.编译安装 #添加用户和组 groupadd www useradd -g

Linux下源码编译安装PostgreSQL数据库

我使用的Postgres的源码版本为 postgresql-9.3.5.系统为 CentOS6.5 ,是64位. 下载以后直接阅读其中的 README然后阅读其中的INSTALL,按照其中将的步骤做就可以了. 我在编译的时候,因为有两个库找不到,我系统中没有,所以我的configure参数如下:./configure --without-readline --without-zlib 然后接下来和 INSTALL 中的步骤完全不知,成功了. 然后,在源码的example中有几个使用libpq的代

源码编译安装postgresql

依赖的库:libreadline-dev,zlib1g-dev 安装:下载解压源码包,然后 ./configure,make,make install即可.. 注意不能在root账户下跑server,要新建一个 ref:http://mingxinglai.com/cn/2014/03/compile-postgresql-in-linux/

ubuntu14.04 LTS 源码编译安装postgreSQL

一.环境 ubuntu14.04 postgresql-9.4.3 二.安装 1.依赖包安装 sudo apt-get install libperl-dev python-dev libreadline-gplv2-dev zlib1g-dev 2.下载postgreSQL,编译安装 wger https://ftp.postgresql.org/pub/source/v9.4.3/postgresql-9.4.3.tar.bz2 tar -jxvf postgresql-9.4.3.tar.