Headless WordPress Starter 项目中的 WordPress 自动化安装脚本解析
在现代 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 内容文件,并为特定文章设置特色图片,快速构建演示内容。
技术亮点
- 环境变量驱动:整个安装过程通过环境变量配置,非常适合 Docker 和 CI/CD 环境。
- 健壮性设计:包含数据库连接检查,确保依赖服务就绪。
- Headless 优化:预装了 REST API 和 GraphQL 相关插件,为 Headless 架构做好准备。
- 自动化程度高:从安装到配置再到内容初始化,全流程自动化。
- 安全考虑:设置 JWT 认证密钥,为 API 安全打下基础。
使用场景
这个脚本特别适合以下场景:
- 快速搭建 Headless WordPress 开发环境
- 作为 CI/CD 流程的一部分自动化部署 WordPress
- 创建可重复的 WordPress 开发环境
- 教学和演示目的快速构建 WordPress 实例
总结
这个安装脚本展示了如何通过 WP-CLI 实现 WordPress 的自动化安装和配置,特别针对 Headless WordPress 架构进行了优化。它体现了现代 WordPress 开发的最佳实践,包括环境变量配置、自动化流程和 Headless 架构支持。对于开发基于 WordPress 的 Headless CMS 系统的开发者来说,这个脚本提供了很好的参考和起点。