在腾讯轻量应用服务器(Lighthouse)上安装和配置 PostgreSQL 的步骤如下,以 Ubuntu 22.04/20.04 为例(CentOS 7/8 略有不同,文末附说明):
✅ 一、前置准备
- 登录轻量服务器
ssh root@your-server-ip - 更新系统包
sudo apt update && sudo apt upgrade -y - 确认系统架构与版本
uname -m lsb_release -a
✅ 二、安装 PostgreSQL
方法 A:使用官方源(推荐,获取最新稳定版)
1. 添加 PostgreSQL 官方软件源(Ubuntu)
# 安装依赖
sudo apt install -y curl gnupg2 ca-certificates lsb-release software-properties-common
# 导入 GPG 密钥
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql.gpg
# 添加仓库(以 PG 16 为例,可按需替换为 15/14 等)
echo "deb [signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list > /dev/null
# 再次更新并安装
sudo apt update
sudo apt install -y postgresql-16 postgresql-contrib-16
💡 若需其他版本,将
postgresql-16改为对应版本(如postgresql-15),并确保.list中版本号一致。
2. 启动并设置开机自启
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql
方法 B:使用系统默认源(适合快速部署,但版本较旧)
sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql
✅ 三、基础配置与初始化
1. 切换至 postgres 用户并进入 shell
sudo -i -u postgres
psql
2. 创建数据库与管理员(可选但推荐)
-- 创建新用户(替代默认的 postgres 账户更安全)
CREATE USER myuser WITH PASSWORD 'StrongPassword123!';
-- 创建数据库并授权
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
-- 退出
q
exit
🔐 建议修改默认密码强度,避免弱口令。
3. 配置监听地址(允许远程连接)
编辑配置文件:
sudo nano /etc/postgresql/16/main/postgresql.conf
找到并修改:
listen_addresses = '*' # 监听所有网卡;或指定 IP 如 '0.0.0.0'
port = 5432 # 默认端口,勿随意更改
⚠️ 注意:路径中的
16需与你安装的版本一致(如postgresql/15/main)。
4. 配置客户端认证(pg_hba.conf)
sudo nano /etc/postgresql/16/main/pg_hba.conf
在文件末尾添加(示例:允许特定 IP 段连接):
# IPv4 local connections:
host all all 192.168.0.0/16 md5
# IPv6 local connections:
host all all ::1/128 md5
# 允许任意公网 IP(谨慎!生产环境建议限制 IP)
# host all all 0.0.0.0/0 md5
✅
md5表示密码认证;如需 SSL 加密,可改用scram-sha-256+ 配置 SSL。
✅ 四、防火墙与安全组配置(关键!)
1. 本地防火墙(UFW)
sudo ufw allow 5432/tcp
sudo ufw reload
2. 腾讯云控制台安全组
- 登录 腾讯云轻量应用服务器控制台
- 进入实例 → 网络 → 安全组
- 添加入站规则:
- 协议:TCP
- 端口:5432
- 来源:
0.0.0.0/0(测试用)或指定 IP/CIDR(生产推荐)
🛡️ 强烈建议仅开放必要 IP,避免暴露给全网。
✅ 五、验证安装与远程连接
1. 本地测试
psql -U myuser -d mydb -h localhost
2. 从本机远程连接(Windows/macOS/Linux)
使用客户端工具(如 pgAdmin、DBeaver、Navicat 或 psql 命令行):
- Host:
your-server-ip - Port:
5432 - Database:
mydb - Username:
myuser - Password:
StrongPassword123!
❗ 首次连接前请确保:
listen_addresses已设为*或对应 IPpg_hba.conf允许该 IP- 安全组已放行 5432 端口
✅ 六、进阶优化建议(生产环境)
| 项目 | 建议 |
|---|---|
| 备份 | 使用 pg_dump + cron 定时备份;或开启 WAL 归档 |
| 性能 | 调整 shared_buffers、work_mem、effective_cache_size(根据内存比例) |
| 监控 | 安装 pg_stat_statements 扩展分析慢查询 |
| SSL | 启用 TLS 加密连接(参考 PostgreSQL SSL 文档) |
| 自动重启 | 已在 systemd 中启用,配合云监控告警更稳妥 |
示例备份脚本(/opt/backup_pg.sh):
#!/bin/bash
DATE=$(date +%F_%H%M%S)
BACKUP_DIR="/opt/backups"
mkdir -p $BACKUP_DIR
pg_dump -U myuser mydb > "$BACKUP_DIR/mydb_$DATE.sql"
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
添加至 crontab:0 2 * * * /opt/backup_pg.sh
🐧 CentOS 7/8 简要差异
# 安装(EPEL + PostgreSQL 官方源)
sudo yum install -y epel-release
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum config-manager --set-enabled pgdg16
sudo yum install -y postgresql16-server postgresql16-contrib
# 初始化 & 启动
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable --now postgresql-16
# 配置文件路径:
# postgresql.conf: /var/lib/pgsql/16/data/postgresql.conf
# pg_hba.conf: /var/lib/pgsql/16/data/pg_hba.conf
需要我提供:
- Docker 方式部署 PostgreSQL?
- 一键脚本自动化安装?
- 高可用(主从复制)配置指南?
欢迎告诉我你的具体场景,我可进一步定制方案!
PHPWP博客