乐于分享
好东西不私藏

Linux系统源码安装postgresql(最新)

Linux系统源码安装postgresql(最新)
前言
PostgreSQL 的热度持续攀升,这里整理一份 PostgreSQL 源码安装教程,按步骤操作即可,有需要可以直接复制粘贴执行。

1 获取源代码

  • 你可以选择下载官方发布的压缩包,或者使用 Git 克隆仓库。其中,Git 方式可以更方便地切换分支和更新代码。
# 方式一:克隆Git仓库(推荐,以PostgreSQL 18稳定版为例)git clone https://git.postgresql.org/git/postgresql.git -b REL_18_STABLEcd postgresql# 方式二:下载官方压缩包wget https://ftp.postgresql.org/pub/source/v18.1/postgresql-18.1.tar.gztar -xzf postgresql-18.1.tar.gzcd postgresql-18.1

2 执行编译与安装

  • 安装依赖
dnf install -y gcc perl make readline-devel zlib-devel bison flex openssl-devel libicu-devel
  • 配置编译环境
# 默认安装到 /usr/local/pgsql./configure# 如果你需要启用 SSL 支持,请添加 --with-openssl 参数# ./configure --with-openssl# 如果你需要指定路径、启用特定功能,可以添加参数# 例如:./configure --prefix=/home/user/pgsql# 如果都要# ./configure --prefix=/usr/local/pgsql --with-openssl# 如果编译后不满意,可以清理之前的配置,重新编译make distclean
  • 开始编译
# 使用所有CPU核心并行编译,以加快速度make -j $(nproc)# 如果需要,也可以编译所有组件(包括contrib下的扩展和文档)# make world -j $(nproc)
  • 安装到系统
make install# 如果你之前执行的是make world,那么这里应使用 make install-world

3 初始化、启动与连接

  • 创建 postgres 用户
adduser postgres
  • 创建数据目录并授权:通常数据目录会放在 /usr/local/pgsql/data,你需要将其所有者改为 postgres 用户
mkdir -p /usr/local/pgsql/datachown postgres:postgres /usr/local/pgsql/data
  • 初始化数据库集群:切换到 postgres 用户,并使用 initdb 命令初始化数据目录
su - postgres/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • 启动数据库服务器:仍然在 postgres 用户下,使用 pg_ctl 工具启动服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
  • 创建测试数据库并连接:最后,创建一个名为 test 的数据库并通过 psql 命令行工具连接进去,验证一切是否正常
/usr/local/pgsql/bin/createdb test/usr/local/pgsql/bin/psql test
  • 停止数据库服务
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop

4 配置环境变量

  • 编辑/etc/profile
vim /etc/profile
  • 在文件中添加以下内容:
export PATH=/usr/local/pgsql/bin:$PATH
  • 刷新环境变量
source /etc/profile
  • 验证 PATH 配置
which psql# 应该输出 /usr/local/pgsql/bin/psqlpsql --version# 应该输出 PostgreSQL 的版本信息

5 将 PostgreSQL 配置为 systemd 服务

  • 创建 systemd 服务文件
vim /etc/systemd/system/postgresql.service
  • 写入以下内容
[Unit]Description=PostgreSQL database serverAfter=network.target[Service]Type=forkingUser=postgresGroup=postgresEnvironment=PGDATA=/usr/local/pgsql/dataExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -sExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fastExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -sRestart=on-failure[Install]WantedBy=multi-user.target
  • 重新加载 systemd 并启动服务
# 让 systemd 重新读取配置systemctl daemon-reload   # 启动systemctl start postgresql# 停止systemctl stop postgresql# 重启systemctl restart postgresql# 重新加载配置(不停服)systemctl reload postgresql# 查看状态systemctl status postgresql# 查看日志journalctl -u postgresql -f# 查看最近的日志journalctl -u postgresql -n 50

点个关注,干货不错过。