如何在 Linux 上的 aaPanel 中使用 Docker 部署 WordPress 博客:从配置到上线一站式教程

在现代网站部署中,Docker 已成为提升开发效率和运维便捷性的利器。结合 aaPanel 这一强大的图形化管理面板,Linux 服务器上的 WordPress 部署变得更加简便且高效。通过 Docker 容器化部署,不仅能实现环境的高度隔离,提升站点的稳定性和扩展性,还能在实现自动化备份、灵活扩展的同时,享受简单易用的操作体验。本教程将带您从零开始,手把手教您如何在 Linux 环境下,利用 aaPanel 和 Docker 快速部署 WordPress 博客,助力您的网站快速上线并稳定运行。

一、项目背景与架构概览

Linux服务器上部署 WordPress 最传统的方式是 LAMP/LEMP 直接安装,但这种方式不利于维护与迁移。利用 Docker 容器化部署可以实现:

  • 环境隔离(PHP/数据库/缓存独立容器)
  • 快速伸缩
  • 便于备份与迁移
  • 可结合 aaPanel 图形化控制面板管理容器

最终架构如下图:

复制代码
+---------------- aaPanel Docker 可视化管理 ----------------+
|                                                          |
|  Docker Compose                                          |
|  +----------------+   +----------------+   +-----------+ |
|  | wordpress_app  |   | mysql_db       |   | redis     | |
|  | (PHP-FPM+Nginx)|   | (MySQL 8.0)    |   | (cache)   | |
|  +----------------+   +----------------+   +-----------+ |
|            |                 |                        |  |
|        80/443            3306/   6379                   |  |
|                                                          |
+----------------------------------------------------------+

二、必备条件与硬件规格建议

2.1 推荐香港服务器www.a5idc.com规格(单站点博客)

配置建议 说明
CPU 2 Core (Intel Xeon 或 ARM64) 满足日常访问与容器运行
内存 4 GB RAM MySQL 与 Redis 容器共存
存储 50 GB SSD 日志/备份/媒体文件存储
网络 100 Mbps 带宽 适合中等流量博客
操作系统 Ubuntu 22.04 / CentOS 8 长期支持版本
Docker 版本 Docker 24.x 最新稳定版
Docker Compose v2.x 兼容性较好

若是高并发或图片/多媒体较多站点,推荐 8 GB 内存 + 200GB SSD。


三、Linux 环境准备

3.1 安装必要软件

Ubuntu 22.04 为例:

bash 复制代码
# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基本工具
sudo apt install -y curl wget git unzip

# 安装 Docker 官方仓库
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动 Docker
sudo systemctl enable docker
sudo systemctl start docker

# 查看版本
docker version

输出示例:

复制代码
Client:
 Version:           24.0.5
 API version:       1.42
...
Server:
 Engine:
  Version:          24.0.5
  API version:      1.42 (minimum version 1.12)

四、安装与配置 aaPanel

4.1 安装命令(Ubuntu/CentOS 通用)

bash 复制代码
# CentOS
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh

# Ubuntu
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh

执行完后,终端会输出一个 访问 URL 与默认账号/密码

例如:

复制代码
http://<SERVER_IP>:8888
Username: admin
Password: 123456

五、通过 aaPanel 启用 Docker 管理

5.1 进入 aaPanel 面板

浏览器打开:

复制代码
http://<SERVER_IP>:8888
  • 登录
  • 安装 Docker 管理插件
  • 启动 Docker 服务(如果未自动启动)

六、使用 Docker Compose 部署 WordPress

6.1 创建项目目录

bash 复制代码
mkdir -p /www/docker/wordpress_blog
cd /www/docker/wordpress_blog

6.2 编写 Docker Compose 文件

文件名:docker-compose.yml

yaml 复制代码
version: "3.9"

services:
  db:
    image: mysql:8.0
    container_name: wp_mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root1234
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wp_passwd
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - wp_net

  redis:
    image: redis:7
    container_name: wp_redis
    restart: always
    networks:
      - wp_net

  wordpress:
    image: wordpress:latest
    container_name: wp_app
    restart: always
    depends_on:
      - db
      - redis
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wp_passwd
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    networks:
      - wp_net

volumes:
  db_data:
  wp_data:

networks:
  wp_net:

参数说明

参数 含义
MYSQL_ROOT_PASSWORD Root 数据库密码
MYSQL_DATABASE WordPress 默认数据库
redis 缓存容器
depends_on 服务启动依赖

七、启动与访问

7.1 使用 aaPanel 或命令行启动

命令行启动:

bash 复制代码
docker compose up -d

查看容器状态:

bash 复制代码
docker ps

示例输出:

CONTAINER IMAGE STATUS
wp_mysql mysql:8.0 Up
wp_redis redis:7 Up
wp_app wordpress Up

八、性能与可用性调优

8.1 Nginx 缓存(Optional)

可通过修改 WordPress 容器加入 Nginx 缓存:

nginx 复制代码
location / {
    try_files $uri $uri/ /index.php?$args;
    proxy_cache my_cache;
    proxy_cache_valid 200 60m;
}

8.2 Redis 缓存插件

在 WordPress 后台安装 Redis 缓存插件(如:Redis Object Cache),并填写 Redis 地址:

复制代码
127.0.0.1:6379

九、域名与 HTTPS 设置

9.1 申请证书(通过 aaPanel 自带一键 Let's Encrypt)

步骤:

  1. 进入 aaPanel → 网站 → 添加站点
  2. 填写主域名、根目录设为 /www/docker/wordpress_blog
  3. 在网站设置中点击 SSL → 一键申请 Let's Encrypt
  4. 启用强制 HTTPS

十、备份与监控

10.1 数据库备份示例脚本(每日)

bash 复制代码
#!/bin/bash
docker exec wp_mysql sh -c 'exec mysqldump --all-databases -uroot -p"root1234"' > /www/backup/db_backup_$(date +%F).sql

10.2 媒体文件备份

bash 复制代码
tar -czvf /www/backup/wp_media_$(date +%F).tar.gz /www/docker/wordpress_blog/wp_data

设置 Cron:

复制代码
0 2 * * * /path/to/backup_script.sh

十一、性能测试数据(示例)

基于单台 2C4G 服务器,使用 ab (Apache Bench) 模拟 100 并发,1000 请求:

测试项 数值
Requests per second 58.9 [#/sec]
Time per request (mean) 1694 ms
Transfer rate 139.8 KB/sec

说明 :未优化 Redis 缓存时压力较大,推荐开启 Redis 缓存与 Opcode 缓存(如 PHP-FPM 配置 opcache)。


十二、常见问题与解决

12.1 WordPress 提示 "Error establishing a database connection"

检查:

bash 复制代码
docker logs wp_mysql
docker logs wp_app

确认数据库环境变量、网络连通性:

bash 复制代码
docker exec -it wp_app ping db

12.2 Redis 缓存无法连接

确认:

bash 复制代码
docker logs wp_redis

确认插件配置为:

复制代码
redis:6379

十三、总结

通过 Docker + aaPanel 的方式部署 WordPress 博客,有以下优势:

✔ 容器隔离保障环境一致

✔ aaPanel 提供图形化管理

✔ 易于横向扩展与自动化备份

✔ 易于配置 HTTPS 与域名管理

最终你会得到一个可稳定上线、支持容器化的 WordPress 博客平台!

相关推荐
chen_mangoo2 小时前
Android10低电量无法打开相机
android·linux·驱动开发·嵌入式硬件
tianyuanwo2 小时前
Linux 系统日志完全指南:从 syslogd 到 rsyslog 的深度解析
linux·运维·syslog·rsyslog
pengdott2 小时前
Linux用户态与内核态的深度剖析
linux·运维·服务器
ONE_SIX_MIX2 小时前
debian 13 使用 nvidia 官方 apt repo 仓库,获得最新显卡驱动
运维·windows·debian
姚青&2 小时前
三.文件处理命令-文件查看
linux·运维·服务器
逆天小北鼻2 小时前
FTP链接失败pam_unix(sshd:account): expired password for user
linux·运维·服务器
Coder_Boy_2 小时前
基于SpringAI的智能AIOps项目:微服务与DDD多模块融合设计概述
java·运维·人工智能·微服务·faiss
翼龙云_cloud2 小时前
亚马逊云渠道商:如何解决AWS EC2搭建的网站无法访问?
运维·云计算·aws
老兵发新帖2 小时前
open-notebook开源项目分析
linux·运维·ubuntu