创建博客网站

内容纲要

一、配置信息

Ubuntu 22.04 64位
2 核(vCPU)
2 GiB
10 Mbps
ESSD Entry 云盘 40 GiB

二、安装docker

安装docker

三、拉取指定镜像文件

拉不到镜像文件的话,先尝试用国内的源去拉取镜像,失败的话,找一台国外的服务器拉取之后,scp传到本机,再由本机上传到部署的服务器。

1、mysql数据库

docker pull mysql:8.0

2、nginx代理工具

docker pull nginx:latest

3、redis缓存数据库

docker pull redis:alpine

4、wordpress博客

docker pull wordpress:6-apache

四、配置nginx工具

去阿里云申请域名绑定自己服务器的公网ip
去阿里云购买免费的ssl证书,并在部署的服务器上找一个路径存放

1、创建目录conf.d、ssl

在/etc/nginx目录或者docker-compose.yaml的平行目录下创建两个目录conf.d、ssl

mkdir /etc/nginx/conf.d
mkdir /etc/nginx/ssl

2、编辑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;
    }
}

3、把申请的key和pem文件,放到/etc/nginx/ssl目录下

altairnexus.top.key
altairnexus.top.pem

五、配置docker-compose.yaml文件

version: '3'

services:
  mysql:
    image: mysql:8.0
    container_name: wp-mysql
    restart: always
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ps@1234567
      MYSQL_DATABASE: db_blog
      MYSQL_USER: user1
      MYSQL_PASSWORD: ps@123456
    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: wp-blog
    restart: always
    depends_on:
      - mysql
      - redis  # 1. 确保依赖 Redis
    volumes:
      - ./wp-html:/var/www/html
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_NAME: db_blog
      WORDPRESS_DB_USER: user1
      WORDPRESS_DB_PASSWORD: ps@123456
      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」。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部