Ubuntu编译安装postgreSQL 10.5

Ubuntu下编译安装postgreSQL 10.5

ubuntu 16.04 LTS系统
postgreSQL 10.5

安装包准备

  1. 从PostgreSQL官网下载PostgreSQL的安装包
    在这里插入图片描述

安装过程

  1. 解压源码包
tar zxvf postgresql-10.5.tar.gz
cd postgresql-10.5

检查环境配置

#创建postgreSQL的安装目录
mkdir /usr/local/postgresql
#检查环境配置--prefix是指定postgreSQL安装路径
./configure --prefix=/usr/local/postgresql

解决环境配置检查过程中出现的依赖问题

  1. 出现readline library not found依赖的解决
    在这里插入图片描述

解决方法:
有网络:apt-get install -y libreadline-gplv2-dev
无网络:下载软件包使用dpkg命令安装 ,可在网站pkgs.org上下载
libtinfo-dev_6.0+20160213-1ubuntu1_amd64.deb
libreadline-gplv2-dev_5.2+dfsg-3build1_amd64.deb
出现zlib library not found依赖问题的解决
在这里插入图片描述

有网络:apt-get install zlib1g-dev
无网络:下载软件包
zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb

  1. 再次重新检查环境
./configure --prefix=/usr/local/postgresql
  1. 编译安装
#编译安装
make && make install

出现下面的显示表示编译安装成功
在这里插入图片描述

安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装

cd contrib
make && make install
  1. 添加用户
    root 用户不能启动postgresql 所以创建一个普通用户来启动和管理
#如果直接只用useradd添加用户的话,可能出现没有home下的文件夹
#可以使用adduser 命令
adduser postgres

创建用户成功
在这里插入图片描述

配置postgres用户环境变量

#切换至postgres用户
su - postgres
#修改配置文件
vim ~/.profile
# 添加以下内容和修改PATH
export PGHOME=/usr/local/postgresql
export PGDATA=/var/postgresql/data
export PGHOST=localhost
export PATH="$HOME/bin:$HOME/.local/bin:$PATH:$PGHOME/bin"
export MANPATH=$PGHOME/share/man:$MANPATH
export LANG=en_US.utf8
export DATE=`date +"%Y-%m-%d %H:%M:%S"`
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
#下面只是启动服务的快捷配置,可不用配置
#alias pg_start='pg_ctl start -D $PGDATA'
#alias pg_stop='pg_ctl stop -D $PGDATA -m fast'

配置如下图
在这里插入图片描述

启动数据库

#初始化数据库
initdb -D /var/postgresql/data
#启动服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile start
#连接数据库
psql 
#创建数据库 
create database test; 
#创建表
create table t_user (id integer, name text); 
#插入测试数据
insert into t_user values (1,'joke');
#查询数据
select * from t_user ;
#退出psql窗口
\q

修改监听所有网络以及数据库连接数

# 修改配置文件
vim /var/postgresql/data/postgresql.conf 
# listen_addresses = ‘localhost’ 监听本机,'*'监听所有网络
listen_addresses = '*' 
#max_connections 数据库的连接数根据具体需求更改 

在这里插入图片描述

. **修改远程访问 **

vim /var/postgresql/data/pg_hba.conf 
#在文件的最下方加上下面的这句话,最后一个 trust 表示所有用户不需要密码,需要密码要设置为 md5
host    all         all         0.0.0.0/0             md5

在这里插入图片描述

防火墙开启端口

# 切换root用户
su - root
# 防火墙 允许5432 端口
ufw allow 5432

重启postgreSQL服务

# 切换postgres用户
su - postgres
#重启服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile restart

#停止服务
pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile stop

设置开机自启动

  1. 切换到root用户
su - root
1
  1. 找到解压后源码包里面的一个linux文件
cd /home/postgresql/postgresql-10.5/contrib/start-scripts
1

在这里插入图片描述

  1. 修改linux文件属性,添加X属性

    chmod a+x linux
    

    复制linux文件到/etc/init.d目录下,更名为postgresql

    cp linux /etc/init.d/postgresql
    

    ​ 修改/etc/init.d/postgresql文件的两个变量

    vi /etc/init.d/postgresql
    #prefix设置为postgresql的安装路径:prefix=/usr/local/postgresql
    #PGDATA设置为postgresql的数据目录路径:PGDATA="/var/postgresql/data"
    

    在这里插入图片描述

  2. 执行service postgresql start,可以启动PostgreSQL服务

service postgresql start

如果这里执行命令后出现Failed to start postgresql.service: Unit postgresql.service not found.错误
请检查配置postgres用户的环境变量的时候是否将PATH给export了

ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ
这里很重要,没有教程,有一个方法可用ubuntu18
||||||||||||||||||||||||||||||||
$ sudo service postgresql start
Failed to start postgresql.service: Unit postgresql.service is masked.
$ sudo systemctl unmask postgresql	--执行这一句即可生效
Removed symlink /etc/systemd/system/postgresql.service.

$ sudo systemctl restart postgresql
$ sudo service postgresql start
$ service postgresql status

设置postgresql服务开机自启动

#ubuntu 16.04前版本使用chkconfig命令
chkconfig --add postgresql
#ubuntu 16.04版本使用sysv-rc-conf命令,可能需要进行安装
sysv-rc-conf postgresql on


1. sysv-rc-conf 离线安装依赖的包 
libcurses-perl_1.33-1build1_amd64.deb
libterm-readkey-perl_2.33-1build1_amd64.deb
libcurses-ui-perl_0.9609-1_all.deb
sysv-rc-conf_0.99-7_all.deb
从上至下依次安装即可
2. 在线安装
apt-get install sysv-rc-conf

重新启动系统,postgreSQL自动启动

热门文章

暂无图片
编程学习 ·

毛毛爸爸手记-2

http://blog.sina.com.cn/s/blog_4bf99d0601000825.html今天,毛爸从天鹅和鸭子的故事说起。从前......一只美丽的天鹅有一天落在地上时,看见了一只健壮的鸭子,她立刻被这只帅气的鸭子所打动,她惊诧于鸭子不同于她同类的模样,不同于她同类气质,是那么的有型,那么的另类。…
暂无图片
编程学习 ·

Android中给Layout添加点击事件

@Android中给Layout添加点击事件 步骤一:在layout控件中设置clickable和focuseable和id <LinearLayout android:id="@+id/to_anchor_dialog" android:onClick=“onClick” android:clickable=“true” android:layout_width=“match_parent” android:layout_hei…
暂无图片
编程学习 ·

火箭少女101毕业,rocketgirls.fans粉丝站上线震撼饭圈

2年前的2018年6月23日晚:经过一百零四天的艰苦训练和比赛,由457家公司、13778名练习生中层层挑选出的11名女孩站上成团出道位,组成为期2年的限定女团,火箭少女101成团出道。两年后的2020年6月23日晚:火箭少女101的2年限定组合期限已到,晚上8点 “遇见再见”火箭少女101告…
暂无图片
编程学习 ·

依赖注入

1.依赖注入的概念 依赖注入( Dependency Injection ,简称 DI) 与控制反转 (loC) 的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。 当某个 Java 对象(调用者)需要调用另一个 Java 对象(被调用者,即被依赖对象)时, 在传统模式下,调用者通常会采用 "new 被调…
暂无图片
编程学习 ·

2020.7.1崔庆才教材《Python3网络爬虫开发实战》3.4爬取猫眼电影排行代码更正(绕过美团验证码)

前情提要 首先附上崔大神的github源码:3.4爬取猫眼电影排行 毕竟此段代码完成时间较早,截至2020.7.1日,发现了此段代码中两个需要修改的地方。 希望能给学习崔大神的小白一些帮助,希望大家有个好前途。 一、猫眼电影反爬更新 下图是崔大神的代码:估计是太多人学习爬虫拿猫…
暂无图片
编程学习 ·

JAVA中的集合(概述)

JAVA中的集合(概述)什么是集合,有什么用? 数组其实就是一个集合,集合实际上就是一个容器,可以用来容纳其他类型数据集合为什么说在开发中使用较多? 集合是一个容器,是一个载体,可以一次容纳多个对象。在实际开发中,假设连接数据库, 数据库中有10条记录,那么假设把这…
暂无图片
编程学习 ·

jQuery 的实现原理

(function(window, undefined) {})(window); jQuery 利用 JS 函数作用域的特性,采用立即调用表达式包裹了自身,解决命名空间和变量污染问题 window.jQuery = window.$ = jQuery; 在闭包当中将 jQuery 和 $ 绑定到 window 上,从而将 jQuery 和 $ 暴露为全局变量
暂无图片
编程学习 ·

C语言求两个数的最大公约数

#include<stdio.h> int main () {int i,j,t;scanf("%d %d",&i,&j);int m;if(i>j)//比较两者大小,让i存储两者较小的数; {t=i; //如果I>J,i j 位置互换 i=j;j=t;}for(m=i;m>0;m--)//因为两数的最大公约数必然是比两数最大的数字小,可能小于…
暂无图片
编程学习 ·

一起Talk Android吧(第二百五十五回:Android中的Toolbar标题一)

各位看官们大家好,上一回中咱们说的是Android中Toolbar的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在前面章回中介绍完了Toolbar的导航,本章回中将介绍Toolbar的标题。标题位于导航右侧,用来提示程序的内容或者当前页面的…
暂无图片
编程学习 ·

路由策略与路径控制

一.Passive-interface 1. RIP/IGRP 在指定接口不向外发送路由更新,但是接收路由更新 2. EIGRP 在指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器建立邻居关系,不发送其他EIGRP的数据流 3. OSPF 在指定接口不向外发送Hello消息,而且通过这个接口不与其他路由器…
暂无图片
编程学习 ·

基于小程序请求接口 wx.request 封装的类 axios 请求

基于小程序请求接口 wx.request 封装的类 axios 请求Introductionwx.request 的配置、axios 的调用方式源码戳我 feature支持 wx.request 所有配置项支持 axios 调用方式支持 自定义 baseUrl支持 自定义响应状态码对应 resolve 或 reject 状态支持 对响应(resolve/reject)分别…
暂无图片
编程学习 ·

mysql服务无法启动,报服务正在启动或停止中,请稍后片刻再试一次

这个错误我尝试了网上好多得方法最后只能卸载重装是最简单得。 于是我后面就是卸载重装了。后面就不上图了。希望有朋友碰到这个问题能给我一个解决方法。 在这里特此说明,我写得所有博客都是小编自己实际操作得。碰到得问题记录和写下解决方法得。小编也验证了很多网上别人得…
暂无图片
编程学习 ·

不使用乘法、除法和mod,实现两数相除

被除数除数=商+余数 需要注意的问题:int 的范围是[-2^31,2^31-1],也就是【-2147483648,2147483647】,如果-2147483648/-1结果会超出int 范围。 除法,乘法和mod都不能使用,那可以使用加减,移位。 只需保留商即可 保证数据在int范围。电脑做二进制除法的时候,是让被除数连…
暂无图片
编程学习 ·

剑指 Offer-JZ25-复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路代码实现 /…
暂无图片
编程学习 ·

PHP用户连续签到赠送额外积分

目录一、需求1、为什么要赠送积分2、怎么获取积分3、积分如何使用1)、兑换2)、抵扣3)、等等二、规则1、用户注册2、成功邀请新用户3、用户签到4、联想三、数据表1、用户表 user2、用户签到表 user_sign3、积分(获取)日志表 integral_log四、代码1、用户签到方法2、公共类 …
暂无图片
编程学习 ·

Design-适配器模式

适配器模式介绍实现代码实现 介绍 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对…
暂无图片
编程学习 ·

CDN和DNS的区别

相信有很多的朋友会被这几个名词绕的有些头大,很多朋友觉得智能DNS跟双线加速、CDN加速是类似的技术。其实不然,虽然他们的目的都是一个:让用户更快的访问网站。但是他们的应用原理却大相径庭。大家一定很清楚这几种都是比较常见的主机加速的方式。所以文本主要介绍一下“智…