安装 Docker

安装管理 DNF 仓库的插件并设置 Docker 仓库

dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

删除原 docker repo 源

rm -f /etc/yum.repos.d/docker-ce.repo

使用阿里云 Docker CE 国内源

添加国内 repo

dnf config-manager --add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

确认:

dnf repolist | grep docker

安装

dnf clean all
dnf makecache
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动 Docker 引擎并开机自启

systemctl enable --now docker

新建目录

mkdir -p /opt/wordpress;cd /opt/wordpress/

编写 docker-compose.yml

使用本地Docker下载wordpress_php8.2.tar

sudo docker pull wordpress:php8.2-apache
sudo docker save wordpress:php8.2-apache -o wordpress_php8.2.tar

将wordpress_php8.2.tar放在/opt/wordpress/

加载镜像

cd /opt/wordpress
docker load -i wordpress_php8.2.tar

编辑挂载文件

vim docker-compose.yml
version: "3.8"

services:
  db:
    image: mysql:8.0
    container_name: wp-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass123
    volumes:
      - db_data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password

  wordpress:
    image: wordpress:php8.2-apache
    container_name: wp-app
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass123
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
      - ./php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    depends_on:
      - db

volumes:
  db_data:
  wp_data:

配置 Docker 镜像加速

编辑 daemon.json

vi /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://xwqf6d1y.mirror.aliyuncs.com"
  ]
}
如何获取你的阿里云镜像加速器地址
  1. 登录 阿里云控制台
  2. 搜索 容器镜像服务 ACR
  3. 左侧 → 镜像工具 → 镜像加速器

重启 Docker(非常重要)

systemctl daemon-reload
systemctl restart docker

确认生效:

docker info | grep -A 5 "Registry Mirrors"

启动WordPress

在 /opt/wordpress 目录下执行:

docker compose up -d

状态:

docker compose ps

模板上传限制解决

创建 PHP 配置目录

mkdir -p /opt/wordpress/php

新建 PHP 配置文件

rm -rf uploads.ini/
vim /opt/wordpress/php/uploads.ini

建议值:

file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300

重启

cd /opt/wordpress
docker compose down
docker compose up -d

校验

docker compose ps

应该看到:

wp-mysql   running
wp-app     running

验证 PHP 配置是否生效

docker exec -it wp-app php -i | grep upload_max_filesize

期望输出:

upload_max_filesize => 64M

安装插件

Markup Markdown

模板

https://github.com/seatonjiang/kratos

E:\配置命令\阿里云网站搭建部署\kratos\footer.php删除第48行

开启https

用 Nginx + Let’s Encrypt

安装 Nginx
yum install nginx -y   # CentOS/阿里云默认
systemctl enable nginx --now
配置反向代理到 Docker 容器

创建一个 Nginx 配置文件 /etc/nginx/conf.d/wordpress.conf

vim /etc/nginx/conf.d/wordpress.conf
server {
    listen 80;
    server_name wenyifan.xyz www.wenyifan.xyz;

    location / {
        proxy_pass http://127.0.0.1:8080;  # WordPress 容器端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • 把 yourdomain.com 换成自己的域名
  • 保存后测试配置:
nginx -t
systemctl reload nginx

此时访问 http://yourdomain.com 应该可以访问 WordPress。

安装 Certbot(自动生成免费 SSL)
yum install epel-release -y
yum install certbot python3-certbot-nginx -y
自动申请证书并配置 HTTPS
certbot --nginx -d wenyifan.xyz -d www.wenyifan.xyz
自动续期
systemctl enable certbot-renew.timer
systemctl start certbot-renew.timer

新建或修改站点配置

vim /etc/nginx/conf.d/wenyifan.xyz.conf

写完整配置(HTTP + HTTPS)

# HTTP:仅用于跳转到 HTTPS
server {
    listen 80;
    server_name wenyifan.xyz www.wenyifan.xyz;

    location / {
        return 301 https://$host$request_uri;
    }
}

# HTTPS 主站
server {
    listen 443 ssl http2;
    server_name wenyifan.xyz www.wenyifan.xyz;

    ssl_certificate     /etc/letsencrypt/live/wenyifan.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wenyifan.xyz/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8080;   # 注意: 8080
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}
  • proxy_pass → 127.0.0.1:8080
  • 因为你 WordPress 容器是 8080:80

检查 & 重载 Nginx

nginx -t

看到:

syntax is ok
test is successful

再执行:

systemctl reload nginx

更多推荐