统信UOS部署PostgreSQL有三种主要方式:一、APT在线安装,适合联网环境快速部署;二、RPM/DEB离线包安装,适用于内网或指定版本;三、源码编译安装,满足定制化与高版本需求;后续需完成初始化、配置监听与认证、防火墙及systemd服务集成。

如果您在统信UOS操作系统上需要部署PostgreSQL数据库服务,但系统默认未预装或版本不符合需求,则需根据网络环境、目标版本及部署要求选择适配的安装与配置路径。以下是多种可行的方法:
一、APT在线安装(适用于快速部署标准版本)
该方法利用统信UOS内置的APT包管理器直接从官方源拉取并安装PostgreSQL及其客户端组件,操作简洁、依赖自动解决,适合对版本无严格限定且具备互联网连接的场景。
1、以root权限更新软件包索引:
sudo apt update
2、执行一键安装命令,同时部署服务端与客户端工具:
sudo apt install -y postgresql postgresql-contrib
3、安装完成后,系统将自动创建postgres系统用户,并初始化默认数据目录;验证服务状态:
sudo systemctl status postgresql
4、如服务未运行,手动启动并设为开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
二、RPM/DEB离线包安装(适用于无网环境或指定版本)
当目标服务器处于封闭内网时,需提前在可联网机器下载对应架构(如amd64/arm64)与版本(如postgresql-14.2)的RPM或DEB安装包,连同依赖一并导入后本地安装,避免编译耗时。
1、在联网机下载所需包(以DEB为例):
wget https://professional-packages.chinauos.com/desktop-professional/pool/main/p/postgresql-14/postgresql-14_14.2-1.pgdg+uos20_amd64.deb
2、将下载的.deb文件及依赖包(如postgresql-client-14、libpq5等)拷贝至目标UOS机器
3、使用dpkg命令强制安装主包(忽略部分依赖暂未满足的情况):
sudo dpkg -i --force-depends postgresql-14_14.2-1.pgdg+uos20_amd64.deb
4、修复缺失依赖:
sudo apt --fix-broken install -y
5、初始化集群并启动服务:
sudo /usr/lib/postgresql/14/bin/initdb -D /var/lib/postgresql/14/main/
sudo systemctl start postgresql@14-main
三、源码编译安装(适用于定制化需求或高版本适配)
此方式允许精确控制安装路径、启用SSL/PAM/LDAP等高级特性,并支持安装apt源中未提供的新版(如PostgreSQL 14.2 + PostGIS 3.2),但需手动处理全部依赖及编译参数。
1、安装编译基础依赖:
sudo apt update && sudo apt install -y build-essential libreadline-dev zlib1g-dev libxml2-dev libxslt-dev libssl-dev libicu-dev libldap2-dev libcurl4-openssl-dev libpam0g-dev uuid-dev libgeos-dev libproj-dev protobuf-compiler libprotobuf-dev libprotobuf-c-dev gdal-bin libgdal-dev
2、下载并解压源码:
wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.bz2
tar xjf postgresql-14.2.tar.bz2
cd postgresql-14.2
3、配置编译选项(示例为通用安全增强配置):
./configure --prefix=/usr/local/pgsql --with-openssl --with-pam --with-ldap --with-libxml --with-libxslt --with-icu --with-zlib --with-readline
4、编译并安装:
make -j$(nproc)
sudo make install
5、创建专用用户与数据目录:
sudo useradd -m -s /bin/bash postgres
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/data /usr/local/pgsql
四、数据库服务初始化与基础配置
无论采用何种安装方式,均需完成数据库实例初始化及关键配置项调整,方可对外提供服务。该步骤聚焦于身份认证策略、监听地址与访问控制等核心参数。
1、切换至postgres用户并初始化数据目录:
sudo su - postgres -c "/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data"
2、编辑postgresql.conf启用远程监听:
sudo nano /usr/local/pgsql/data/postgresql.conf
修改以下两行:
listen_addresses = '0.0.0.0'
port = 5432
3、编辑pg_hba.conf添加密码认证规则:
sudo nano /usr/local/pgsql/data/pg_hba.conf
在末尾追加一行:
host all all 0.0.0.0/0 md5
4、启动服务进程:
sudo /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start
五、防火墙与系统服务集成配置
为确保外部客户端能稳定连接数据库,需同步开放系统级网络端口,并将PostgreSQL纳入systemd服务管理体系,实现标准化启停与故障恢复能力。
1、检查并启用UOS默认防火墙ufw:
sudo ufw status verbose
若非活跃,启用并设置默认策略:
sudo ufw enable
sudo ufw default deny incoming
2、放行PostgreSQL默认端口:
sudo ufw allow 5432/tcp
3、创建systemd服务单元文件:
sudo nano /etc/systemd/system/postgresql.service
4、写入以下内容(路径按实际安装位置调整):
[Unit]
Description=PostgreSQL Database Server
After=network.target
[Service]
Type=notify
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile start
ExecStop=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
5、重载服务配置并启用开机自启:
sudo systemctl daemon-reload
sudo systemctl enable postgresql.service
sudo systemctl start postgresql.service

















