PostGreSQL(1)-源码安装
简述
目前大多数Linux 发行版都包含了 PostGreSql的安装源,通过yum或apt-get可以快速的安装好数据库。
在一些情况下,我们需要通过源码方式进行安装。 例如发行版的软件版本不满足我们的需求,或者生产环境无法对接外网下载软件等等。
下面将从头到尾介绍手动源码安装PostGres的全过程,供大家参考。
一、格式化磁盘
一般我们会为数据库挂载一个独立的磁盘用于数据存放,可以参考下面的操作完成磁盘格式化。
不需要挂载磁盘的可跳过这部分
A.查看磁盘信息
kwe1000570040:~ # fdisk -l
Disk /dev/vda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000aa73e
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 75505663 37751808 83 Linux
/dev/vda2 75505664 83886079 4190208 82 Linux swap / Solaris
Disk /dev/vdb: 322.1 GB, 322122547200 bytes
这里找到待使用的磁盘为 /dev/vdb
B.使用parted设置分区
//设置分区格式(gpt)
parted -s /dev/vdb mklabel gpt
//执行分区(1GB预留) --第一个分区用于存放工作软件
parted -a optimal -s /dev/vdb mkpart primary 1GB 100GB
//执行分区 --第二个分区用于存放数据
parted -a optimal -s /dev/vdb mkpart extend 100GB 100%
关于 Parted工具的使用可参考这里
C. 格式化并挂载分区
推荐使用XFS文件系统格式,在挂载分区时指定noatime,nodiratime选项可提升一些性能。
//XFS数据分区格式化
mkfs.xfs -f /dev/vdb1
mkfs.xfs -f /dev/vdb2
//创建数据目录
mkdir -p /opt/local
mkdir -p /data
chmod -R 755 /opt/local
chmod -R 755 /data
//写入FSTAB
echo "/dev/vdb1 /opt/local xfs noatime,nodiratime 0 0">> "/etc/fstab"
echo "/dev/vdb2 /data xfs noatime,nodiratime 0 0">> "/etc/fstab"
//挂载目录
mount -a
二、源码安装 PostGreSql
1. 安装 readline-devel
需事先安装 readline,否则编译过程会报错
wget https://ftp.gnu.org/gnu/readline/readline-6.0.tar.gz
tar -xzvf readline-6.0.tar.gz
cd readline
./configure
make && make install
2. 安装 PostGresql
执行下面的命令,将会完成源码下载、编码以及安装
wget https://ftp.postgresql.org/pub/source/v10.6/postgresql-10.6.tar.gz
tar -xzvf postgresql-10.6.tar.gz
cd postgresql-10.6
./configure --prefix=/opt/local/postgres
make && make install
--prefix表示安装的目标路径,在安装完成后可以进入该目录找到对应的执行程序。
这里使用的是postgresql-10.6的版本,可以从这里下载到不同的版本。
3. 设置环境变量
编辑 /etc/profile 文件,在末尾加入:
export PG_HOME=/opt/local/postgres
export PATH=$PG_HOME/bin:$PATH
再次执行 source /etc/profile即完成环境变量设置。
接下来,需要设置动态链接库的加载路径(LD_LIBRARY_PATH),否则会报找不到libpq.so.5的错误,如下:
./psql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
设置链接库路径
sudo /sbin/ldconfig /opt/local/pgsql/lib
或通过编辑/etc/profile,加入:
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
三、 初始化
1. 设置运行用户
groupadd postgres
useradd -G postgres postgres
passwd postgres
...
2. 初始化数据库
//执行初始化
su postgres -c 'pg_ctl -D /data/pgsql/data initdb'
//启动数据库
su postgres -c 'pg_ctl start -D /data/pgsql/data -l serverlog'
su postgres -c '...'表示以postgres 的权限来执行程序。
pg_ctl 是postgres 提供的控制程序,可用于初始化、启动、停止数据库进程。
执行完上述的命令,可以发现在 /data/pgsql/data目录中生成了一系列的数据库文件,如下:
-rw------- 1 postgres users 3 Mar 5 17:18 PG_VERSION
drwx------ 6 postgres users 50 Mar 5 18:22 base
drwx------ 2 postgres users 4.0K Mar 5 17:50 global
drwx------ 2 postgres users 6 Mar 5 17:18 pg_commit_ts
drwx------ 2 postgres users 6 Mar 5 17:18 pg_dynshmem
-rw------- 1 postgres users 4.5K Mar 5 17:18 pg_hba.conf
-rw------- 1 postgres users 1.6K Mar 5 17:18 pg_ident.conf
drwx------ 4 postgres users 65 Mar 5 18:28 pg_logical
drwx------ 4 postgres users 34 Mar 5 17:18 pg_multixact
drwx------ 2 postgres users 17 Mar 5 17:49 pg_notify
drwx------ 2 postgres users 6 Mar 5 17:18 pg_replslot
drwx------ 2 postgres users 6 Mar 5 17:18 pg_serial
drwx------ 2 postgres users 6 Mar 5 17:18 pg_snapshots
drwx------ 2 postgres users 6 Mar 5 17:49 pg_stat
drwx------ 2 postgres users 60 Mar 7 16:06 pg_stat_tmp
drwx------ 2 postgres users 17 Mar 5 17:18 pg_subtrans
drwx------ 2 postgres users 6 Mar 5 17:18 pg_tblspc
drwx------ 2 postgres users 6 Mar 5 17:18 pg_twophase
drwx------ 3 postgres users 58 Mar 5 17:18 pg_wal
drwx------ 2 postgres users 17 Mar 5 17:18 pg_xact
-rw------- 1 postgres users 88 Mar 5 17:18 postgresql.auto.conf
-rw------- 1 postgres users 23K Mar 5 17:18 postgresql.conf
-rw------- 1 postgres users 57 Mar 5 17:49 postmaster.opts
-rw------- 1 postgres users 83 Mar 5 17:49 postmaster.pid
-rw-r--r-- 1 postgres users 1.2K Mar 5 18:22 serverlog
其中,需要了解的几个文件:
| 文件 | 描述 |
|---|---|
| postmaster.pid | 首行记录了进程PID |
| serverlog | 数据库日志 |
| postgresql.conf | 主配置文件(可做定制 |
| pg_hba.conf | 鉴权相关文件 |
| PG_VERSION | 当前主版本号 |
3. 设置远程访问
编辑 pg_hba.conf文件,在末尾添加一行:
host all all 0.0.0.0/0 md5
为了让 postgres用户可以远程访问,可以通过 psql 设置密码:
alter user postgres with password 'postgres';
开启远程访问
默认情况下 postgresql 仅仅监听本机的端口,需要编辑 /webdata/pgsql/data/postgresql.conf 文件开启远程IP的访问
listen_addresses = '*'
4. 常用命令
如果需要定制端口,可以执行脚本:
postgres -p 5430 -D /data/pgsql/data >serverlog 2>&1 &
检查进程是否存活:
netstat -nlp |grep `head -1 /data/pgsql/data/postmaster.pid`
停止数据库进程
kill -INT `head -1 /data/pgsql/data/postmaster.pid`
四、 自动运行
数据库一般需要设置为随系统启动运行,省去每次重启要手动拉起进程的麻烦。
1. 配置到服务
找到源码目录中 contrib/start-scripts/linux脚本文件,拷贝为 /etc/init.d/postgres。
修改内容如下:
# 程序所在目录
prefix=/opt/local/postgres
# 数据目录
PGDATA="/data/pgsql/data"
# 运行用户
PGUSER=postgres
# 日志文件
PGLOG="$PGDATA/serverlog"
设置执行权限
chmod +x /etc/init.d/postgres
此后,执行以下命令可以方便的启停服务
//手动启动服务
service postgres start
//查看服务状态
service postgres status
//手动停止服务
service postgres stop
2. 设置自启动
执行以下命令:
//设置开机启动
chkconfig --add postgres
如果需要对数据库做一些参数修改,可以编辑 $DATA_DIR/postgres.conf 这个文件
五、 小试牛刀
按照前面的步骤做好了数据库的安装及配置之后,输入以下命令:
psql -U postgres -p 5432
> select version();
回车,可以看到以下输出:
version
---------------------------------------------------------------------------------------------------------------------
PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 64-bit
(1 row)
至此,我们就已经完成了整个源码的安装过程!
PostGreSQL(1)-源码安装的更多相关文章
- postgresql 9源码安装
安装过程: 1.configuration --prefix=PREFIX install all files under the directory PREFIX instead of usr/lo ...
- CentOS7 源码安装 PostgreSQL 12
PostgreSQL 12 源码安装 Table of Contents 1. 下载 2. 准备环境 3. 编译安装 4. 设置环境变量 5. 初始化数据库 6. 配置参数文件 6.1. postgr ...
- Postgresql源码安装
以在64位CentOS6.5操作系统上源码安装postgresql-9.6beta1为例 一.进入官网下载代码(postgresql-9.6beta1.tar.gz) https://www.post ...
- 国产龙芯服务器源码安装PostgreSQL数据库的方法
1. 公司最近有一些国产化项目的需求, 要求在国产CPU的服务器上面安装pg数据库等. 2.. 但是差查了下中标麒麟的官网,在龙芯MIPS的操作系统包源里面仅有 postgreSQL 9.2 版本的r ...
- Greenplum 源码安装教程 —— 以 CentOS 平台为例
Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...
- centos环境源码安装postgresql9.4
源码安装简要步骤 下载PostgreSQL 源码包 下载根目录地址:http://ftp.postgresql.org/ 本人选择的是当前最新版本v9.4.1:http://ftp.postgre ...
- RedHat7下PostGIS源码安装
本文介绍在RedHat7环境下安装使用PostGIS的流程. 1. PostgreSQL 1.1 yum安装PostgreSQL 这个比较简单,直接使用yum安装即可. $ sudo yum inst ...
- zabbix源码安装实例
环境 系统 Centos7 zabbix版本 Zabbix 3.4.15 (revision 86739) zabbix源码安装 .tar.gz cd zab ...
- gitlab 源码安装=》rpm安装横向迁移(version 9.0)
准备: 下载版本地址: https://packages.gitlab.com/gitlab/gitlab-ce 迁移环境: 源码安装的gitlab9.0.13 目标迁移至9.0.13 RPM安装的环 ...
随机推荐
- Linux的安装(虚拟机环境)与基础配置
一.背景 本文介绍如何安装虚拟机VMware以及如果在虚拟机上安装Linux系统以及Linux安装完毕之后的基础配置 需要准备的东西有VMware以及Linux镜像文件 二.下载安装VMware 下载 ...
- 在Linux上安装Python3
1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...
- 115个Java面试题和答案——终极列表(上)【转】
本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能 ...
- springmvc 请求经过controller后静态资源无法访问的问题
经过RequestMapping(“xx”)后 转发请求时会在url里面附带地址, 导致访问静态资源文件失败, 解决办法是在 spring-mvc.xml文件中加上 <mvc:default-s ...
- jieba库分词
(1)团队简介的词频统计 import jieba import collections s="制作一个购票小程序,这个购票小程序可以根据客户曾经的购票历史" s+="和 ...
- python:Json模块dumps、loads、dump、load介绍
由上篇文章(python3+requests:get/post请求)涉及到的json.dumps()扩展 1.json.dumps()用于将dict类型的数据转成str 备注:文件路径前面加上 r 是 ...
- Python(2)深入Python函数定义
Python学习 Part2:深入Python函数定义 在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认 ...
- js术语扫盲贴:XHR、RegExp、call-apply、prototype
(1) XHR:xml httprequestXHR注入:XHR 注入技术是通过XMLHttpRest来获取javascript的.但与eval不同的是,该机制是通过创建一个script的DOM元素, ...
- app后端设计(4)-- 通讯的安全性
在app的后台设计中,一个很重要的因素是考虑通讯的安全性. 因此,我们需要考虑的要点有: 1. 在app和后台,都不能保存任何用户密码的明文 2. 在app和后台通讯的过程中,怎么保证用户信息的安全性 ...
- sed、awk——运维必须掌握的两个工具
今天主要跟大家介绍2个非常霸道的工具,sed和awk,本篇文章将介绍这两个工具在日常运维中的常用用法,工作中这两个工具要掌握好了在结合一些管道命令.正则表达式,日常处理事务简直666啦! l Sed ...