CatPtain commited on
Commit
5d4c685
·
verified ·
1 Parent(s): 7701176

Upload 5 files

Browse files
Files changed (5) hide show
  1. Dockerfile +234 -0
  2. README.md +141 -100
  3. app.py +38 -0
  4. requirements.txt +6 -0
  5. spaces.yml +29 -0
Dockerfile ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM wordpress:latest
2
+
3
+ # 安装必要工具和SQLite支持
4
+ RUN apt-get update && apt-get install -y \
5
+ sqlite3 \
6
+ libsqlite3-dev \
7
+ curl \
8
+ wget \
9
+ unzip \
10
+ git \
11
+ jq \
12
+ && rm -rf /var/lib/apt/lists/* \
13
+ && docker-php-ext-install pdo_sqlite
14
+
15
+ # 下载并安装SQLite Integration插件
16
+ RUN cd /tmp && \
17
+ wget --timeout=30 --tries=3 https://downloads.wordpress.org/plugin/sqlite-integration.zip && \
18
+ unzip sqlite-integration.zip && \
19
+ mv sqlite-integration /var/www/html/wp-content/plugins/ && \
20
+ rm sqlite-integration.zip && \
21
+ chown -R www-data:www-data /var/www/html/wp-content/plugins/sqlite-integration
22
+
23
+ # 复制PHP配置
24
+ COPY config/wp_php.ini /usr/local/etc/php/conf.d/conf.ini
25
+
26
+ # 创建SQLite数据库目录
27
+ RUN mkdir -p /var/www/html/wp-content/database
28
+
29
+ # 配置Apache监听7860端口
30
+ RUN sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf && \
31
+ sed -i 's/:80>/:7860>/' /etc/apache2/sites-available/000-default.conf
32
+
33
+ # 创建必要的目录
34
+ RUN mkdir -p /var/www/html/wp-content/mu-plugins
35
+ RUN mkdir -p /var/www/html/wp-content/backup
36
+ RUN mkdir -p /var/www/html/wp-content/uploads
37
+
38
+ # 创建SQLite数据库配置文件
39
+ RUN echo "<?php\n\
40
+ define('USE_MYSQL', false);\n\
41
+ define('DB_DIR', '/var/www/html/wp-content/database/');\n\
42
+ define('DB_FILE', 'wordpress.db');\n" > /var/www/html/wp-content/db.php
43
+
44
+ # 创建SQLite Integration必须使用插件加载器
45
+ RUN echo "<?php\n\
46
+ // SQLite Integration Must Use Plugin Loader\n\
47
+ if ( ! defined( 'ABSPATH' ) ) {\n\
48
+ exit;\n\
49
+ }\n\
50
+ \n\
51
+ // 加载SQLite Integration插件\n\
52
+ if ( file_exists( WP_CONTENT_DIR . '/plugins/sqlite-integration/load.php' ) ) {\n\
53
+ require_once WP_CONTENT_DIR . '/plugins/sqlite-integration/load.php';\n\
54
+ }\n" > /var/www/html/wp-content/mu-plugins/sqlite-integration-loader.php
55
+
56
+ # 创建wp-config.php用于SQLite
57
+ RUN echo "<?php\n\
58
+ define('DB_NAME', 'wordpress');\n\
59
+ define('DB_USER', 'root');\n\
60
+ define('DB_PASSWORD', '');\n\
61
+ define('DB_HOST', '');\n\
62
+ define('DB_CHARSET', 'utf8');\n\
63
+ define('DB_COLLATE', '');\n\
64
+ define('FS_METHOD', 'direct');\n\
65
+ define('WP_DEBUG', false);\n\
66
+ define('SQLITE_INTEGRATION_PLUGIN_PATH', '/var/www/html/wp-content/plugins/sqlite-integration/');\n\
67
+ \$table_prefix = 'wp_';\n\
68
+ if ( ! defined( 'ABSPATH' ) ) {\n\
69
+ define( 'ABSPATH', __DIR__ . '/' );\n\
70
+ }\n\
71
+ require_once ABSPATH . 'wp-settings.php';\n" > /var/www/html/wp-config.php
72
+
73
+ # 创建GitHub备份脚本
74
+ RUN echo '#!/bin/bash\n\
75
+ set -e\n\
76
+ \n\
77
+ echo "=== WordPress GitHub Backup Loader ==="\n\
78
+ \n\
79
+ # 检查环境变量\n\
80
+ if [ -z "$GITHUB_TOKEN" ] || [ -z "$GITHUB_REPO" ]; then\n\
81
+ echo "警告: GITHUB_TOKEN 或 GITHUB_REPO 环境变量未设置,跳过GitHub备份加载"\n\
82
+ else\n\
83
+ echo "开始从GitHub加载备份数据..."\n\
84
+ \n\
85
+ # 设置GitHub API URL\n\
86
+ GITHUB_API="https://api.github.com/repos/$GITHUB_REPO"\n\
87
+ \n\
88
+ # 获取最近30天的备份文件\n\
89
+ THIRTY_DAYS_AGO=$(date -d "30 days ago" +%Y-%m-%d)\n\
90
+ \n\
91
+ echo "查找 $THIRTY_DAYS_AGO 之后的备份文件..."\n\
92
+ \n\
93
+ # 获取备份文件列表\n\
94
+ BACKUP_FILES=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \\\n\
95
+ "$GITHUB_API/contents/backups" | jq -r ".[] | select(.name | test(\"backup-[0-9]{4}-[0-9]{2}-[0-9]{2}\")) | .name" | sort -r)\n\
96
+ \n\
97
+ if [ -z "$BACKUP_FILES" ]; then\n\
98
+ echo "未找到备份文件"\n\
99
+ else\n\
100
+ # 获取最新的备份文件\n\
101
+ LATEST_BACKUP=$(echo "$BACKUP_FILES" | head -n 1)\n\
102
+ echo "找到最新备份: $LATEST_BACKUP"\n\
103
+ \n\
104
+ # 下载并解压备份\n\
105
+ DOWNLOAD_URL=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \\\n\
106
+ "$GITHUB_API/contents/backups/$LATEST_BACKUP" | jq -r ".download_url")\n\
107
+ \n\
108
+ if [ "$DOWNLOAD_URL" != "null" ]; then\n\
109
+ echo "下载备份文件..."\n\
110
+ cd /var/www/html/wp-content/backup\n\
111
+ curl -L -o "$LATEST_BACKUP" "$DOWNLOAD_URL"\n\
112
+ \n\
113
+ # 解压备份\n\
114
+ if [[ "$LATEST_BACKUP" == *.tar.gz ]]; then\n\
115
+ echo "解压备份文件..."\n\
116
+ tar -xzf "$LATEST_BACKUP"\n\
117
+ \n\
118
+ # 恢复数据库\n\
119
+ if [ -f "wordpress.db" ]; then\n\
120
+ echo "恢复SQLite数据库..."\n\
121
+ cp wordpress.db /var/www/html/wp-content/database/\n\
122
+ chown www-data:www-data /var/www/html/wp-content/database/wordpress.db\n\
123
+ fi\n\
124
+ \n\
125
+ # 恢复上传文件\n\
126
+ if [ -d "uploads" ]; then\n\
127
+ echo "恢复上传文件..."\n\
128
+ cp -r uploads/* /var/www/html/wp-content/uploads/\n\
129
+ chown -R www-data:www-data /var/www/html/wp-content/uploads/\n\
130
+ fi\n\
131
+ \n\
132
+ echo "备份恢复完成"\n\
133
+ fi\n\
134
+ fi\n\
135
+ fi\n\
136
+ fi\n\
137
+ \n\
138
+ echo "=== 启动Apache ==="\n\
139
+ # 设置权限\n\
140
+ chown -R www-data:www-data /var/www/html\n\
141
+ chmod -R 755 /var/www/html\n\
142
+ \n\
143
+ # 启动Apache\n\
144
+ exec apache2-foreground' > /usr/local/bin/start-wordpress.sh && \
145
+ chmod +x /usr/local/bin/start-wordpress.sh
146
+
147
+ # 创建备份脚本
148
+ RUN echo '#!/bin/bash\n\
149
+ set -e\n\
150
+ \n\
151
+ echo "=== WordPress GitHub Backup ==="\n\
152
+ \n\
153
+ # 检查环境变量\n\
154
+ if [ -z "$GITHUB_TOKEN" ] || [ -z "$GITHUB_REPO" ]; then\n\
155
+ echo "错误: GITHUB_TOKEN 或 GITHUB_REPO 环境变量未设置"\n\
156
+ exit 1\n\
157
+ fi\n\
158
+ \n\
159
+ # 创建备份目录\n\
160
+ BACKUP_DIR="/tmp/wordpress-backup"\n\
161
+ DATE=$(date +%Y-%m-%d-%H%M%S)\n\
162
+ BACKUP_NAME="backup-$DATE"\n\
163
+ \n\
164
+ mkdir -p "$BACKUP_DIR/$BACKUP_NAME"\n\
165
+ \n\
166
+ echo "创建备份: $BACKUP_NAME"\n\
167
+ \n\
168
+ # 备份SQLite数据库\n\
169
+ if [ -f "/var/www/html/wp-content/database/wordpress.db" ]; then\n\
170
+ echo "备份SQLite数据库..."\n\
171
+ cp /var/www/html/wp-content/database/wordpress.db "$BACKUP_DIR/$BACKUP_NAME/"\n\
172
+ fi\n\
173
+ \n\
174
+ # 备份上传文件\n\
175
+ if [ -d "/var/www/html/wp-content/uploads" ]; then\n\
176
+ echo "备份上传文件..."\n\
177
+ cp -r /var/www/html/wp-content/uploads "$BACKUP_DIR/$BACKUP_NAME/"\n\
178
+ fi\n\
179
+ \n\
180
+ # 创建压缩包\n\
181
+ cd "$BACKUP_DIR"\n\
182
+ tar -czf "$BACKUP_NAME.tar.gz" "$BACKUP_NAME"\n\
183
+ \n\
184
+ # 上传到GitHub\n\
185
+ echo "上传备份到GitHub..."\n\
186
+ \n\
187
+ # 将文件转换为base64\n\
188
+ FILE_CONTENT=$(base64 -w 0 "$BACKUP_NAME.tar.gz")\n\
189
+ \n\
190
+ # 上传到GitHub\n\
191
+ curl -X PUT \\\n\
192
+ -H "Authorization: token $GITHUB_TOKEN" \\\n\
193
+ -H "Content-Type: application/json" \\\n\
194
+ -d "{\\\"message\\\": \\\"WordPress backup $DATE\\\", \\\"content\\\": \\\"$FILE_CONTENT\\\"}" \\\n\
195
+ "https://api.github.com/repos/$GITHUB_REPO/contents/backups/$BACKUP_NAME.tar.gz"\n\
196
+ \n\
197
+ echo "备份完成: $BACKUP_NAME.tar.gz"\n\
198
+ \n\
199
+ # 清理临时文件\n\
200
+ rm -rf "$BACKUP_DIR"\n\
201
+ \n\
202
+ echo "备份上传到GitHub完成"' > /usr/local/bin/backup-wordpress.sh && \
203
+ chmod +x /usr/local/bin/backup-wordpress.sh
204
+
205
+ # 设置权限
206
+ RUN chown www-data:www-data /var/www/html/wp-config.php
207
+
208
+ # 创建日志目录
209
+ RUN mkdir -p /var/log && \
210
+ touch /var/log/php_errors.log && \
211
+ chown www-data:www-data /var/log/php_errors.log && \
212
+ chmod 644 /var/log/php_errors.log
213
+
214
+ # 启用Apache模块
215
+ RUN a2enmod rewrite && \
216
+ a2enmod headers && \
217
+ a2enmod expires
218
+
219
+ # 设置Apache配置
220
+ RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
221
+
222
+ # 设置最终权限
223
+ RUN chown -R www-data:www-data /var/www/html && \
224
+ chmod -R 755 /var/www/html
225
+
226
+ # 健康检查
227
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
228
+ CMD curl -f http://localhost:7860/ || exit 1
229
+
230
+ # 暴露端口
231
+ EXPOSE 7860
232
+
233
+ # 启动WordPress
234
+ CMD ["/usr/local/bin/start-wordpress.sh"]
README.md CHANGED
@@ -1,159 +1,200 @@
1
- # WPDC - WordPress Docker Compose
2
 
3
- Easy WordPress development with Docker and Docker Compose.
4
 
5
- With this project you can quickly run the following:
6
 
7
- - [WordPress and WP CLI](https://hub.docker.com/_/wordpress/)
8
- - [phpMyAdmin](https://hub.docker.com/r/phpmyadmin/phpmyadmin/)
9
- - [MySQL](https://hub.docker.com/_/mysql/)
10
 
11
- Contents:
 
 
 
 
 
12
 
13
- - [Requirements](#requirements)
14
- - [Configuration](#configuration)
15
- - [Installation](#installation)
16
- - [Usage](#usage)
17
-
18
- ## Requirements
19
-
20
- Make sure you have the latest versions of **Docker** and **Docker Compose** installed on your machine.
21
-
22
- Clone this repository or copy the files from this repository into a new folder. In the **docker-compose.yml** file you may change the IP address (in case you run multiple containers) or the database from MySQL to MariaDB.
23
-
24
- Make sure to [add your user to the `docker` group](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user) when using Linux.
25
-
26
- ## Configuration
27
-
28
- Copy the example environment into `.env`
29
 
 
30
  ```
31
- cp env.example .env
 
 
 
 
 
32
  ```
33
 
34
- Edit the `.env` file to change the default IP address, MySQL root password and WordPress database name.
35
 
36
- ## Installation
37
 
38
- Open a terminal and `cd` to the folder in which `docker-compose.yml` is saved and run:
 
39
 
40
- ```
41
- docker-compose up
42
- ```
 
 
43
 
44
- This creates two new folders next to your `docker-compose.yml` file.
 
 
45
 
46
- * `wp-data` used to store and restore database dumps
47
- * `wp-app` – the location of your WordPress application
48
 
49
- The containers are now built and running. You should be able to access the WordPress installation with the configured IP in the browser address. By default it is `http://127.0.0.1`.
50
 
51
- For convenience you may add a new entry into your hosts file.
52
 
53
- ## Usage
54
 
55
- ### Starting containers
56
 
57
- You can start the containers with the `up` command in daemon mode (by adding `-d` as an argument) or by using the `start` command:
 
 
 
58
 
59
- ```
60
- docker-compose start
61
- ```
62
-
63
- ### Stopping containers
64
 
65
- ```
66
- docker-compose stop
67
  ```
68
 
69
- ### Removing containers
70
 
71
- To stop and remove all the containers use the`down` command:
 
 
72
 
73
- ```
74
- docker-compose down
75
  ```
76
 
77
- Use `-v` if you need to remove the database volume which is used to persist the database:
78
 
79
- ```
80
- docker-compose down -v
81
- ```
 
82
 
83
- ### Project from existing source
84
 
85
- Copy the `docker-compose.yml` file into a new directory. In the directory you create two folders:
 
 
 
86
 
87
- * `wp-data` here you add the database dump
88
- * `wp-app` here you copy your existing WordPress code
 
 
89
 
90
- You can now use the `up` command:
 
 
 
91
 
92
- ```
93
- docker-compose up
94
- ```
95
 
96
- This will create the containers and populate the database with the given dump. You may set your host entry and change it in the database, or you simply overwrite it in `wp-config.php` by adding:
97
 
98
- ```
99
- define('WP_HOME','http://wp-app.local');
100
- define('WP_SITEURL','http://wp-app.local');
101
- ```
102
 
103
- ### Creating database dumps
 
 
104
 
105
- ```
106
- ./export.sh
107
- ```
108
 
109
- ### Developing a Theme
 
 
 
110
 
111
- Configure the volume to load the theme in the container in the `docker-compose.yml`:
112
 
113
- ```
114
- volumes:
115
- - ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name
 
 
116
  ```
117
 
118
- ### Developing a Plugin
119
 
120
- Configure the volume to load the plugin in the container in the `docker-compose.yml`:
 
 
 
121
 
122
- ```
123
- volumes:
124
- - ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name
125
- ```
126
 
127
- ### WP CLI
 
 
 
128
 
129
- The docker compose configuration also provides a service for using the [WordPress CLI](https://developer.wordpress.org/cli/commands/).
 
 
130
 
131
- Sample command to install WordPress:
132
 
133
  ```
134
- docker-compose run --rm wpcli core install --url=http://localhost --title=test --admin_user=admin --admin_email=test@example.com
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  ```
136
 
137
- Or to list installed plugins:
138
 
139
- ```
140
- docker-compose run --rm wpcli plugin list
141
- ```
 
142
 
143
- For an easier usage you may consider adding an alias for the CLI:
 
 
 
144
 
145
- ```
146
- alias wp="docker-compose run --rm wpcli"
147
- ```
148
 
149
- This way you can use the CLI command above as follows:
150
 
151
- ```
152
- wp plugin list
153
- ```
 
 
 
 
154
 
155
- ### phpMyAdmin
156
 
157
- You can also visit `http://127.0.0.1:8080` to access phpMyAdmin after starting the containers.
158
 
159
- The default username is `root`, and the password is the same as supplied in the `.env` file.
 
1
+ # WordPress with SQLite for Hugging Face Spaces
2
 
3
+ 这是一个专为 Hugging Face Spaces 设计的 WordPress 项目,使用 SQLite 数据库和 GitHub 自动备份功能。
4
 
5
+ ## 🚀 快速部署到 Hugging Face Space
6
 
7
+ ### 1. 创建 Hugging Face Space
 
 
8
 
9
+ 1. 访问 [Hugging Face Spaces](https://huggingface.co/spaces)
10
+ 2. 点击 "Create new Space"
11
+ 3. 选择以下配置:
12
+ - **SDK**: `Docker`
13
+ - **Hardware**: `CPU basic` (推荐) 或更高
14
+ - **Visibility**: 根据需要选择
15
 
16
+ ### 2. 上传项目文件
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
+ 将以下文件上传到你的 Space:
19
  ```
20
+ Dockerfile
21
+ app.py
22
+ requirements.txt
23
+ config/wp_php.ini
24
+ .dockerignore (可选)
25
+ spaces.yml (可选)
26
  ```
27
 
28
+ ### 3. 配置环境变量 (可选 - 用于GitHub备份)
29
 
30
+ Space 的 Settings 页面添加以下环境变量:
31
 
32
+ - `GITHUB_TOKEN`: 你的 GitHub Personal Access Token
33
+ - `GITHUB_REPO`: GitHub 仓库路径 (格式: `username/repository-name`)
34
 
35
+ #### 创建 GitHub Token:
36
+ 1. 访问 GitHub Settings > Developer settings > Personal access tokens
37
+ 2. 创建新 token,需要以下权限:
38
+ - `repo` (完整仓库访问权限)
39
+ - `contents:write` (写入仓库内容)
40
 
41
+ #### 准备 GitHub 仓库:
42
+ 1. 创建一个新的 GitHub 仓库用于存储备份
43
+ 2. 在仓库中创建 `backups` 文件夹
44
 
45
+ ### 4. 启动 Space
 
46
 
47
+ 保存设置后,Space 会自动构建和启动。首次构建需要 5-10 分钟。
48
 
49
+ ## 🏠 本地开发部署
50
 
51
+ 如果你想在本地开发环境中运行此项目:
52
 
53
+ ### 使用 Docker Compose
54
 
55
+ ```bash
56
+ # 克隆或下载项目
57
+ git clone <your-repo-url>
58
+ cd wordpress-docker-compose-master
59
 
60
+ # 构建并启动
61
+ docker-compose up --build
 
 
 
62
 
63
+ # 或者在后台运行
64
+ docker-compose up -d --build
65
  ```
66
 
67
+ ### 使用 Docker 直接构建
68
 
69
+ ```bash
70
+ # 构建镜像
71
+ docker build -t wordpress-sqlite .
72
 
73
+ # 运行容器
74
+ docker run -p 7860:7860 wordpress-sqlite
75
  ```
76
 
77
+ ### 本地开发配置
78
 
79
+ - 数据持久化:使用 Docker volumes 保存数据
80
+ - 主题开发:可以挂载本地主题目录
81
+ - 插件开发:可以挂载本地插件目录
82
+ - 配置文件:可以修改 `config/wp_php.ini`
83
 
84
+ ## 🔧 功能特性
85
 
86
+ ### SQLite 数据库
87
+ - 无需外部数据库服务
88
+ - 数据存储在 `/var/www/html/wp-content/database/`
89
+ - 自动配置 SQLite Integration 插件
90
 
91
+ ### GitHub 自动备份
92
+ - **启动时恢复**: Space 重启时自动从 GitHub 加载最近 30 天的备份
93
+ - **手动备份**: 可以手动运行备份脚本
94
+ - **备份内容**: SQLite 数据库 + 上传文件
95
 
96
+ ### Hugging Face Space 优化
97
+ - 端口 7860 (HF Space 标准端口)
98
+ - 内存优��配置
99
+ - 健康检查支持
100
 
101
+ ## 📖 使用说明
 
 
102
 
103
+ ### 访问 WordPress
104
 
105
+ **Hugging Face Space:**
106
+ - **前台**: `https://your-space-name.hf.space/`
107
+ - **后台**: `https://your-space-name.hf.space/wp-admin/`
 
108
 
109
+ **本地开发:**
110
+ - **前台**: `http://localhost:7860/`
111
+ - **后台**: `http://localhost:7860/wp-admin/`
112
 
113
+ ### 初次设置
 
 
114
 
115
+ 1. 访问你的 Space URL
116
+ 2. 按照 WordPress 安装向导完成设置
117
+ 3. 创建管理员账户
118
+ 4. 开始使用 WordPress
119
 
120
+ ### 手动备份到 GitHub
121
 
122
+ 如果配置了 GitHub 环境变量,可以手动创建备份:
123
+
124
+ ```bash
125
+ # 在 Space 的终端中运行
126
+ /usr/local/bin/backup-wordpress.sh
127
  ```
128
 
129
+ ## 🔍 故障排除
130
 
131
+ ### 1. Space 无法启动
132
+ - 检查 Dockerfile 语法
133
+ - 确认端口设置为 7860
134
+ - 查看构建日志中的错误信息
135
 
136
+ ### 2. WordPress 显示 403 错误
137
+ - 等待容器完全启动 (1-2 分钟)
138
+ - 检查健康检查状态
139
+ - 确认 SQLite 插件正确安装
140
 
141
+ ### 3. GitHub 备份失败
142
+ - 验证 `GITHUB_TOKEN` 和 `GITHUB_REPO` 环境变量
143
+ - 确认 GitHub Token 有正确权限
144
+ - 检查仓库中是否存在 `backups` 文件夹
145
 
146
+ ### 4. 数据丢失
147
+ - Space 重启时会自动尝试从 GitHub 恢复备份
148
+ - 手动恢复:将备份文件解压到相应目录
149
 
150
+ ## 📁 项目结构
151
 
152
  ```
153
+ .
154
+ ├── Dockerfile # Docker 构建文件 (HF Space)
155
+ ├── app.py # HF Space 入口文件
156
+ ├── requirements.txt # Python 依赖 (HF Space)
157
+ ├── spaces.yml # HF Space 配置
158
+ ├── README.md # 项目说明
159
+ ├── DEPLOYMENT_GUIDE.md # 部署指南
160
+ ├── docker-compose.yml # Docker Compose (SQLite)
161
+ ├── docker-compose.local.yml # 本地开发配置
162
+ ├── docker-compose.mysql.yml # MySQL 版本 (备份)
163
+ ├── config/
164
+ │ ├── wp_php.ini # PHP 配置
165
+ │ └── pma_php.ini # phpMyAdmin 配置 (MySQL版本)
166
+ ├── .dockerignore # Docker 忽略文件
167
+ └── env.example # 环境变量示例 (MySQL版本)
168
  ```
169
 
170
+ ## 🔒 安全注意事项
171
 
172
+ 1. **GitHub Token 安全**:
173
+ - 使用最小权限原则
174
+ - 定期轮换 Token
175
+ - 不要在代码中硬编码 Token
176
 
177
+ 2. **WordPress 安全**:
178
+ - 使用强密码
179
+ - 定期更新 WordPress 和插件
180
+ - 限制管理员访问
181
 
182
+ 3. **备份安全**:
183
+ - 备份仓库设为私有
184
+ - 定期检查备份完整性
185
 
186
+ ## 📝 更新日志
187
 
188
+ - **v1.0.0**: 初始版本,支持 SQLite 和 GitHub 备份
189
+
190
+ ## 🤝 贡献
191
+
192
+ 欢迎提交 Issue 和 Pull Request!
193
+
194
+ ## 📄 许可证
195
 
196
+ 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
197
 
198
+ ---
199
 
200
+ **注意**: 这是一个为 Hugging Face Spaces 特别优化的 WordPress 部署方案。如果你需要在其他平台部署,可能需要调整配置。
app.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hugging Face Space entry point for WordPress with SQLite
4
+ This file is required by Hugging Face Spaces to properly start the Docker container.
5
+ """
6
+
7
+ import os
8
+ import subprocess
9
+ import time
10
+ import sys
11
+
12
+ def main():
13
+ """
14
+ Main entry point for the Hugging Face Space
15
+ This will start the WordPress container and keep it running
16
+ """
17
+ print("🚀 Starting WordPress with SQLite for Hugging Face Space...")
18
+
19
+ # Check if we're running in a Docker container
20
+ if os.path.exists('/.dockerenv'):
21
+ print("✅ Running inside Docker container")
22
+ # If we're in Docker, the container should already be set up
23
+ # Just keep the process alive
24
+ try:
25
+ while True:
26
+ time.sleep(60)
27
+ # Optional: Add health check here
28
+ print("💓 WordPress container is running...")
29
+ except KeyboardInterrupt:
30
+ print("\n🛑 Shutting down WordPress...")
31
+ sys.exit(0)
32
+ else:
33
+ print("❌ This should run inside a Docker container")
34
+ print("Please deploy this to Hugging Face Spaces with Docker SDK")
35
+ sys.exit(1)
36
+
37
+ if __name__ == "__main__":
38
+ main()
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ # Requirements for Hugging Face Space
2
+ # This WordPress deployment primarily uses Docker,
3
+ # but this file is included for HF Space compatibility
4
+
5
+ # Basic Python dependencies (minimal)
6
+ requests>=2.25.0
spaces.yml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ title: WordPress with SQLite
2
+ sdk: docker
3
+ app_port: 7860
4
+ colorFrom: blue
5
+ colorTo: purple
6
+ short_description: WordPress with SQLite database and GitHub backup support
7
+ description: |
8
+ A complete WordPress installation with SQLite database support, optimized for Hugging Face Spaces.
9
+ Features include:
10
+ - SQLite database (no external database required)
11
+ - GitHub automatic backup and restore
12
+ - Optimized for Hugging Face Spaces
13
+ - Easy deployment and management
14
+
15
+ tags:
16
+ - wordpress
17
+ - sqlite
18
+ - cms
19
+ - blog
20
+ - website
21
+ - backup
22
+ - github
23
+
24
+ license: mit
25
+
26
+ # Environment variables (optional)
27
+ # Users can set these in their Space settings:
28
+ # GITHUB_TOKEN: GitHub Personal Access Token for backup functionality
29
+ # GITHUB_REPO: GitHub repository path (username/repository-name) for backups