个人博客搭建
备份 Nginx 配置文件
将 Nginx 配置文件进行备份。非必须步骤,如果你已经知道 Nginx 配置文件怎么写。
# 先运行 nginx 容器,用于复制配置文件到宿主机
docker run -d --name nginx nginx
# 宿主机上创建用于映射配置文件的目录
mkdir /etc/nginx
# 从容器中拷贝配置文件到宿主机
docker cp nginx:/etc/nginx/conf.d /etc/nginx
# 为文件赋予最大权限,否则docker没有权限修改
chmod 777 /etc/nginx/conf.d/default.conf
# 删除刚才的容器
docker rm -f nginx
编写 docker-compose 文件
在当前目录下创建 docker-compose.yml
并复制下面的配置。
# 指定docker-compose.yml的版本
version: "3.1"
services:
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
# 映射 wordpress 文件到宿主机
- /var/www/html:/var/www/html
networks:
- net1
mysql:
image: mariadb:10.10
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
volumes:
# 映射 mysql 文件到宿主机
- mysql:/var/lib/mysql
networks:
- net1
nginx:
image: nginx
restart: always
ports:
# 暴露 http 端口
- "80:80"
# 暴露 https 端口
- "443:443"
volumes:
# 映射 nginx 配置文件目录到宿主机
- /etc/nginx/conf.d:/etc/nginx/conf.d
# 映射日志文件到宿主机
- /var/log/nginx:/var/log/nginx
networks:
- net1
volumes:
mysql:
networks:
net1:
# 设置为桥接网络
driver: bridge
安装 Docker Compose 并启动容器
安装 Docker Compose 并启动服务。
# 安装 Docker Compose
yum install docker-compose
# 执行 Docker Compose 命令,后台启动 Docker 容器
docker-compose up -d
修改 Nginx 配置文件
查看 Nginx 要反向代理的 WordPress 容器 IP 地址。
# 查看 Docker 的网络详细信息,找到 WordPress 的IP地址
docker network inspect root_net1
修改 Nginx 映射到宿主机的配置文件,打开 /etc/nginx/conf.d/default.conf
文件,并复制下面的配置。
server {
# 监听 http 端口
listen 80;
# 服务器域名(需要修改)
server_name nobility.work;
# 开启 Nginx 访问日志
# access_log /var/log/nginx/host.access.log main;
# 资源路径
location / {
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;
# 填写要代理的 IP,这里填写 WordPress 的 IP(需要修改)
proxy_pass http://172.18.0.2;
# 客户端上传 body 最大值
client_max_body_size 256M;
}
# 错误状态码对应的 path
error_page 500 502 503 504 /50x.html;
# 错误页配置
location = /50x.html {
root /usr/share/nginx/html;
}
}
重新加载 Nginx 配置文件
进入 Nginx 容器重新加载配置文件。
# 进入 Nginx 容器
docker exec -it root_nginx_1 /bin/bash
# 重新加载 Nginx 配置文件
nginx -s reload
开启防火墙并放行端口
可选步骤,如果遇到网站无法访问的情况,则需要检查防火墙是否开启。
# 检查防火墙是否开启
systemctl status firewalld
# 如果没有开启,需要开启防火墙
systemctl start firewalld
# 放行 80 端口
firewall-cmd --zone=public --add-port=80/tcp
# 放行 443 端口
firewall-cmd --zone=public --add-port=443/tcp
卸载 Docker 容器
期间,如果想停止服务,重新部署时,需要执行下面命令。
# 执行 Docker Compose 命令,停止正在执行的容器,如果想同时删除数据卷,则需要使用 -v 参数
docker-compose down
# 重启 Docker 服务
systemctl restart docker
Comments NOTHING