首页
/ Headless WordPress Starter 项目中的 WordPress 自动化安装脚本解析

Headless WordPress Starter 项目中的 WordPress 自动化安装脚本解析

2025-07-08 06:49:10作者:裴麒琰

在现代 Web 开发中,Headless WordPress 架构越来越受欢迎,它将 WordPress 作为内容管理系统(CMS)与前端展示层分离。本文将深入分析一个用于自动化安装和配置 WordPress 的 Shell 脚本,该脚本是 Headless WordPress Starter 项目的一部分,专为 Docker 环境设计。

脚本概述

这个安装脚本的主要功能是在 Docker 容器中自动完成 WordPress 的安装和基础配置,特别针对 Headless WordPress 架构进行了优化。它通过一系列 WordPress CLI (WP-CLI) 命令实现了完整的安装流程。

核心功能解析

1. MySQL 数据库连接检查

脚本首先检查 MySQL 数据库是否就绪:

mysql_ready='nc -z db-headless 3306'

if ! $mysql_ready
then
    printf 'Waiting for MySQL.'
    while ! $mysql_ready
    do
        printf '.'
        sleep 1
    done
    echo
fi

这段代码使用 nc (netcat) 命令检查能否连接到名为 db-headless 的 MySQL 服务(默认端口 3306)。如果连接失败,脚本会持续重试并显示进度点,直到连接成功。这在 Docker 多容器环境中尤为重要,确保数据库服务完全启动后再继续 WordPress 安装。

2. WordPress 核心安装

脚本检查 WordPress 是否已安装,若未安装则继续:

if wp core is-installed
then
    echo "WordPress is already installed, exiting."
    exit
fi

wp core download --force

wp core is-installed 命令检查 WordPress 是否已安装,避免重复安装。wp core download --force 强制下载最新版 WordPress 核心文件。

3. 配置文件创建

[ -f wp-config.php ] || wp config create \
    --dbhost="$WORDPRESS_DB_HOST" \
    --dbname="$WORDPRESS_DB_NAME" \
    --dbuser="$WORDPRESS_DB_USER" \
    --dbpass="$WORDPRESS_DB_PASSWORD"

这段代码检查 wp-config.php 是否存在,不存在则使用环境变量中的数据库配置创建新的配置文件。这种方式非常适合 Docker 环境,可以通过环境变量灵活配置数据库连接。

4. JWT 认证密钥设置

wp config set JWT_AUTH_SECRET_KEY 'your-secret-here'
wp config set GRAPHQL_JWT_AUTH_SECRET_KEY 'your-secret-here'

为 REST API 和 GraphQL API 设置 JWT (JSON Web Token) 认证密钥,这是 Headless WordPress 架构中 API 安全认证的重要组成部分。

5. WordPress 核心安装

wp core install \
    --url="$WORDPRESS_URL" \
    --title="$WORDPRESS_TITLE" \
    --admin_user="$WORDPRESS_ADMIN_USER" \
    --admin_password="$WORDPRESS_ADMIN_PASSWORD" \
    --admin_email="$WORDPRESS_ADMIN_EMAIL" \
    --skip-email

使用环境变量中的配置完成 WordPress 核心安装,包括站点 URL、标题、管理员账号等信息。--skip-email 参数跳过发送安装成功邮件的步骤。

6. 站点基础配置

wp option update blogdescription "$WORDPRESS_DESCRIPTION"
wp rewrite structure "$WORDPRESS_PERMALINK_STRUCTURE"

更新站点描述和固定链接结构,这些配置对 SEO 和 API 访问路径有重要影响。

7. 主题管理

wp theme activate postlight-headless-wp
wp theme delete twentytwenty twentytwentyone twentytwentytwo

激活项目特定的 Headless WordPress 主题,并删除默认安装的 WordPress 主题,保持环境简洁。

8. 插件管理

wp plugin delete akismet hello
wp plugin install --activate --force \
    acf-to-wp-api \
    advanced-custom-fields \
    custom-post-type-ui \
    wordpress-importer \
    wp-rest-api-v2-menus \
    jwt-authentication-for-wp-rest-api \
    wp-graphql \
    https://github.com/wp-graphql/wp-graphql-jwt-authentication/archive/refs/tags/v0.4.1.zip \
    https://github.com/wp-graphql/wp-graphql-acf/archive/master.zip \
    /var/www/plugins/*.zip

删除默认插件,安装 Headless WordPress 所需的核心插件,包括:

  • Advanced Custom Fields (ACF) 及其 API 扩展
  • 自定义文章类型管理插件
  • WordPress REST API 相关插件
  • GraphQL 相关插件及其认证扩展

9. 内容初始化

wp term update category 1 --name="Sample Category"
wp post delete 1 2

wp import /var/www/postlightheadlesswpstarter.wordpress.xml --authors=skip --skip=attachment

wp media import /var/www/images/Graphql2.png --featured_image \
  --post_id=$(wp post list --field=ID --name=what-do-you-need-to-know-about-graphql)
# 其他媒体文件导入...

更新默认分类,删除默认文章,导入预设的 XML 内容文件,并为特定文章设置特色图片,快速构建演示内容。

技术亮点

  1. 环境变量驱动:整个安装过程通过环境变量配置,非常适合 Docker 和 CI/CD 环境。
  2. 健壮性设计:包含数据库连接检查,确保依赖服务就绪。
  3. Headless 优化:预装了 REST API 和 GraphQL 相关插件,为 Headless 架构做好准备。
  4. 自动化程度高:从安装到配置再到内容初始化,全流程自动化。
  5. 安全考虑:设置 JWT 认证密钥,为 API 安全打下基础。

使用场景

这个脚本特别适合以下场景:

  • 快速搭建 Headless WordPress 开发环境
  • 作为 CI/CD 流程的一部分自动化部署 WordPress
  • 创建可重复的 WordPress 开发环境
  • 教学和演示目的快速构建 WordPress 实例

总结

这个安装脚本展示了如何通过 WP-CLI 实现 WordPress 的自动化安装和配置,特别针对 Headless WordPress 架构进行了优化。它体现了现代 WordPress 开发的最佳实践,包括环境变量配置、自动化流程和 Headless 架构支持。对于开发基于 WordPress 的 Headless CMS 系统的开发者来说,这个脚本提供了很好的参考和起点。