一、配置信息
Ubuntu 22.04 64位
2 核(vCPU)
2 GiB
10 Mbps
ESSD Entry 云盘 40 GiB
二、安装docker
三、拉取指定镜像文件
拉不到镜像文件的话,先尝试用国内的源去拉取镜像,失败的话,找一台国外的服务器拉取之后,scp传到本机,再由本机上传到部署的服务器。
I、mysql数据库
docker pull mysql:8.0
II、nginx代理工具
docker pull nginx:latest
III、redis缓存数据库
docker pull redis:alpine
IV、wordpress博客
docker pull wordpress:6-apache
四、配置nginx工具
去阿里云申请域名绑定自己服务器的公网ip
去阿里云购买免费的ssl证书,并在部署的服务器上找一个路径存放
I、创建目录conf.d、ssl
在/etc/nginx目录或者docker-compose.yaml的平行目录下创建两个目录conf.d、ssl
mkdir /etc/nginx/conf.d
mkdir /etc/nginx/ssl
II、编辑https.conf
nano /etc/nginx/conf.d/https.conf
复制粘贴如下内容
limit_conn_zone $binary_remote_addr zone=perip:10m;
# 80端口自动跳转到HTTPS(最关键,解决不安全提示)
server {
listen 80;
server_name altairnexus.top;
return 301 https://$host$request_uri;
}
# HTTPS 443端口配置
server {
listen 443 ssl;
server_name altairnexus.top;
# 你的SSL证书路径(我已经帮你填好了!)
ssl_certificate /etc/nginx/ssl/altairnexus.top.pem;
ssl_certificate_key /etc/nginx/ssl/altairnexus.top.key;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4;
ssl_prefer_server_ciphers on;
# 代理到你的 WordPress
location / {
limit_conn perip 5; # 限制每个 IP 最多 5 个并发连接
limit_conn_status 429; # 超过限制返回 429 错误
proxy_pass http://wordpress:80;
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;
}
}
III、把申请的key和pem文件,放到/etc/nginx/ssl目录下
altairnexus.top.key
altairnexus.top.pem
五、测试证书SSL过期,重新申请
I、申请
https://www.aliyun.com/ -> 控制台 -> 搜索SSL -> 数字证书管理服务(原SSL证书) -> 概览(个人测试证书:去购买) -> 立即购买 -> 证书管理(左边菜单栏) -> 个人测试证书(原免费证书) -> 申请证书 -> 证书绑定域名:altairnexus.top -> 提交审核 -> 点击下载 -> (服务器类型:Nginx,证书格式:pem/key, 操作:下载) -> 解压26703929_altairnexus.top_nginx.zip
II、上传key和pem文件到部署服务器
1、登录服务器
找到并登录阿里ECS服务器 -> 远程连接 -> 选择左侧菜单栏的文件管理(文件夹图标) -> 定位到/etc/nginx/ssl -> 把原来的altairnexus.top.pem和altairnexus.top.key删除 -> 打开本地的26703929_altairnexus.top_nginx目录 -> 拖拽两个新的证书文件到/etc/nginx/ssl下面
由于docker容器挂载了宿主机和nginx容器之间的目录通道,所以无需再从宿主机传pem和key文件到容器指定目录下,容器会自动读取。
volumes:
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /etc/nginx/ssl:/etc/nginx/ssl
2、进入 Nginx 容器
由于 Nginx 是以 Docker 容器的形式运行的,证书文件必须传到容器内的 Nginx 配置路径
docker exec -it contain-name bash
3、重载 Nginx 使新证书生效
在容器内执行 nginx -t 校验配置,然后 reload(平滑重载,不中断连接):
nginx -t && nginx -s reload
4、检验
打开浏览器 -> 打开新的无痕式窗口 -> 属于域名、网址 -> 检查是否还有不安全标识
六、配置docker-compose.yaml文件
version: '3'
services:
mysql:
image: mysql:8.0
container_name: xxx
restart: always
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: xxxx
MYSQL_DATABASE: xxxx
MYSQL_USER: xxxx
MYSQL_PASSWORD: xxxxx
command:
- --default-authentication-plugin=mysql_native_password
networks:
- wp-net
redis:
image: redis:alpine
container_name: wp-redis
restart: always
# 可选:如果需要持久化数据,取消下面的注释
volumes:
- ./redis-data:/data
networks:
- wp-net
wordpress:
image: wordpress:6-apache
container_name: xxxx
restart: always
depends_on:
- mysql
- redis # 1. 确保依赖 Redis
volumes:
- ./wp-html:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: xxx
WORDPRESS_DB_USER: xxxx
WORDPRESS_DB_PASSWORD: xxxxx
WORDPRESS_CONFIG_EXTRA: |
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', 6379);
define('WP_CACHE', true);
define('WP_REDIS_PREFIX', 'wp_blog_');
APACHE_MAX_REQUEST_WORKERS: 20 # 限制同一瞬间最多 20 个并发请求
APACHE_MAX_CONNECTIONS_PER_CHILD: 5000 # 每个进程处理 5000 个请求后自动重启,防止内存泄漏
networks:
- wp-net
# ✅ 新增 Nginx 服务(HTTPS 关键)
nginx:
image: nginx:latest
container_name: wp-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /etc/nginx/ssl:/etc/nginx/ssl
depends_on:
- wordpress
networks:
- wp-net
networks:
wp-net:
driver: bridge
七、后续必须的操作(让 WordPress 真正用上 Redis)
安装 Redis Object Cache 插件:进入 WordPress 后台,安装并启用 Redis Object Cache 插件。
验证连接:插件启用后,在 WordPress 后台的「设置 → Redis」页面,点击「Enable Object Cache」,然后查看连接状态是否显示「Connected」。