构建本网站步骤

vim docker-compose.yml

version: '3'

services:
  # MySQL 数据库服务
  db:
    image: mysql:5.7
    container_name: wordpress_db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_root_password  # 请修改为强密码!
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress_password               # 请修改为强密码!

  # WordPress 应用服务
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    container_name: wordpress_app
    ports:
      - "81:80"                                      # 将服务器的81端口映射到容器的80端口
    restart: always
    volumes:
      - wordpress_data:/var/www/html                # 挂载数据卷,持久化博客内容
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress_password     # 与上面数据库密码一致
      WORDPRESS_DB_NAME: wordpress

volumes:
  db_data:
  wordpress_data:

启动:
docker compose up -d

配置详解:
db 和 wordpress 是两个服务,分别对应数据库和博客应用。
volumes 定义了数据卷,用于将容器内的数据持久化存储在宿主机上。这是确保数据不丢失的关键。
environment 下的变量是 WordPress 安装和连接数据库所必需的信息。
ports 将服务器的 81 端口映射到容器的 80 端口。这样,通过服务器的IP或域名就能直接访问博客
因为nginx需要使用80端口  这里所以使用81来映射


添加/etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name htlearnlinux.top

location / {
    proxy_pass http://localhost:81;               
    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;
}

}

sudo nginx -t
sudo systemctl restart nginx.service
在浏览器输入http://htlearnlinux.top/

添加ssl证书
申请证书完毕后 下载nginx版本的证书 解压后移动到/etc/nginx/ssl/htlearnlinux.top/
sudo chmod 600 /etc/nginx/ssl/htlearnlinux.top/*
修改配置文件/etc/nginx/conf.d/wordpress.conf
server {
    listen 80;
    server_name htlearnlinux.top;
    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;
    server_name htlearnlinux.top;

    ssl_certificate     /etc/nginx/ssl/htlearnlinux.top/htlearnlinux.top_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/htlearnlinux.top/htlearnlinux.top.key;

    location / {
        proxy_pass http://localhost:81;
        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;
    }
sudo systemctl restart nginx.service

评论

发表回复

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