云端数据库私有化部署
概述
本文档用于指导PostgreSQL 16 + Java 后端一体化云端私有化部署,包含云服务器搭建、Linux/Windows 双环境数据库安装、后端服务部署全流程,统一规范操作命令、配置项、风险约束与校验步骤,降低部署出错概率。
一、前置资源规划(云服务器可选)
若需部署至公有云服务器,按本节规范创建实例;本地服务器部署可跳过本节。
1.1 服务器基础规格要求
| 配置项 | 标准参数 | 补充说明 |
|---|---|---|
| 操作系统 | AlmaLinux 9.x | 仅推荐该镜像,适配 PostgreSQL 官方 yum 源 |
| 最低性能 | 2 核 4G | 仅测试环境使用 |
| 生产推荐性能 | 4 核 8G | 数据库 + 后端服务同机部署标准配置 |
| 存储空间 | ≥30G 系统盘,数据库独立盘≥100G | 数据持续增长,生产环境建议扩容 |
| 部署载体 | 公有云 ECS 云服务器 | 支持阿里云、腾讯云等主流厂商 |
1.2 安全组开放端口清单
| 端口 | 服务用途 | 访问权限控制建议 |
|---|---|---|
| 22 | SSH 远程连接 | 仅固定办公 IP 放行,禁止 0.0.0.0/0 全开放 |
| 5432 | PostgreSQL 数据库 | 内网互通放行,公网默认禁止访问 |
| 8080 | Java 后端服务 | 业务客户端公网放行 |
1.3 云服务器创建步骤
- 登录云厂商服务器控制台,选择业务就近地域,降低网络延迟
- 点击「创建实例 / 启动实例」,镜像选择 AlmaLinux 9.0
- 实例规格选择生产推荐 4 核 8G(测试环境可降级 2 核 4G)
- 设置服务器 root 登录密码,保存密码妥善保管
- 确认配置后启动实例,等待服务器初始化完成
- 进入安全组配置,按上表放行业务所需端口,收紧源 IP 访问规则
参考资料
二、PostgreSQL 16 数据库部署
数据库规范
| 配置项 | 标准要求 | 安全说明 |
|---|---|---|
| 数据库版本 | PostgreSQL 16 | 统一版本,避免兼容性问题 |
| 内置管理员账号 | postgres | 系统默认账号 |
| 数据库名 | aiflutter_test | 初始化脚本固定库名 |
| 数据库端口 | 5432 | 端口占用可自定义修改 |
| 存储最低容量 | ≥100G | 独立数据盘,禁止存放系统日志 |
| 外部公网访问 | 默认关闭 | 仅内网互通,防止暴力破解 |
| 密码复杂度 | ≥8 位,包含大小写字母 + 数字 + 特殊符号 | 禁止简单弱密码 |
2.1 Linux(AlmaLinux 9)部署流程
步骤 1:安装 PostgreSQL 官方 YUM 源
# 导入pg16官方yum源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 屏蔽系统内置低版本PostgreSQL模块
sudo dnf -qy module disable postgresql
# 更新全部软件源
sudo yum update -y
# 安装pg16服务端
sudo yum install -y postgresql16-server
# 初始化数据库数据目录
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb步骤 2:修改数据库连接配置(开启内网全地址访问)
- 修改主配置
postgresql.conf
sudo vi /var/lib/pgsql/16/data/postgresql.conf修改核心参数:
listen_addresses = '*'
log_timezone = 'UTC'
timezone = 'UTC'- 修改访问鉴权文件
pg_hba.conf
sudo vi /var/lib/pgsql/16/data/pg_hba.conf替换文件末尾连接规则:
# 本地套接字登录
local all all peer
# IPv4 所有内网地址加密访问
host all all 0.0.0.0/0 scram-sha-256
# IPv6 本地回环访问
host all all ::1/128 scram-sha-256步骤 3:设置开机自启并启动数据库
# 设置开机自启
sudo systemctl enable postgresql-16
# 启动数据库服务
sudo systemctl start postgresql-16
# 校验服务运行状态
sudo systemctl status postgresql-16步骤 4:初始化数据库
数据库文件下载:前往AIFlutter的目标项目中点击 导出云端数据库,最终会得到一个table_info.sql文件

# 切换postgres超级用户
sudo -i -u postgres
# 进入数据库命令行
psql
# 1. 创建业务数据库
CREATE DATABASE aiflutter_test;
# 2. 退出pgsql
\q
# 3. 导入初始化 SQL 脚本
psql -d aiflutter_test -f /脚本存放路径/table_info.sql步骤 5:创建用户并授权
# 1. 创建业务访问用户(自定义高强度密码)
CREATE USER aiflutter WITH PASSWORD 'aiflutter2026';
# 2. 分配数据库连接权限
GRANT CONNECT ON DATABASE aiflutter_test TO aiflutter;
# 3. 分配公共模式使用权限
GRANT USAGE ON SCHEMA public TO aiflutter;
# 4. 分配表CRUD权限
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO aiflutter;
# 5. 分配自增序列完整权限
GRANT ALL ON ALL sequences IN SCHEMA public TO aiflutter;
# 退出psql
\q2.2 Windows 环境部署流程
前置硬件 / 系统要求
- 操作系统:Windows 10 及以上版本
- 内存:≥4GB
- 磁盘剩余空间:≥2GB,建议单独分配大容量磁盘存放数据
步骤 1:下载安装包
官方下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
选择版本:PostgreSQL 16.X Windows x64 安装包
步骤 2:安装向导配置
双击
postgresql-x.x.x-windows-x64.exe,一路 Next组件勾选:
全选
- PostgreSQL Server
- pgAdmin 4
- Stack Builder
- Command Line Tools
安装路径自定义(不推荐 C 盘),记录安装目录;数据目录单独分配大容量磁盘
设置 postgres 超级用户密码,妥善留存
数据库端口默认 5432,端口占用可自定义修改
语言选择英文,避免中文编码乱码问题
等待 5~10 分钟安装完成,取消 Stack Builder 勾选,点击 Finish
步骤 3:创建库、用户并导入初始化脚本
数据库文件下载:前往AIFlutter的目标项目中点击 导出云端数据库,最终会得到一个table_info.sql文件

打开 CMD 命令提示符执行:
# 进入pg安装bin目录
cd C:\Program Files\PostgreSQL\16\bin
# 使用超级用户登录
psql -U postgres
# 创建业务库
CREATE DATABASE aiflutter_test;
\q
# 导入初始化SQL脚本
psql -U postgres -d aiflutter_test -f "脚本完整路径\table_info.sql"权限分配 SQL 与 Linux 环境完全一致,登录 psql 后执行同上文权限语句。
三、Java 后端服务部署
3.1 运行环境标准
| 组件 | 指定版本 | 补充说明 |
|---|---|---|
| JDK | OpenJDK 21 | 后端运行唯一指定版本 |
| 构建工具 | Maven 3.6.3 | 打包编译使用 |
| 运行系统 | AlmaLinux 9 / Windows10+ | 双环境兼容 |
| 后端端口 | 8080 | 可自定义修改 |
OpenJDK21 官方下载地址:https://learn.microsoft.com/zh-cn/java/openjdk/download?cid=kerryherger#openjdk-21
3.2 JDK 环境安装
Linux AlmaLinux 9
sudo yum install java-21-openjdk.x86_64 -y
# 验证安装
java -versionWindows
访问官方链接下载 Windows x64 版本安装包,双击安装并配置系统环境变量JAVA_HOME。
3.3 上传部署文件至服务器
部署文件下载链接:部署文件包
Linux 服务器上传
使用 rz 命令上传 4 个核心文件至同一目录:
rz -bey
# 需要上传文件清单
# 1. sql-father.jar 后端程序包
# 2. application.yml 生产配置文件
# 3. logback.xml 日志配置文件
# 4. start.sh Linux启动脚本Windows 部署
图形化拖拽解压,将 4 个文件放置在同一文件夹。
3.4 生产配置文件修改(application.yml)
配置文件与 jar 包同级存放,核心修改数据库连接信息:
spring:
application:
name: sql-father-backend
profiles:
active: prod
mvc:
pathmatch:
matching-strategy: ant_path_matcher
datasource:
driver-class-name: org.postgresql.Driver
# 修改为数据库服务器内网IP
url: jdbc:postgresql://数据库IP:5432/aiflutter_test
# 替换为业务账号aiflutter
username: aiflutter
# 替换数据库账号高强度密码
password: 自定义数据库密码
server:
address: 0.0.0.0
port: 8080 # 可自定义业务端口
servlet:
session:
timeout: "P30D"
cookie:
same-site: none
secure: true3.5 后端服务启动命令
Linux 后台启动
# 后台静默运行,日志输出至空设备
nohup java -jar -Dspring.profiles.active=prod sql-father.jar >/dev/null 2>&1 &Windows 后台启动
javaw -Dspring.profiles.active=prod -jar sql-father.jar3.6 部署验证
服务启动完成后访问接口地址,能正常返回即部署成功:
http://服务器IP:8080/api/四、部署安全规范
- PostgreSQL 数据库禁止直接暴露公网,仅内网互通访问;如需外部调试,通过 SSH 隧道连接。
- 所有数据库账号、服务器 root 账号必须使用高强度密码,定期轮换。
- 云服务器安全组最小权限原则,仅放行业务必需端口,限制访问源 IP。
- 生产环境禁止使用 postgres 超级用户对接后端业务,统一使用业务专用账号
aiflutter。 - 服务器 SSH 端口 22 仅办公固定 IP 放行,关闭全网无限制访问。