前言

​ 随着互联网技术的发展,快速搭建稳定、可扩展的网站环境成为许多开发者和站长的需求。LNMP(Linux + Nginx + MySQL + PHP)作为经典的网站服务架构,广泛应用于各类动态网站部署,而 WordPress 则是全球流行的内容管理系统,尤其适合快速搭建论坛、博客等站点。

​ 本指南将详细介绍如何通过 Docker 和 Docker Compose 工具快速搭建 LNMP 环境并部署 WordPress 论坛。相比传统的手动部署方式,Docker 容器化部署具有环境隔离、配置简单、迁移方便等优势,能有效减少因系统环境差异导致的部署问题,同时简化后续的维护与升级流程。无论是开发测试还是生产环境使用,本方案都能为你提供清晰、可操作的实施步骤。

1 安装docker

# 关闭防火墙和增强功能
systemctl stop firewalld.service
setenforce 0

# 1. 安装 Docker

# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 Docker-CE
yum install -y docker-ce docker-ce-cli containerd.io

# 启动服务
systemctl start docker
systemctl enable docker

# 华为云加速器(镜像加速器)
mkdir -p /etc/docker
------------------------------------------------------------------------------------------------------------
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF
------------------------------------------------------------------------------------------------------------

2 安装 Docker Compose

# 下载最新版 Docker Compose(截至2025年,v2.27.0 为稳定版,可替换为最新版本)
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
chmod +x /usr/local/bin/docker-compose

# 创建软链接(确保命令全局可用)
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装(出现版本信息即正常)
docker-compose --version

3 编写配置文件

# 创建项目目录
mkdir -p /opt/lnmp-wordpress && cd /opt/lnmp-wordpress

# 创建子目录(分别存放 Nginx 配置、日志、MySQL 数据、WordPress 代码)
mkdir -p nginx/conf.d nginx/logs mysql wordpress

# 编写核心配置文件
vim /opt/lnmp-wordpress/docker-compose.yml
------------------------------------------------------------------------------------------------------------
version: '3'

services:
  # Nginx 服务
  nginx:
    image: nginx:latest  # 使用最新版 Nginx 镜像
    ports:
      - "80:80"  # 映射宿主机 80 端口到容器 80 端口
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d  # 挂载 Nginx 配置
      - ./nginx/logs:/var/log/nginx       # 挂载 Nginx 日志
      - ./wordpress:/var/www/html         # 挂载 WordPress 代码目录
    depends_on:
      - php  # 依赖 PHP 服务(确保 PHP 先启动)
    restart: always  # 容器退出后自动重启
    networks:
      - lnmp-net  # 加入自定义网络

  # PHP 服务(含 PHP-FPM,用于解析 PHP 代码)
  php:
    image: php:7.4-fpm  # WordPress 推荐 PHP 7.4+,兼容稳定
    volumes:
      - ./wordpress:/var/www/html  # 挂载代码目录到容器
    depends_on:
      - mysql  # 依赖 MySQL 服务
    restart: always
    networks:
      - lnmp-net
    # 安装 WordPress 必需的 PHP 扩展(mysqli/pdo 用于数据库连接)
    command: >
      bash -c "docker-php-ext-install mysqli pdo pdo_mysql &&
              chown -R www-data:www-data /var/www/html &&
              php-fpm"  # 启动 PHP-FPM 服务

  # MySQL 服务
  mysql:
    image: mysql:5.7  # WordPress 兼容 MySQL 5.7(稳定版)
    ports:
      - "3306:3306"  # 映射数据库端口(可选,本地连接用)
    volumes:
      - ./mysql:/var/lib/mysql  # 数据持久化到宿主机
    environment:
      - MYSQL_ROOT_PASSWORD=Lnmp@123  # MySQL  root 密码(自定义)
      - MYSQL_DATABASE=wordpress_db   # 自动创建 WordPress 数据库
      - MYSQL_USER=wp_user            # WordPress 数据库用户
      - MYSQL_PASSWORD=Wp@456         # 数据库用户密码(自定义)
    restart: always
    networks:
      - lnmp-net

# 自定义网络(使服务间可通过服务名通信)
networks:
  lnmp-net:
    driver: bridge
============================================================================================================

# 编写 Nginx 配置文件
vim nginx/conf.d/wordpress.conf
------------------------------------------------------------------------------------------------------------

server {
    listen 80;
    server_name localhost;  # 若有域名,替换为你的域名(如 example.com)

    root /var/www/html;  # 网站根目录(对应容器内的 WordPress 目录)
    index index.php index.html index.htm;  # 默认首页
    
    # 日志路径(映射到宿主机 ./nginx/logs 目录)
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    
    # 处理 PHP 文件(转发到 PHP 容器的 9000 端口)
    location ~ \.php$ {
        fastcgi_pass php:9000;  # "php" 是 docker-compose 中 PHP 服务的名称
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;  # 引入默认 FastCGI 参数
    }
    
    # 静态文件缓存(优化性能)
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;  # 缓存 30 天
    }

}
============================================================================================================

# 启动 LNMP 服务(在 /opt/lnmp-wordpress 下执行)
docker-compose up -d

# 查看启动状态
docker-compose ps

4 下载并配置 WordPress 代码

# 进入 WordPress 目录
cd /opt/lnmp-wordpress/wordpress

# 下载最新版 WordPress 中文包(若速度慢,可手动下载上传)
wget https://cn.wordpress.org/latest-zh_CN.tar.gz

# 解压并移动文件到当前目录
tar -zxvf latest-zh_CN.tar.gz
mv wordpress/* .
rm -rf wordpress latest-zh_CN.tar.gz  # 清理压缩包和空目录

# 设置目录权限(关键:避免安装时出现权限错误)
CentOS/RHEL 系统
# 1. 查看 PHP 容器内 www-data 用户的 UID/GID(容器内固定为 33)
docker exec -it lnmp-wordpress-php-1 id www-data
# 输出类似:uid=33(www-data) gid=33(www-data) groups=33(www-data)

# 2. 直接用 UID/GID 给本地目录授权(无需依赖系统用户)
chown -R 33:33 /opt/lnmp-wordpress/wordpress

5 浏览器完成 WordPress 安装

  1. 打开浏览器,访问服务器的 IP 地址(如 http://你的服务器IP)。
  2. 选择语言:点击 “简体中文”,然后 “继续”。
  3. 点击 “现在就开始!”,填写数据库信息(需与docker-compose.yml中一致)
    • 数据库名:wordpress_db
    • 用户名:wp_user
    • 密码:Wp@456(你在配置中自定义的密码)
    • 数据库主机:mysql(Docker 内部通过服务名访问,无需改 IP)
    • 表前缀:保持默认 wp_
  4. 点击 “提交”,然后点击 “运行安装程序”。
  5. 填写站点信息:
    • 站点标题:例如 “我的论坛”
    • 用户名:管理员账号(自定义,如 htj
    • 密码:管理员密码(建议复杂些)
    • 电子邮箱:你的邮箱
  6. 点击 “安装 WordPress”,完成后点击 “登录”,输入管理员账号密码即可进入后台。

6 日常维护命令

  1. 查看容器状态docker-compose ps
  2. 查看日志
    • Nginx 日志:cat /opt/lnmp-wordpress/nginx/logs/error.log
    • 容器实时日志:docker-compose logs -f nginx(替换 nginxphpmysql 查看对应日志)
  3. 重启服务docker-compose restart(全部重启)或 docker-compose restart nginx(单独重启 Nginx)
  4. 停止服务docker-compose down(仅停止容器,数据保留)
  5. 备份数据
    • 数据库:打包 mysql 目录:tar -zcvf mysql_backup.tar.gz /opt/lnmp-wordpress/mysql
    • 网站文件:打包 wordpress 目录:tar -zcvf wordpress_backup.tar.gz /opt/lnmp-wordpress/wordpress

注意事项

  1. 生产环境需修改配置中的密码(MYSQL_ROOT_PASSWORDMYSQL_PASSWORD)为强密码。
  2. 若需通过域名访问,需将域名解析到服务器 IP,并修改 Nginx 配置中的 server_name 为你的域名。
  3. 建议添加 HTTPS 加密(可通过 Let’s Encrypt 申请免费证书,在 Nginx 配置中添加 443 端口监听)。
  4. 如需升级 PHP 或 MySQL 版本,修改 docker-compose.yml 中的镜像标签(如 php:8.2-fpmmysql:8.0),然后执行 docker-compose up -d 重建容器。

7 总结

​ 通过本文档的步骤,你已成功利用 Docker 和 Docker Compose 搭建了 LNMP 环境并部署了 WordPress 论坛。整个过程通过容器化方式实现,避免了复杂的系统依赖配置,同时保证了环境的一致性和可移植性。

​ 部署完成后,你可以通过 WordPress 后台轻松扩展站点功能,如安装论坛插件、更换主题等。日常维护中,可通过文档提供的命令进行容器管理、日志查看和数据备份,确保站点稳定运行。

​ 如需进一步优化,建议根据实际需求配置 HTTPS 加密、调整 Nginx 性能参数或升级组件版本。容器化的架构使得后续的升级和迁移变得简单,只需修改配置文件并重建容器即可,极大降低了维护成本。希望本指南能为你的 WordPress 论坛搭建提供可靠的技术支持。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐