PostgreSQL 14.4 ARM64 架构源码编译安装指南
PostgreSQL 14.4 ARM64 架构源码编译安装指南
文章目录
PostgreSQL 14.4 ARM64 架构源码编译安装指南 - 说明
- 环境要求
- 操作系统
- 1. 系统环境准备
- 1.1 更新系统包
- 1.2 创建 PostgreSQL 用户
- 2. 解压 PostgreSQL 14.4 源码包
- 3. 配置编译选项
- 4. 编译源代码
- 5. 安装 PostgreSQL
- 6. 初始化数据库
- 6.1 创建数据目录
- 6.2 初始化数据库集群
- 7. 配置 PostgreSQL
- 7.1 配置 postgresql.conf
- 7.2 配置 pg_hba.conf
- 8. 启动 PostgreSQL 服务
- 8.1 配置 systemd 服务
- 8.2 启动服务
- 9. 配置环境变量
- 9.1 设置 PATH 环境变量
- 9.2 应用环境变量
- 10. 验证安装
- 10.1 检查 PostgreSQL 版本
- 10.2 连接到数据库
- 10.3 创建测试数据库
- 11. 常见问题解决
- 11.1 编译错误
- 11.2 用户切换警告
- 11.3 权限问题
- 11.4 启动失败
- 11.5 连接被拒绝
说明
- PostgreSQL 版本: 14.4
- 架构要求: ARM64 (aarch64)
- 安装方式: 源码编译安装
- 适用场景: 在 ARM64 架构服务器上安装 PostgreSQL 数据库
根据项目信息,PostgreSQL 官方通常不提供 ARM64 架构的预编译二进制包,因此需要通过源码编译方式进行安装。
环境要求
操作系统
- Ubuntu 20.04/22.04 LTS (ARM64)
- Debian 11 (ARM64)
- 或其他支持 ARM64 的 Linux 发行版
1. 系统环境准备
1.1 更新系统包
# 更新软件包列表
sudo apt update# 升级已安装的软件包
sudo apt upgrade -y# 安装编译工具和依赖
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison systemd
1.2 创建 PostgreSQL 用户
# 创建 postgres 用户和组,并创建家目录
sudo groupadd postgres
sudo useradd -g postgres -m -s /bin/bash postgres# 设置用户密码(可选)
# sudo passwd postgres
参数说明:
-g postgres
:指定用户的主要组为 postgres 组-m
:创建用户的家目录(通常是 [/home/postgres](file:///home/postgres))-s /bin/bash
:设置用户的默认 shell 为 bash
2. 解压 PostgreSQL 14.4 源码包
# 切换到您的文件目录
cd /files# 查看文件
ls -la# 解压 PostgreSQL 14.4 源码包
sudo tar -zxvf postgresql-14.4.tar.gz# 查看解压后的目录结构
ls -la postgresql-14.4/
3. 配置编译选项
# 进入源码目录
cd /files/postgresql-14.4# 配置编译选项,指定安装目录为 /files/db_tool
./configure --prefix=/files/db_tool# 查看配置结果
echo $?
常用配置选项:
--prefix=PREFIX
:安装目录--with-openssl
:支持 OpenSSL--with-python
:支持 Python 存储过程--with-perl
:支持 Perl 存储过程--with-pam
:支持 PAM 认证
4. 编译源代码
# 在源码目录中执行编译
make# 查看编译结果(0 表示成功)
echo $?# 如果编译成功,会看到类似以下输出:
# "All of PostgreSQL successfully made. Ready to install."
编译过程可能需要较长时间,具体取决于硬件性能。
5. 安装 PostgreSQL
# 安装编译好的程序到指定目录
make install# 查看安装结果
echo $?# 查看安装后的目录结构
ls -la /files/db_tool/
安装完成后,目录结构应该如下:
/files/db_tool/
├── bin/ # 可执行文件
├── include/ # 头文件
├── lib/ # 库文件
├── share/ # 共享文件
└── ...
6. 初始化数据库
6.1 创建数据目录
# 创建数据目录
sudo mkdir -p /files/db_tool/data
sudo chown -R postgres:postgres /files/db_tool
6.2 初始化数据库集群
# 切换到 postgres 用户
sudo su - postgres# 初始化数据库(数据目录在 /files/db_tool/data)
/files/db_tool/bin/initdb -D /files/db_tool/data
7. 配置 PostgreSQL
7.1 配置 postgresql.conf
# 编辑主配置文件
vim /files/db_tool/data/postgresql.conf# 修改关键配置项
# listen_addresses = '*' # 监听所有地址
# port = 15432 # 端口号
# max_connections = 100 # 最大连接数
# shared_buffers = 128MB # 共享缓冲区大小
# unix_socket_directories = '/tmp,/files/db_tool' # Unix套接字目录
7.2 配置 pg_hba.conf
# 编辑客户端认证配置文件
vim /files/db_tool/data/pg_hba.conf# 添加必要的访问控制规则,例如:
# 本地连接信任
local all all trust
# 本地主机连接信任
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
# 允许特定IP地址通过密码连接到所有数据库
host all all 10.0.10.0/24 md5
8. 启动 PostgreSQL 服务
8.1 配置 systemd 服务
# 创建 systemd 服务文件
sudo vim /etc/systemd/system/postgresql.service
添加以下内容到服务文件:
[Unit]
Description=PostgreSQL database server
After=network.target[Service]
Type=forking
User=postgres
Group=postgresEnvironment=PGDATA=/files/db_tool/data
Environment=PGLOG=/files/db_tool/data/logfileExecStart=/files/db_tool/bin/pg_ctl start -D ${PGDATA} -l ${PGLOG}
ExecStop=/files/db_tool/bin/pg_ctl stop -D ${PGDATA}
ExecReload=/files/db_tool/bin/pg_ctl reload -D ${PGDATA}KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0[Install]
WantedBy=multi-user.target
8.2 启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload# 启用 PostgreSQL 服务开机自启
sudo systemctl enable postgresql# 启动 PostgreSQL 服务
sudo systemctl start postgresql# 检查服务状态
sudo systemctl status postgresql
9. 配置环境变量
9.1 设置 PATH 环境变量
# 编辑 postgres 用户的 .bashrc 文件
sudo vim /home/postgres/.bashrc# 添加以下行(如果没修改port则不需要export PGPORT)
export PATH=/files/db_tool/bin:$PATH
export PGDATA=/files/db_tool/data
export PGPORT=15432
9.2 应用环境变量
# 切换到 postgres 用户并重新加载环境变量
sudo su - postgres
source ~/.bashrc
10. 验证安装
10.1 检查 PostgreSQL 版本
# 检查 PostgreSQL 版本
/files/db_tool/bin/psql --version
10.2 连接到数据库
# 使用 psql 连接到数据库
psql -U postgres -d postgres# 在 psql 提示符中执行简单查询
# postgres=# SELECT version();
# postgres=# \q -- 退出
10.3 创建测试数据库
# 创建测试数据库
/files/db_tool/bin/createdb testdb# 连接到测试数据库
/files/db_tool/bin/psql -U postgres -d testdb# 在测试数据库中创建表
# testdb=# CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(100));
# testdb=# INSERT INTO test (name) VALUES ('Test Entry');
# testdb=# SELECT * FROM test;
# testdb=# \q -- 退出
11. 常见问题解决
11.1 编译错误
如果在 [./configure](file:///usr/bin/configure) 或 [make](file:///usr/bin/make) 阶段遇到错误,请检查:
- 是否安装了所有必需的依赖包
- 系统架构是否支持
- 磁盘空间是否充足
# 重新安装依赖包
sudo apt update
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison
11.2 用户切换警告
如果在执行 su - postgres
时出现以下警告:
su: 警告:无法更改到 /home/postgres 目录: 没有那个文件或目录
这表示 postgres 用户没有home目录。可以通过以下方式解决:
方法一:创建home目录(推荐在创建用户时使用 -m 参数)
# 为已存在的用户创建home目录
sudo mkhomedir_helper postgres
方法二:在创建用户时指定创建home目录
# 删除已存在的用户(如果需要重新创建)
sudo userdel postgres# 重新创建用户并创建home目录
sudo groupadd postgres
sudo useradd -g postgres -m -s /bin/bash postgres
方法三:临时切换用户(不切换到home目录)
# 使用 -s 参数指定 shell,避免切换到home目录
sudo su - postgres -s /bin/bash
11.3 权限问题
如果遇到权限问题,请确保以下几点:
- PostgreSQL 安装目录由 postgres 用户拥有
- PostgreSQL 二进制文件具有执行权限
- 配置文件具有正确的读写权限
# 修复权限问题
sudo chown -R postgres:postgres /files/db_tool
sudo chmod +x /files/db_tool/bin/*
11.4 启动失败
如果 PostgreSQL 启动失败,请检查日志文件:
# 查看日志文件
cat /files/db_tool/data/logfile
常见启动问题:
- 端口被占用:检查 15432 端口是否被其他进程占用
- 数据目录权限:确保数据目录由 postgres 用户拥有
- 配置错误:检查 postgresql.conf 和 pg_hba.conf 配置
11.5 连接被拒绝
如果连接数据库被拒绝,请检查:
- listen_addresses 设置是否正确
- pg_hba.conf 中的认证规则
- 防火墙设置是否允许 15432 端口
# 检查 PostgreSQL 是否在监听
netstat -tlnp | grep 15432# 如果使用 ufw 防火墙,允许 PostgreSQL 端口
sudo ufw allow 15432/tcp