在轻量服务器(如阿里云、腾讯云、AWS Lightsail 等)上自行部署 PostgreSQL 数据库是一个常见需求。以下是详细的部署步骤,适用于基于 Linux 的系统(以 Ubuntu 20.04/22.04 为例):
✅ 一、准备工作
-
登录服务器
使用 SSH 登录你的轻量服务器:ssh username@your-server-ip -
更新系统包
sudo apt update && sudo apt upgrade -y
✅ 二、安装 PostgreSQL
-
安装 PostgreSQL
sudo apt install postgresql postgresql-contrib -y -
启动并设置开机自启
sudo systemctl start postgresql sudo systemctl enable postgresql -
检查服务状态
sudo systemctl status postgresql看到
active (running)表示正常运行。
✅ 三、配置 PostgreSQL
1. 切换到 postgres 用户
PostgreSQL 默认创建了一个名为 postgres 的系统用户和数据库用户。
sudo -u postgres psql
2. 设置 postgres 用户密码(推荐)
在 psql 命令行中执行:
password postgres
输入并确认新密码。
提示:记住这个密码,后续远程连接或管理会用到。
3. 创建新数据库和用户(可选但推荐)
CREATE DATABASE myapp_db;
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypass123';
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myuser;
退出 psql:
q
✅ 四、允许远程连接(可选)
默认情况下,PostgreSQL 只监听本地连接。若需从外部访问(如应用服务器),需修改配置。
1. 修改 postgresql.conf
sudo nano /etc/postgresql/*/main/postgresql.conf
找到以下行并修改:
listen_addresses = 'localhost' # 改为:
listen_addresses = '*' # 或 'your_server_ip,127.0.0.1'
⚠️ 注意:使用
*会监听所有接口,请配合防火墙限制 IP。
2. 配置客户端认证(pg_hba.conf)
sudo nano /etc/postgresql/*/main/pg_hba.conf
在文件末尾添加一行允许远程访问(例如允许某个 IP 段):
# IPv4 remote connections:
host all all 192.168.1.0/24 md5
host myapp_db myuser your-client-ip/32 md5
示例:允许来自
your-client-ip的用户myuser连接myapp_db数据库,使用密码认证。
保存并退出。
✅ 五、重启 PostgreSQL 生效配置
sudo systemctl restart postgresql
✅ 六、配置防火墙(UFW 或云平台安全组)
1. 开放 PostgreSQL 默认端口 5432
sudo ufw allow 5432/tcp
2. 同时检查云平台安全组
进入你的轻量服务器控制台(如阿里云、腾讯云等),确保入方向规则允许 TCP 5432 端口,且来源 IP 合理(建议限制为特定 IP,避免开放给 0.0.0.0/0)。
✅ 七、测试连接
1. 本地测试
psql -h localhost -U myuser -d myapp_db
2. 外部测试(从另一台机器)
psql -h your-server-ip -p 5432 -U myuser -d myapp_db
✅ 八、安全建议(重要!)
- ❌ 不要将
listen_addresses = '*'和0.0.0.0/0安全组规则长期暴露公网。 - ✅ 使用强密码,定期更换。
- ✅ 限制
pg_hba.conf中的访问 IP。 - ✅ 考虑使用 SSL 加密连接(生产环境推荐)。
- ✅ 定期备份数据库:
pg_dump -U myuser -h localhost myapp_db > backup.sql
✅ 九、常用命令速查
| 功能 | 命令 |
|---|---|
| 启动 PostgreSQL | sudo systemctl start postgresql |
| 重启服务 | sudo systemctl restart postgresql |
| 查看状态 | sudo systemctl status postgresql |
| 进入 psql | sudo -u postgres psql |
| 退出 psql | q |
| 列出数据库 | l |
| 切换数据库 | c dbname |
✅ 总结
你已成功在轻量服务器上部署 PostgreSQL,并支持本地或受控的远程访问。适合用于小型项目、开发测试或轻量级生产应用。
如有更高要求(高可用、备份、监控),可进一步引入 pgAdmin、Barman、Prometheus + Grafana 等工具。
需要我帮你写一个自动化部署脚本吗?
CLOUD技术博