PGSQL10 源码安装

测试环境

CentOS Linux release 7.9.2009 (Core)
postgresql-10.15

安装步骤

  1. 下载安装包
    官网地址
    postgresql10.15
  2. 解压安装包
tar -xvzf postgresql-10.15.tar.gz 
  1. 准备工作
    需要依赖 readline、readline-devel、zlib、zlib-devel压缩库
yum install -y readline*
yum install -y zlib*

详细解释

  1. 开始安装
cd postgresql-10.15
./configure --prefix=/usr/local/pgsql #--prefix 参数表示指定安装目录
make
make install
adduser postgres # postregs 默认为pgsql的超级管理员用户,必须创建
mkdir /usr/local/pgsql/data  # 指定数据存放目录
chown -R postgres /usr/local/pgsql/data #更改目录所属用户
su postgres  #切换用户
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data # 初始化数据库
touch /usr/local/pgsql/data/filelog # 创建日志文件
/usr/local/pgsql/bin/pg_ctl -D /usr/local/cms/pgsql/data -l /usr/local/pgsql/data/filelog start # 启动数据库服务
/usr/local/pgsql/bin/createdb test  # 创建数据库
/usr/local/pgsql/bin/psql test # 进入数据库

后来在安装 10.18版本的时候,在启动数据库服务时遇到了下面的错误信息

./pg_ctl -D /usr/local/cms/pgsql/data -l logfile start
waiting for server to start..../bin/sh: logfile: Permission denied
stopped waiting
pg_ctl: could not start server
Examine the log output.

根据提示可以看到,是由于 权限问题,执行下面的命令就解决了

chmod 755 logfile # 修改文件权限
chown postgres logfile # 修改文件所属者
  1. 配置环境变量
vim /etc/profile
export PG_DATA=/usr/local/pgsql/data
export PG_HOME=/usr/local/pgsql
MANPATH=/usr/local/pgsql/share/man:$MANPATH
export MANPATH
export PATH=$PATH:$PG_HOME/bin
source  /etc/profile

上面环境变量配置一定要根据自身的安装目录配置

  1. 开机自启动
[Unit]
Description=PostgreSQL 10 database server
After=syslog.target network.target

[Service]
Type=forking
TimeoutSec=120

User=postgres

Environment=PGDATA=/usr/local/pgsql/data
PIDFILE=/usr/local/pgsql/data/pstmaster.pid

ExecStart=/usr/local/pgsql/bin/pg_ctl start -w -D "/usr/local/pgsql/data" -l "/usr/local/pgsql/pg_log/startup.log"
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -m fast -w -D "/usr/local/pgsql/data"
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D "/usr/local/pgsql/data"

[Install]
WantedBy=multi-user.target

需要注意的是-l参数是指定数据库的启动日志,所以我们需要自己创建文件夹,并且将文件夹的所属用户修改为 postgres

mkdir /usr/local/pgsql/pg_log 
chown -R postgres /usr/local/pgsql/pg_log 

将上面的文件命名为 pgsql.service 复制到 /usr/lib/systemd/system/ 或者 /etc/systemd/system/ 目录下

mv pgsql.service /usr/lib/systemd/system/pgsql.service
systemctl start pgsql # 启动服务
systemctl status pgsql # 查看服务状态
systemctl enable pgsql # 设置为开机自启动
  1. 番外篇(创建用户等命令)
    要先使用 pgsql 命令连接进入服务器
postgres=# alter role postgres with password 'cms';
postgres=# CREATE USER cms WITH PASSWORD 'cms'; # 创建用户
postgres=# CREATE DATABASE bsjams  WITH OWNER cms;# 创建数据库
postgres=# GRANT ALL PRIVILEGES ON DATABASE bsjams to cms;# 附予权限
  1. 总结
    总的来说,源码安装在pgsql的安装方式中,算是比较复杂的,步骤比较多的。但是好在自由(指定安装目录、数据库目录),所有配置基本全程参与,在没有办法用 yum 安装的时候,不失为一种选择。

  2. 参考文档
    http://www.postgres.cn/docs/10/install-short.html
    pg_ctl (postgres.cn)
    安装后设置 (postgres.cn)
    initdb (postgres.cn)

你可能感兴趣的:(PGSQL10 源码安装)