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
即会提示输入两次密码,如下图:
CentOS 7 源码编译安装PostgreSQL 9.5的更多相关文章
- Centos 7源码编译安装 php7.1 之生产篇
Centos 7源码编译安装 php7.1 之生产篇 Published 2017年4月30日 by Node Cloud 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具 ...
- 1、Linux下源码编译安装PostgreSQL
操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...
- CentOS 7 源码编译安装MySQL 5.7.14
一.添加用户和组 1. 进入root: su 2. 添加组: groupadd mysql 3. 添加用户: useradd -r -g mysql -s /bin/false mysql 二.安装 ...
- CentOS 7 源码编译安装 Nginx
这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx- ...
- CentOS 7 源码编译安装 NodeJS
1.安装 gcc.gcc-c++ yum -y install gcc gcc-c++ kernel-devel 2.下载源码 wget https://nodejs.org/dist/v8.11.3 ...
- CentOS 7 源码编译安装 Redis
1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar -xzf redis-4.0.10.tar.gz cd ...
- CentOS中源码编译安装Nginx
1.从官网通过wget命令将Nginx源码包下载到Linux上 Nginx下载页面:http://nginx.org/en/download.html 2.在Linux上安装需要依赖的环境 yum ...
- 源码编译安装postgresql
依赖的库:libreadline-dev,zlib1g-dev 安装:下载解压源码包,然后 ./configure,make,make install即可.. 注意不能在root账户下跑server, ...
- Linux下源码编译安装PostgreSQL数据库
我使用的Postgres的源码版本为 postgresql-9.3.5.系统为 CentOS6.5 ,是64位. 下载以后直接阅读其中的 README然后阅读其中的INSTALL,按照其中将的步骤做就 ...
随机推荐
- 我的excel是2003版本的,里边有sheet1、sheet2两个工作表,当使用GetOleDbSchemaTable获取表Schema时,结果是4个,分别为: sheet1 sheet1$ sheet2 sheet2$
原帖地址:http://bbs.csdn.net/topics/310230098 ---------------------------------------------------------- ...
- form提交(图片,excel其他文件)
HTML表单需要设置enctype="multipart/form-data"这个属性,如果不这么设置,在提交表单时候,相关文件将无法获取. HTML表单如何打包数据文件是由enc ...
- Java并发编程3-抽象同步队列AQS详解
AQS是AtractQueuedSynchronizer(队列同步器)的简写,是用来构建锁或其他同步组件的基础框架.主要通过一个int类型的state来表示同步状态,内部有一个FIFO的同步队列来实现 ...
- BZOJ1017 树形DP
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 2308 Solved: 919[Submit][S ...
- poj3764字典树路径最大异或和
The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6853 Accepted: 1 ...
- git rebase 还是 merge的使用场景最通俗的解释
什么是 rebase? git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点.这个时候才能知道你当前分支于你需要比较的分支之间的差异. 原理很简单:rebase需 ...
- airflow的安装和使用 - 完全版
之前试用了azkaban一小段时间,虽然上手快速方便,但是功能还是太简单,不够灵活. Airflow使用代码来管理任务,这样应该是最灵活的,决定试一下. 我是python零基础,在使用airflow的 ...
- C# 数据操作系列 - 18 让Dapper更强的插件
0. 前言 在前一篇中我们讲到了Dapper的应用,但是给我们的感觉Dapper不像个ORM更像一个IDbConnection的扩展.是的,没错.在实际开发中我们经常用Dapper作为对EF Core ...
- [工具推荐]003.Tortoisegit使用教程
Git简介: Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 ...
- [批处理教程之Shell]002.Linux 常用命令大全
这一次收集的是比较基础的 Linux 命令,其实 Linux 命令未必每个都要记住,只要在用到时能查阅到需要的命令的用法. 系统信息 *.显示机器的处理器架构(1)arch *.显示机器的处理器架构( ...