在轻量服务器上如何自行部署PostgreSQL数据库?

在轻量服务器(如阿里云、腾讯云、AWS Lightsail 等)上自行部署 PostgreSQL 数据库是一个常见需求。以下是详细的部署步骤,适用于基于 Linux 的系统(以 Ubuntu 20.04/22.04 为例):


✅ 一、准备工作

  1. 登录服务器
    使用 SSH 登录你的轻量服务器:

    ssh username@your-server-ip
  2. 更新系统包

    sudo apt update && sudo apt upgrade -y

✅ 二、安装 PostgreSQL

  1. 安装 PostgreSQL

    sudo apt install postgresql postgresql-contrib -y
  2. 启动并设置开机自启

    sudo systemctl start postgresql
    sudo systemctl enable postgresql
  3. 检查服务状态

    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技术博 » 在轻量服务器上如何自行部署PostgreSQL数据库?