Docker Compose 部署 Nginx + WordPress + Https个人站点

Docker Compose 部署 Nginx + WordPress + Https个人站点

前段时间自己通过docker compose部署了 Nginx + WordPress 个人站点并配置 SSL 证书,将自己的配置过程记录在这里,接下来我将介绍如何使用 Docker Compose 来快速部署一个包含 Nginx 和 WordPress 的个人站点,并为其配置 SSL 证书。通过这种方式,你可以简化服务器管理,快速构建一个安全的 WordPress 网站。

1.前置条件

在开始部署之前,你需要确保以下条件已经具备:

  • 一台安装了 Docker 和 Docker Compose 的服务器(推荐使用 Linux 系统)。
  • 已注册的域名(用于 SSL 证书的生成)。
  • 基本的 Linux 命令行操作能力。

如果你还没有安装 Docker 和 Docker Compose,可以通过以下命令进行安装:

# 安装 Docker
sudo apt update
sudo apt install docker.io

# 安装 Docker Compose
sudo apt install docker-compose

2.环境准备

在部署 Nginx + WordPress 的过程中,我们需要用到以下几个 Docker 容器:

  • Nginx:作为反向代理服务器,用于处理 HTTPS 请求。
  • WordPress:网站的内容管理系统。
  • MySQL:WordPress 使用的数据库。

创建一个项目目录来存放 Docker Compose 配置文件和相关数据:

mkdir wordpress-nginx-ssl
cd wordpress-nginx-ssl

3.Docker Compose 配置文件

接下来我们将创建一个 docker-compose.yml 文件,其中包含 Nginx、WordPress 和 MySQL 服务的配置。以下是配置的详细步骤:

Nginx 服务配置

首先,在 docker-compose.yml 文件中添加 Nginx 反向代理的配置。我们将使用一个独立的 Nginx 容器来处理 HTTPS 请求,并代理到 WordPress 容器。

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/ssl:/etc/nginx/ssl
    depends_on:
      - wordpress
    networks:
      - wp_net

其中:

  • ports 将主机的 80 和 443 端口映射到 Nginx 容器中。
  • volumes 用来挂载 Nginx 配置文件和 SSL 证书。
  • depends_on 表示 Nginx 依赖 WordPress 服务。
WordPress 服务配置

接下来配置 WordPress 服务:

  wordpress:
    image: wordpress:latest
    container_name: wordpress
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress_data:/var/www/html
    depends_on:
      - db
    networks:
      - wp_net

其中:

  • environment 用来指定 WordPress 连接 MySQL 数据库的配置信息。
  • volumes 挂载了 WordPress 网站的文件目录到主机上,以便持久化存储。
MySQL 服务配置

最后配置 MySQL 服务:

  db:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - ./mysql_data:/var/lib/mysql
    networks:
      - wp_net
  • MYSQL_ROOT_PASSWORD 是 MySQL root 用户的密码。
  • MYSQL_DATABASE 是 WordPress 使用的数据库名称。
  • volumes 挂载了数据库文件,确保数据的持久化。
定义网络

docker-compose.yml 的最后,定义一个自定义的网络:

networks:
  wp_net:
    driver: bridge

4. 生成 SSL 证书

为了让我们的网站能够使用 HTTPS,需要生成 SSL 证书。这里我们使用 Certbot 来生成免费的 Let's Encrypt 证书。首先安装 Certbot

sudo apt install certbot

接下来使用 Certbot 生成证书:

sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com

生成的证书将会存储在 /etc/letsencrypt/live/yourdomain.com/ 目录中。接下来,将证书复制到 Docker 容器中的 Nginx 挂载目录下:

sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ./nginx/ssl/
sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ./nginx/ssl/

nginx/conf.d 目录下创建 Nginx 配置文件 wordpress.conf,内容如下:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    location / {
        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;
    }
}

这段配置将:

  • 强制将 HTTP 请求重定向到 HTTPS。
  • 使用 SSL 证书来加密通信。
  • 将来自 Nginx 的请求转发给 WordPress 容器。

5. 启动服务并测试

完成所有配置后,运行以下命令启动容器:

docker-compose up -d

你可以通过以下命令查看容器是否启动成功:

docker-compose ps

浏览器中访问你的域名 https://yourdomain.com,如果一切正常,应该能够看到 WordPress 的安装页面。

到这里我们的个人站点就搭建完成了,后续可能还会遇到一些配置方面的问题,这个后续有时间再更新。

6.总结

通过 Docker Compose,我们可以轻松地部署 Nginx + WordPress 站点,并快速为其配置 SSL 证书,保证网站的安全性。这种方法不仅方便管理,还能确保站点的数据持久化和服务的高效运行。如果你有任何问题或建议,欢迎在评论区留言。

祝你的网站建设顺利!

docker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker composedocker compose
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇
Rain ai 招募前苹果硬件专家 jean didier allegrucci,推动更高效的ai半导体研发. ??.