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