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 stop4 配置环境变量
编辑 /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
点个关注,干货不错过。
夜雨聆风