| --- |
| title: WordPress on Hugging Face Spaces |
| emoji: 🚀 |
| colorFrom: blue |
| colorTo: purple |
| sdk: docker |
| app_file: app.py |
| pinned: false |
| --- |
| |
| # WordPress on Hugging Face Spaces |
|
|
| 这是一个专门为 Hugging Face Spaces 优化的 WordPress Docker 部署方案。 |
|
|
| ## 🚀 特性 |
|
|
| - **WordPress 6.8.1** - 最新稳定版本 |
| - **PHP 8.3** - 高性能 PHP 版本 |
| - **SQLite 数据库** - 无需外部数据库服务 |
| - **Apache Web 服务器** - 稳定可靠 |
| - **端口 7860** - 符合 HF Spaces 要求 |
| - **预配置设置** - 开箱即用 |
| - **演示内容** - 包含示例文章和用户 |
|
|
| ## 📋 部署到 Hugging Face Spaces |
|
|
| ### 方法 1: 直接上传文件 |
|
|
| 1. 在 Hugging Face 创建新的 Space |
| 2. 选择 "Docker" 作为 SDK |
| 3. 上传以下文件到你的 Space: |
| ``` |
| Dockerfile.hf-spaces → Dockerfile |
| wp-config-hf.php |
| db.php |
| start-hf.sh |
| README-HF-SPACES.md → README.md |
| ``` |
|
|
| ### 方法 2: Git 推送 |
|
|
| 1. 克隆你的 HF Space 仓库: |
| ```bash |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME |
| cd YOUR_SPACE_NAME |
| ``` |
|
|
| 2. 复制必要文件: |
| ```bash |
| cp path/to/wordpress-master/Dockerfile.hf-spaces ./Dockerfile |
| cp path/to/wordpress-master/wp-config-hf.php . |
| cp path/to/wordpress-master/db.php . |
| cp path/to/wordpress-master/start-hf.sh . |
| cp path/to/wordpress-master/README-HF-SPACES.md ./README.md |
| ``` |
|
|
| 3. 提交并推送: |
| ```bash |
| git add . |
| git commit -m "Add WordPress for HF Spaces" |
| git push |
| ``` |
|
|
| ## 🔧 配置说明 |
|
|
| ### Dockerfile 修改 |
|
|
| - **端口配置**: 从 80 改为 7860 |
| - **数据库**: 使用 SQLite 替代 MySQL |
| - **依赖**: 添加 SQLite 支持 |
| - **权限**: 优化文件权限设置 |
|
|
| ### WordPress 配置 |
|
|
| - **数据库**: SQLite 文件存储在 `wp-content/database/` |
| - **URL 检测**: 自动检测 HTTPS 和域名 |
| - **安全**: 禁用文件编辑,启用强制 HTTPS |
| - **性能**: 优化内存限制和缓存设置 |
|
|
| ### 启动脚本 |
|
|
| - **初始化**: 自动创建必要目录和数据库 |
| - **权限**: 设置正确的文件权限 |
| - **健康检查**: 提供状态页面 |
| - **演示内容**: 可选的示例内容 |
|
|
| ## 🎯 访问信息 |
|
|
| 部署完成后,你可以通过以下方式访问: |
|
|
| - **主页**: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/` |
| - **管理面板**: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/wp-admin/` |
| - **健康检查**: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/health.html` |
|
|
| ### 默认登录信息 |
|
|
| - **用户名**: `demo` |
| - **密码**: `demo123` |
| - **邮箱**: `demo@example.com` |
|
|
| > ⚠️ **安全提醒**: 首次登录后请立即更改默认密码! |
|
|
| ## 📁 文件结构 |
|
|
| ``` |
| /var/www/html/ |
| ├── wp-config.php # WordPress 配置 |
| ├── wp-content/ |
| │ ├── database/ # SQLite 数据库文件 |
| │ ├── plugins/ # 插件目录 |
| │ ├── themes/ # 主题目录 |
| │ ├── uploads/ # 上传文件 |
| │ └── db.php # SQLite 集成 |
| ├── .htaccess # URL 重写规则 |
| └── health.html # 健康检查页面 |
| ``` |
|
|
| ## ⚠️ 限制和注意事项 |
|
|
| ### Hugging Face Spaces 限制 |
|
|
| 1. **存储**: 数据不会永久保存,重启后丢失 |
| 2. **资源**: CPU 和内存有限制 |
| 3. **网络**: 某些外部连接可能受限 |
| 4. **插件**: 某些需要特殊权限的插件可能无法使用 |
| 5. **权限**: 为了 HF Spaces 兼容性配置了宽松的文件权限 (777) |
|
|
| ### 建议用途 |
|
|
| - ✅ **演示和测试**: 展示 WordPress 功能 |
| - ✅ **开发环境**: 临时开发和调试 |
| - ✅ **教学用途**: WordPress 学习和培训 |
| - ❌ **生产环境**: 不适合正式网站 |
| - ❌ **数据存储**: 重要数据会丢失 |
|
|
| ## 🔧 自定义配置 |
|
|
| ### 修改端口 (如果需要) |
|
|
| 在 `Dockerfile.hf-spaces` 中修改: |
| ```dockerfile |
| # 将 7860 改为其他端口 |
| sed -i 's/Listen 80/Listen YOUR_PORT/' /etc/apache2/ports.conf |
| EXPOSE YOUR_PORT |
| ``` |
|
|
| ### 添加插件或主题 |
|
|
| 在 `Dockerfile.hf-spaces` 中添加: |
| ```dockerfile |
| # 下载并安装插件 |
| RUN wget -O plugin.zip "PLUGIN_DOWNLOAD_URL" && \ |
| unzip plugin.zip -d /var/www/html/wp-content/plugins/ && \ |
| rm plugin.zip |
| ``` |
|
|
| ### 修改 PHP 设置 |
|
|
| 在 `Dockerfile.hf-spaces` 中调整: |
| ```dockerfile |
| RUN { \ |
| echo 'memory_limit = 512M'; \ |
| echo 'upload_max_filesize = 64M'; \ |
| echo 'post_max_size = 64M'; \ |
| } > /usr/local/etc/php/conf.d/custom.ini |
| ``` |
|
|
| ## 🐛 故障排除 |
|
|
| ### 常见问题 |
|
|
| 1. **Space 启动失败** |
| - 检查 Dockerfile 语法 |
| - 确认所有必需文件都已上传 |
| - 查看 Space 日志获取详细错误信息 |
|
|
| 2. **WordPress 无法访问** |
| - 等待几分钟让容器完全启动 |
| - 检查端口 7860 是否正确配置 |
| - 尝试访问 `/health.html` 检查服务状态 |
|
|
| 3. **数据库连接错误** |
| - SQLite 数据库会自动创建 |
| - 检查 `wp-content/database/` 目录权限 |
| - 确认 `db.php` 文件存在 |
|
|
| 4. **权限错误 (Permission Denied)** |
| - 容器已配置宽松权限 (777) 解决 HF Spaces 兼容性 |
| - 如果仍有问题,检查 Space 日志中的具体错误 |
| - 确保所有必需目录在 Dockerfile 中正确创建 |
|
|
| ### 调试方法 |
|
|
| 1. 查看容器日志 |
| 2. 访问 `/health.html` 检查状态 |
| 3. 检查 `/wp-content/database/` 目录权限 |
| 4. 启用 WordPress 调试模式 |
|
|
| ## 📚 相关资源 |
|
|
| - [WordPress 官方文档](https://wordpress.org/documentation/) |
| - [Hugging Face Spaces 文档](https://huggingface.co/docs/hub/spaces) |
| - [SQLite Database Integration 插件](https://wordpress.org/plugins/sqlite-database-integration/) |
| - [Docker 官方文档](https://docs.docker.com/) |
|
|
| ## 🤝 贡献 |
|
|
| 欢迎提交 Issue 和 Pull Request 来改进这个项目! |
|
|
| ## 📄 许可证 |
|
|
| 本项目遵循 WordPress 的 GPL v2 许可证。 |