PostgreSQL编译安装

这是我使用PostgreSQL的记录,在以后的使用过程中,难免出现有的问题现在解决了,但是后面会忘记现在的解决办法,现在记录下来,方便后面翻阅,也方便需要的朋友参考。

本次安装环境如下所示:

# 安装方式:编译安装
# 操作系统:archlinux
# PostgreSQL版本:v11.11
# 用户:postgres
# 安装位置: /opt/pgsql
# data位置:/opt/pgsql/data

一、准备环境

1,创建新用户,PostgreSQL不允许使用root用户运行服务,需要创建新用户用于管理PostgreSQL服务,这里和保持默认的一直,创建新用户名为postgres

# 创建群组 postgres
groupadd postgres
# 创建用户postgres,并指定群组为postgres
useradd -g postgres postgres

2,下载PostgreSQL源码,点击 PostgreSQL 进入源码版本选择页,可以选择相应的版本,我选择v11.11

切换到root用户
su root
# 进入操作目录 /opt
cd /opt
# 下载 PostgreSQL
wget https://ftp.postgresql.org/pub/source/v11.11/postgresql-11.11.tar.gz
# 解压
tar zxvf postgresql-11.11.tar.gz
# 切换目录
cd postgresql-11.11

二、编译安装

1、配置编译参数

# 查看编译参数
# ./configure --help
# 选择相应的参数,生成Makefile文件
./configure --prefix=/opt/pgsql --with-pgport=5432 --with-perl --with-openssl --with-tcl --with-python --with-pam --with-ldap --enable-thread-safety --with-blocksize=16 --with-wal-blocksize=16 --enable-debug --with-systemd

2、编译及安装

# 编译
make
# 安装
make install

3、安装第三方工具

进入第三方工具目录
cd contrib
# 编译
make
# 安装
make install

运行下面的命令

/opt/pgsql/bin/pg_ctl -V

如果显示pg_ctl (PostgreSQL) 11.11 以及类似的消息,只要不是表示已经安装成功了。但也只是表示安装成功了,接下来需要配置服务,这样在以后开机的时候就自动启动,就可以通过客户端访问了。

三、配置服务

archlinux使用systemd启动守护进程,systemd默认的服务目录为 /lib/systemd/system,安装PostgreSQL服务需要在该目录下创一个文件,为了和运行的软件保持一致,这里命名为postgresql-11.service 在该文件中添加如下内容。

[Unit]
Description=The PostgreSQL Database Server
After=syslog.target
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres

ExecStart=/opt/pgsql/bin/pg_ctl start -D /opt/pgsql/data
ExecStop=/opt/pgsql/bin/pg_ctl stop
ExecReload=/opt/pgsql/bin/pg_ctl reload -D /opt/pgsql/data
TimeoutSec=300

[Install]
WantedBy=multi-user.target

虽然这样配置好了,但是在开机的时候还是不能正常启动,为什么呢,有两个原因。一是不能以root用户启动PostgreSQL,这个问题我们已经在上面的服务文件中的字段User=postgres解决了,另一个 就是data文件夹的所有者必须为PostgreSQL管理者postgres

cd /opt/pgsql
chown -R postgres data
chgrp -R postgres data

现在重新开机,PostgreSQL就已经在后台启动了。

四、后续

现在还有两个问题问题,一是PATH环境变量,二是记录PostgreSQL语句的文件配置

PATH环境变量可以在任意位置运行命令,在这里我们早/etc/profile中添加如下语句

export PATH=/opt/pgsql/bin:$PATH

接着在终端中使用命令source /etc/profile 就可以在当前终端中运行PostgreSQL相关命令了。

第二个则是因为我在创建用户postgres的时候没有创建该用户的home目录。导致PostgreSQL无法生成文件~/.psql_history,解决办法有两个。一是为postgres新增home目录;这里采用第二种方法,在/etc/profile新增如下环境变量 HISTFILE或者PSQL_HISTPORY

export PSQL_HISTORY=/opt/pgsql/.psql_history

发布于 2021-03-11 16:06 ,编辑于 2021-03-12 11:18

PostgreSQL

还没有评论

写下你的评论…

×

拖拽到此处

图片将完成下载