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