服务器部署教程(Docker + PostgreSQL + Redis)
环境:CentOS 7 x2 / 两台服务器均有
/data大分区(94G)
一、服务器信息
| 服务器 | IP | 系统 | 用途 |
|---|---|---|---|
| ad-db | 10.60.9.x | CentOS 7 | 数据库服务器(PostgreSQL) |
| ad-app | 10.60.9.y |
在 CentOS 7 环境下部署 Docker、PostgreSQL 及 Redis 的完整流程。内容包括系统版本检查、YUM 源修复、Docker 安装与镜像加速配置、PostgreSQL 容器化部署及初始化、Redis 原生安装与密码设置。最后提供了账号密码汇总及常用维护命令,适用于 Django 应用的基础服务搭建。
环境:CentOS 7 x2 / 两台服务器均有
/data大分区(94G)
| 服务器 | IP | 系统 | 用途 |
|---|---|---|---|
| ad-db | 10.60.9.x | CentOS 7 | 数据库服务器(PostgreSQL) |
| ad-app | 10.60.9.y |
| CentOS 7 |
| 应用服务器(Django + Redis) |
| 服务器 | 用户名 | 备注 |
|---|---|---|
| ad-db | bsadmin | sudo 免密权限 |
| ad-app | bsadmin | sudo 免密权限 |
cat /etc/os-release
free -h # 内存
df -h # 磁盘
nproc # CPU 核心数
sudo -l
CentOS 7 已于 2024 年 6 月停止维护,默认源已失效,需切换至阿里云归档源。
# 备份旧源
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/
# 换成阿里云归档源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存并重建
sudo yum clean all
sudo yum makecache
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io --skip-broken
⚠️ 若下载中途报网络超时,重新执行上面这条命令即可。
sudo systemctl start docker
sudo systemctl enable docker
sudo docker version
将 Docker 数据目录指向
/data/docker,避免占用根分区空间。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"https://dockerhub.icu",
"https://docker.rainbond.cc"
],
"data-root": "/data/docker"
}
EOF
sudo systemctl restart docker
sudo docker info | grep -A 5 "Registry Mirrors"
sudo mkdir -p /data/postgresql/data
sudo mkdir -p /data/postgresql/logs
# postgres 容器内用户 UID 为 999
sudo chown -R 999:999 /data/postgresql
⚠️ Docker Hub 在国内访问受限,使用第三方镜像源拉取:
sudo docker pull docker.1panel.live/library/postgres:18
# 打标签重命名为标准名称
sudo docker tag docker.1panel.live/library/postgres:18 postgres:18
sudo docker run -d\
--name postgresql \
--restart always \
-e POSTGRES_PASSWORD=wWw.71AD.COM \
-e POSTGRES_USER=postgres \
-e PGDATA=/var/lib/postgresql/data \
-v /data/postgresql/data:/var/lib/postgresql/data \
-v /data/postgresql/logs:/var/log/postgresql \
-p 5432:5432 \
postgres:18
sudo docker ps | grep postgresql
sudo docker logs postgresql
日志中看到
database system is ready to accept connections即表示启动成功。
sudo docker exec -it postgresql psql -U postgres
-- 创建用户
CREATE USER django_user WITH PASSWORD 'gjgg71AD63638369';
-- 创建数据库
CREATE DATABASE django_db OWNER django_user;
-- 授权
GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;
-- 确认结果
\l
\du
\q
Redis 选择原生安装,CentOS 7 默认源版本过旧,使用 Remi 源安装 Redis 7。
sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install -y yum-utils
sudo yum install -y redis --enablerepo=remi
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl status redis
sudo nano /etc/redis.conf
找到 # requirepass foobared 这行,改为:
requirepass 密码
保存退出后重启:
sudo systemctl restart redis
# 不带密码(应被拒绝)
redis-cli ping
# 带密码(应返回 PONG)
redis-cli -a 密码 ping
| 项目 | 值 |
|---|---|
| 端口 | 5432 |
| 超级管理员 | postgres |
| 超级管理员密码 | ********* |
| Django 用户 | django_user |
| Django 用户密码 | ********* |
| Django 数据库 | django_db |
| 项目 | 值 |
|---|---|
| 端口 | 6379 |
| 密码 | ********* |
# 查看容器状态
sudo docker ps | grep postgresql
# 查看日志
sudo docker logs -f postgresql
# 进入数据库
sudo docker exec -it postgresql psql -U postgres
# 停止 / 启动 / 重启
sudo docker stop postgresql
sudo docker start postgresql
sudo docker restart postgresql
# 备份数据库
sudo docker exec postgresql pg_dump -U postgres django_db > /data/postgresql/backup_$(date +%Y%m%d).sql
# 恢复数据库
sudo docker exec -i postgresql psql -U postgres django_db < /data/postgresql/backup_20240101.sql
# 查看状态
sudo systemctl status redis
# 停止 / 启动 / 重启
sudo systemctl stop redis
sudo systemctl start redis
sudo systemctl restart redis
# 进入 Redis 命令行
redis-cli -a 密码
# 查看所有 key
redis-cli -a 密码 keys '*'
# 清空缓存
redis-cli -a 密码 flushall
┌─────────────────────────────┐ ┌──────────────────────────────┐
│ ad-app 10.60.9.x │ │ ad-db 10.60.9.y │
│ │ │ │
│ Django(Docker) │ │ Docker │
│ Redis 7(原生) │ │ PostgreSQL 18.3 │
│ Celery │ │ /data/postgresql/data │
└─────────────────────────────┘ └──────────────────────────────┘
适用环境:CentOS 7 + Docker 26.1.4 + PostgreSQL 18.3 + Redis 7

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online