测试环境
CentOS Linux release 7.9.2009 (Core)
postgresql-10.15
安装步骤
- 下载安装包
官网地址
postgresql10.15 - 解压安装包
tar -xvzf postgresql-10.15.tar.gz
- 准备工作
需要依赖 readline、readline-devel、zlib、zlib-devel压缩库
yum install -y readline*
yum install -y zlib*
- 开始安装
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 # 修改文件所属者
- 配置环境变量
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
上面环境变量配置一定要根据自身的安装目录配置
- 开机自启动
[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 # 设置为开机自启动
- 番外篇(创建用户等命令)
要先使用 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;# 附予权限
总结
总的来说,源码安装在pgsql的安装方式中,算是比较复杂的,步骤比较多的。但是好在自由(指定安装目录、数据库目录),所有配置基本全程参与,在没有办法用 yum 安装的时候,不失为一种选择。参考文档
http://www.postgres.cn/docs/10/install-short.html
pg_ctl (postgres.cn)
安装后设置 (postgres.cn)
initdb (postgres.cn)