Docker + Nginx 搭建 Wordpress

898 阅读3分钟

前段时间在Oracle Cloud上申请了一台 ARM 架构的虚拟机,这两天在家休病假,正好利用这个时间在这台虚拟机上使用 Wordpress 搭建个人博客网站,具体搭建的历程一波三折,最终在 GitHub 上找到了一个使用 Docker + Nginx + Wordpress 搭建网站的仓库,流程特别简单,在这里记录一下。

1. 前提条件

  • 云服务器:
    • 操作系统:Ubuntu 18.04
    • 具备公网 IP 地址
    • 开放 443 端口
  • 域名及配套的 HTTPS 证书

2. 网站搭建配置

GitHub 仓库地址:github.com/mjstealey/w… 626 个 Star、293 的 Fork。

2.1 依赖的环境

  • FPM 版本的 WordPress
  • MySQL 8.x 版本
  • Nginx (作为 Web 服务器)
  • Docker + docker-compose 环境

2.2 配置流程

2.2.1 修改默认配置

  • 访问 GitHub 仓库,下载源代码,解压
  • 修改.env配置:重命名.env.template.env,并修改其中的配置项,其中:
    • WORDPRESS_LOCAL_HOME:Wordpress 容器的挂载路径
    • MYSQL_LOCAL_HOME:MySQL 容器的挂载路径,对应 MySQL 数据库的数据路径
    • NGINX_CONF:Nginx 容器的挂载路径,对应 Nginx 的配置文件的存放位置
    • NGINX_SSL_CERTS:HTTPS 证书相关的配置文件的存放路径
    • NGINX_LOGS:Nginx 容器的挂载路径,对应 Nginx 的日志文件夹

以我的配置为例,Docker 容器的挂载路径统一存放在/usr/local/docker/data文件夹下,具体来讲,Wordpress 的数据路径对应/usr/local/docker/data/wordpress、MySQL 数据库的数据路径对应/usr/local/docker/data/mysql/、Nginx 的配置文件存放位置对应/usr/local/docker/data/nginx、Nginx 的日志文件夹为/var/log/nginx、HTTPS 证书的存放位置/usr/local/funmap_cn,则配置应修改为:

# docker-compose environment file
#
# When you set the same environment variable in multiple files,
# here’s the priority used by Compose to choose which value to use:
#
#  1. Compose file
#  2. Shell environment variables
#  3. Environment file
#  4. Dockerfile
#  5. Variable is not defined

# Wordpress Settings
export WORDPRESS_LOCAL_HOME=/usr/local/docker/data/wordpress
export WORDPRESS_UPLOADS_CONFIG=./config/uploads.ini
export WORDPRESS_DB_HOST=database:3306
export WORDPRESS_DB_NAME=wordpress
export WORDPRESS_DB_USER=wordpress
export WORDPRESS_DB_PASSWORD=password123!

# MySQL Settings
export MYSQL_LOCAL_HOME=/usr/local/docker/data/mysql
export MYSQL_DATABASE=${WORDPRESS_DB_NAME}
export MYSQL_USER=${WORDPRESS_DB_USER}
export MYSQL_PASSWORD=${WORDPRESS_DB_PASSWORD}
export MYSQL_ROOT_PASSWORD=rootpassword123!

# Nginx Settings
export NGINX_CONF=/usr/local/docker/data/nginx/default.conf
export NGINX_SSL_CERTS=/usr/local/funmap_cn
export NGINX_LOGS=/var/log/nginx

# User Settings
# TBD
  • 修改default.conf的配置,其中:
    • 使用域名替换$host,以我的配置为例,使用funnymap.cn统一替换$host
    • 替换8443443
  • 修改docker-compose.yml的配置,主要是修改 Nginx 容器的端口映射,将8080改为808443改为443

2.2.2 运行 Docker 容器

  • 首选需要确保服务器上配置了 docker 及 docker-compose 环境
  • wordpress-nginx-docker-master文件夹拷贝至服务器的某个路径下,并访问该路径
  • 创建 docker 容器所需要的文件挂载路径:mkdir -p /usr/local/docker/data/{mysql,nginx,wordpress}
  • 拷贝default.conf文件至/usr/local/docker/data/nginx路径:cp nginx/default.conf /usr/local/docker/data/nginx/
  • 拷贝 HTTPS 相关证书到你设置的NGINX_SSL_CERTS路径下
  • 创建环境变量:source .env
  • 拉取相关的镜像:docker-compose pull
  • 运行 MySQL 容器:docker-compose up -d database
  • 查看 MySQL 容器是否创建成功:docker ps,如果能查看到 MySQL 容器,则表示该容器创建成功
  • 运行 Nginx 和 Wordpress 容器:docker-compose up -d nginx wordpress
  • 查看 Nginx 和 Wordpress 容器是否创建成功:docker ps,如果能查看到这两个容器,则表示该容器创建成功

在浏览器输入你的域名,如果能看到 Wordpress 初始化界面,表示 Wordpress 环境配置成功了。