在轻量服务器(如阿里云、腾讯云等提供的轻量应用服务器,或普通的VPS)上自行部署 PostgreSQL 数据库是一个常见且实用的操作。以下是详细的步骤指南,适用于主流 Linux 发行版(以 Ubuntu/Debian 为例)。
✅ 前提条件
- 一台轻量服务器(推荐配置:1核2G内存以上)
- 操作系统:Ubuntu 20.04 / 22.04 或 Debian 11+
- 网络通畅,可访问软件源
- 具备
sudo权限的用户
🛠️ 部署步骤
1. 更新系统包列表
sudo apt update
sudo apt upgrade -y
2. 安装 PostgreSQL
添加官方 PostgreSQL APT 源(推荐使用最新版本)
以安装 PostgreSQL 15 为例(可根据需要选择版本):
# 安装依赖
sudo apt install wget ca-certificates -y
# 添加 PostgreSQL 官方 GPG 密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 添加 PostgreSQL APT 源(以 Ubuntu 22.04 jammy 为例)
echo "deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
# 更新包列表
sudo apt update
⚠️ 注意:根据你的系统版本替换
jammy(Ubuntu 22.04),例如:
- Ubuntu 20.04:
focal- Debian 11:
bullseye
安装 PostgreSQL
sudo apt install postgresql-15 postgresql-client-15 -y
安装完成后,PostgreSQL 会自动启动并设置为开机自启。
3. 验证安装
sudo systemctl status postgresql
你应该看到服务正在运行。
也可以查看版本:
sudo -u postgres psql -c "SELECT version();"
4. 切换到 postgres 用户并设置密码
PostgreSQL 默认创建了一个名为 postgres 的系统用户和数据库超级用户。
sudo -u postgres psql
进入 PostgreSQL 命令行后,设置 postgres 用户的密码(建议设置强密码):
password postgres
输入新密码并确认。
退出:
q
5. 配置远程访问(可选)
默认情况下,PostgreSQL 只允许本地连接。若需从外部连接(如你的电脑或应用服务器),需进行以下配置。
(1) 修改 postgresql.conf 允许监听所有 IP
sudo nano /etc/postgresql/15/main/postgresql.conf
找到以下行并修改:
listen_addresses = 'localhost'
改为:
listen_addresses = '*'
⚠️ 生产环境建议指定具体 IP,如
'your_server_ip',避免开放*带来安全风险。
(2) 配置客户端认证(允许远程登录)
编辑 pg_hba.conf:
sudo nano /etc/postgresql/15/main/pg_hba.conf
在文件末尾添加一行(允许特定 IP 连接):
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.100/32 md5
或允许一个网段:
host all all 192.168.1.0/24 md5
若测试用,也可临时允许所有 IP(不推荐生产):
host all all 0.0.0.0/0 md5
6. 重启 PostgreSQL 服务
sudo systemctl restart postgresql
7. 配置防火墙(UFW 或云平台安全组)
启用 UFW 并放行 PostgreSQL 端口(默认 5432)
sudo ufw allow 5432/tcp
如果你只允许特定 IP 访问:
sudo ufw allow from 192.168.1.100 to any port 5432
同时,在云平台控制台(如腾讯云轻量、阿里云轻量)中,确保 安全组规则 开放了 5432 端口。
8. 创建新用户和数据库(可选)
sudo -u postgres createuser --interactive
或直接用 SQL:
sudo -u postgres psql
CREATE USER myuser WITH PASSWORD 'mypass';
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
q
9. 测试远程连接
使用工具如:
- DBeaver
- Navicat
- pgAdmin
psql命令行
命令示例:
psql -h your_server_ip -U myuser -d mydb -p 5432
🔐 安全建议
- 不要长期使用
postgres超级用户连接应用 - 限制远程访问 IP
- 定期备份数据
- 启用 SSL(可选)
- 更新系统和 PostgreSQL 补丁
🧰 常用命令速查
| 功能 | 命令 |
|---|---|
| 启动服务 | sudo systemctl start postgresql |
| 重启服务 | sudo systemctl restart postgresql |
| 查看状态 | sudo systemctl status postgresql |
| 登录数据库 | sudo -u postgres psql |
| 退出 psql | q |
| 列出数据库 | l |
| 切换数据库 | c dbname |
✅ 总结
你已经成功在轻量服务器上部署了 PostgreSQL,并支持本地和远程访问。适用于小型项目、开发测试、个人博客后台等场景。
如需更高可用性或性能优化,可进一步学习:
- PostgreSQL 配置调优(
postgresql.conf) - 自动备份脚本(
pg_dump+ cron) - 使用连接池(PgBouncer)
如有你使用的操作系统是 CentOS/Rocky Linux,我也可以提供对应的 yum/dnf 安装方式。欢迎继续提问!
CLOUD云枢