架构2. 创建项目结构# 创建项目目录mkdirwordpress-distributedcdwordpress-distributedmkdirnginx-config redis-config3. 创建 docker-compose.yml# docker-compose.ymlversion:3.8services:# Nginx 负载均衡 反向代理nginx:image:nginx:stable-alpine-perlports:-80:80-443:443volumes:-./nginx-config/default.conf:/etc/nginx/conf.d/default.conf-./nginx-config/nginx.conf:/etc/nginx/nginx.conf-wordpress-data:/var/www/htmldepends_on:-wordpress1-wordpress2networks:-wordpress-network# WordPress 实例 1可水平扩展wordpress1:image:wordpress:php8.4-fpm-alpinevolumes:-wordpress-data:/var/www/html-./php-config/uploads.ini:/usr/local/etc/php/conf.d/uploads.inienvironment:WORDPRESS_DB_HOST:mysqlWORDPRESS_DB_USER:wpuserWORDPRESS_DB_PASSWORD:${DB_PASSWORD}WORDPRESS_DB_NAME:wordpressWORDPRESS_TABLE_PREFIX:wp_REDIS_HOST:redisnetworks:-wordpress-networkdeploy:resources:limits:memory:512Mcpus:0.5# WordPress 实例 2负载均衡wordpress2:image:wordpress:php8.4-fpm-alpinevolumes:-wordpress-data:/var/www/html-./php-config/uploads.ini:/usr/local/etc/php/conf.d/uploads.inienvironment:WORDPRESS_DB_HOST:mysqlWORDPRESS_DB_USER:wpuserWORDPRESS_DB_PASSWORD:${DB_PASSWORD}WORDPRESS_DB_NAME:wordpressWORDPRESS_TABLE_PREFIX:wp_REDIS_HOST:redisnetworks:-wordpress-networkdeploy:resources:limits:memory:512Mcpus:0.5# MySQL 数据库共享mysql:image:mysql:8.0-debianenvironment:MYSQL_ROOT_PASSWORD:${DB_ROOT_PASSWORD}MYSQL_DATABASE:wordpressMYSQL_USER:wpuserMYSQL_PASSWORD:${DB_PASSWORD}volumes:-mysql-data:/var/lib/mysql-./mysql-config/my.cnf:/etc/mysql/my.cnfcommand:---default-authentication-pluginmysql_native_password---innodb_buffer_pool_size512Mnetworks:-wordpress-network# Redis 缓存共享redis:image:redis:alpinecommand:-redis-server---appendonly yes---requirepass ${REDIS_PASSWORD}---maxmemory 256mb---maxmemory-policy allkeys-lruvolumes:-redis-data:/data-./redis-config/redis.conf:/etc/redis/redis.confnetworks:-wordpress-networkvolumes:wordpress-data:mysql-data:redis-data:networks:wordpress-network:driver:bridge4. 创建 Nginx 负载均衡配置# 创建 Nginx 主配置catnginx-config/nginx.confEOF user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # 上游 WordPress 服务器组 upstream wordpress_backend { least_conn; # 最少连接负载均衡 server wordpress1:9000 weight3; server wordpress2:9000 weight2; keepalive 32; } include /etc/nginx/conf.d/*.conf; } EOF# 创建站点配置catnginx-config/default.confEOF server { listen 80; server_name _; root /var/www/html; index index.php; # 静态文件缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { expires 365d; access_log off; add_header Cache-Control public, immutable; try_files $uri 404; } # WordPress 路由 location / { try_files $uri $uri/ /index.php?$args; } # PHP 负载均衡 location ~ \.php$ { fastcgi_pass wordpress_backend; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_keep_conn on; fastcgi_intercept_errors on; } # 安全设置 location ~ /\.ht { deny all; } location ~* (\.env|wp-config\.php|composer\.json)$ { deny all; } } EOF5. 创建配置文件# 创建环境变量文件 cat .env EOF DB_ROOT_PASSWORDyour_mysql_root_password_123 DB_PASSWORDyour_mysql_wp_password_456 REDIS_PASSWORDyour_redis_password_789 EOF # PHP 配置 mkdir php-config cat php-config/uploads.ini EOF file_uploads On upload_max_filesize 64M post_max_size 128M max_execution_time 300 memory_limit 256M EOF # MySQL 配置 mkdir mysql-config cat mysql-config/my.cnf EOF [mysqld] innodb_buffer_pool_size 512M innodb_log_file_size 256M max_connections 100 query_cache_type 1 query_cache_size 64M slow_query_log 1 EOF # Redis 配置 mkdir redis-config cat redis-config/redis.conf EOF bind 0.0.0.0 port 6379 requirepass your_redis_password_789 maxmemory 256mb maxmemory-policy allkeys-lru appendonly yes appendfsync everysec EOF6. 启动分布式架构# 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看负载均衡状态 docker-compose logs nginx | grep -i upstream7. 验证分布式架构# 检查所有容器运行状态 docker-compose ps # 测试负载均衡 curl -I http://localhost # 检查 Redis 连接 docker-compose exec redis redis-cli -a your_redis_password_789 ping # 检查 MySQL 连接 docker-compose exec mysql mysql -u wpuser -pyour_mysql_wp_password_456 -e SELECT version;8. WordPress 安装和配置访问http://你的服务器IP完成 WordPress 安装安装 Redis 缓存插件如 “Redis Object Cache”在wp-config.php中添加 Redis 配置// Redis 分布式缓存配置 define(WP_REDIS_HOST, redis); define(WP_REDIS_PORT, 6379); define(WP_REDIS_PASSWORD, your_redis_password_789); define(WP_REDIS_TIMEOUT, 1); define(WP_REDIS_READ_TIMEOUT, 1); define(WP_REDIS_SELECTIVE_FLUSH, true);9. 扩展和管理命令# 扩展更多 WordPress 实例 docker-compose up -d --scale wordpress4 # 查看各实例资源使用 docker stats $(docker ps -q --filter namewordpress) # 重启特定服务 docker-compose restart wordpress1 # 更新配置后重载 Nginx docker-compose exec nginx nginx -s reload # 备份数据库 docker-compose exec mysql mysqldump -u root -p$DB_ROOT_PASSWORD wordpress backup.sql10. 监控和优化# 监控 Nginx 访问日志 docker-compose logs -f nginx | grep wordpress # 检查 PHP-FPM 状态 docker-compose exec wordpress1 curl http://localhost/status性能测试# 使用 ab 进行压力测试 ab -n 1000 -c 10 http://你的服务器IP/11.项目最终结构wordpress-distributed/ ├── docker-compose.yml ├── .env ├── nginx-config/ │ ├── nginx.conf │ └── default.conf ├── php-config/ │ └── uploads.ini ├── mysql-config/ │ └── my.cnf ├── redis-config/ │ └── redis.conf └── README.md