腾讯应用服务器上安装postgresql?

在腾讯云应用服务器(通常指 CVM 云服务器,运行 Linux 或 Windows 系统)上安装 PostgreSQL,最稳妥且符合生产环境规范的做法是使用官方源或包管理器安装,而不是直接下载二进制包手动编译(除非有特殊内核定制需求)。

以下是基于 CentOS/RHELUbuntu/Debian 两大主流操作系统的标准安装流程。PostgreSQL 在国内云环境中非常常见,但需注意:务必从官方源安装,避免使用第三方非认证 RPM/DEB 包,以防安全漏洞。


一、前置准备

  1. 确认操作系统版本

    cat /etc/os-release
    # 例如:CentOS 7, CentOS Stream 8/9, Ubuntu 20.04, Ubuntu 22.04
  2. 开放防火墙端口
    PostgreSQL 默认监听 5432 端口。

    • 若使用腾讯云控制台:需在【安全组】中放行 TCP 5432 端口(仅建议开发测试环境对外暴露;生产环境建议通过内网访问或使用 VPC 内网通信)。
    • 若使用本地防火墙

      # CentOS (firewalld)
      sudo firewall-cmd --permanent --add-port=5432/tcp
      sudo firewall-cmd --reload
      
      # Ubuntu (ufw)
      sudo ufw allow 5432/tcp

二、CentOS/RHEL 系统安装步骤

1. 添加 PostgreSQL 官方 YUM 仓库

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

注意:根据系统版本选择对应的 repo rpm。

  • EL7 → EL-7-x86_64
  • EL8/Stream8 → EL-8-x86_64
  • EL9 → EL-9-x86_64

2. 安装 PostgreSQL 服务端和客户端

# 安装指定版本(如 15),也可不写版本号获取最新稳定版
sudo yum install -y postgresql15-server postgresql15-contrib

3. 初始化数据库

# CentOS 7
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

# CentOS 8/9
sudo /usr/lib/postgresql/15/bin/postgresql-15-setup initdb

4. 启动并设置开机自启

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
sudo systemctl status postgresql-15

三、Ubuntu/Debian 系统安装步骤

1. 添加 PostgreSQL APT 仓库

# 安装依赖
sudo apt update
sudo apt install -y wget ca-certificates

# 导入密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# 添加仓库(以 Ubuntu 22.04 + PG 15 为例)
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# 更新索引
sudo apt update

2. 安装 PostgreSQL

sudo apt install -y postgresql-15 postgresql-client-15

3. 启动服务

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

四、基础配置与安全加固(关键!)

1. 修改密码

PostgreSQL 默认创建 postgres 用户,无密码或随机密码。

# 切换到 postgres 用户
sudo su - postgres

# 进入 psql 命令行
psql

# 修改密码(替换为你的强密码)
ALTER USER postgres WITH PASSWORD 'YourStrongPassword123!';

# 退出
q
exit

2. 允许远程连接(谨慎操作)

编辑配置文件:

# CentOS: /var/lib/pgsql/15/data/postgresql.conf
# Ubuntu: /etc/postgresql/15/main/postgresql.conf
sudo vim /etc/postgresql/15/main/postgresql.conf  # Ubuntu 路径示例

找到并修改:

listen_addresses = '*'

编辑 pg_hba.conf 控制访问权限:

sudo vim /etc/postgresql/15/main/pg_hba.conf

添加一行(允许特定 IP 段连接,切勿随意写 0.0.0.0/0):

host    all             all             10.0.0.0/8            scram-sha-256

说明:10.0.0.0/8 表示仅允许内网访问。若需公网访问,请替换为具体 IP 或 CIDR,并确保使用强密码+SSL。

重启服务生效:

sudo systemctl restart postgresql

五、替代方案:直接使用腾讯云 TDSQL-PG 或 RDS for PostgreSQL

如果你是在生产环境部署,强烈建议不要自行在 CVM 上管理 PostgreSQL。原因如下:

对比项 自建 CVM + PostgreSQL 腾讯云 RDS/TDSQL-PG
运维成本 高(备份、监控、升级、高可用均需自己搞) 低(托管式,自动备份、监控、补丁)
可用性 需自行搭建主从/ Patroni 原生高可用架构,故障自动切换
安全性 需自行配置 SSL、审计、防攻击 内置 WAF、DDoS 防护、数据加密
性能优化 需调优参数 云厂商深度优化内核与存储

推荐做法

  • 开发测试环境:可在 CVM 上自建轻量级 PostgreSQL。
  • 生产环境:优先使用 腾讯云 RDS for PostgreSQLTDSQL PostgreSQL 版,通过内网连接,更安全、稳定、省心。

六、常见问题排查

  1. 无法连接数据库?

    • 检查安全组是否放行 5432。
    • 检查 pg_hba.conf 是否允许对应 IP。
    • 检查 postgresql.conflisten_addresses 是否为 '*'
    • 检查防火墙状态:sudo systemctl status firewalldufw status
  2. 中文乱码?

    • 初始化时指定编码:initdb --locale zh_CN.UTF-8 -E UTF8
    • 或在建库时指定:CREATE DATABASE mydb ENCODING 'UTF8' LC_COLLATE 'zh_CN.UTF-8' LC_CTYPE 'zh_CN.UTF-8';
  3. 如何查看日志?

    # CentOS
    journalctl -u postgresql-15 -f
    
    # Ubuntu
    tail -f /var/log/postgresql/postgresql-15-main.log

如需进一步协助(如配置主从复制、性能调优、迁移至云数据库),可提供具体场景继续提问。

未经允许不得转载:CLOUD云枢 » 腾讯应用服务器上安装postgresql?