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

在轻量服务器(如阿里云、腾讯云等提供的轻量应用服务器,或普通的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

🔐 安全建议

  1. 不要长期使用 postgres 超级用户连接应用
  2. 限制远程访问 IP
  3. 定期备份数据
  4. 启用 SSL(可选)
  5. 更新系统和 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云枢 » 在轻量服务器上如何自行部署PostgreSQL数据库?