在 Termux 上配置 Cloudflare Wrangler,并上传已有 Worker 与 D1 数据库 | LegspCpd Blog - blog.legspcpd.top
在 Termux 上配置 Cloudflare Wrangler,并上传已有 Worker 与 D1 数据库
本教程按“完全不会 Wrangler 的新手”来写。
目标是让你最终可以只使用 Android 手机上的 Termux,完成:
- 安装 Wrangler
- 登录 Cloudflare
- 查看已经创建好的 Worker
- 查看已经创建好的 D1
- 上传
.sql数据库- 将
.db/.sqlite数据库转换为 SQL 后导入- 部署 Worker
- 检查 D1 是否导入成功
本教程使用 Termux → Ubuntu 24.04 → Node.js 24 → Wrangler 这条路线。这样可以绕开原生 Android/Termux 环境下 Wrangler 原生依赖可能带来的兼容性问题。
目录
- 一、先理解整个流程
- 二、第一步:更新 Termux
- 三、第二步:安装 Ubuntu 2404
- 四、第三步:进入 Ubuntu
- 五、第四步:给 Termux 访问手机存储的权限
- 六、第五步:更新 Ubuntu 并安装基础工具
- 七、第六步:安装 NVM
- 八、第七步:安装 Node.js 24
- 九、第八步:安装 Wrangler
- 十、第九步:登录 Cloudflare
- 十一、第十步:检查登录状态
- 十二、第十一步:查看已有 D1
- 十三、第十二步:查看 D1 详细信息
- 十四、第十三步:获取已经创建好的 Worker
- 十五、第十四步:进入 Worker 项目
- 十六、第十五步:检查 Wrangler 配置
- 十七、第十六步:理解 D1 Binding
- 十八、第十七步:备份现有 D1
- 十九、第十八步:上传 SQL 数据库
- 二十、第十九步:如果手里的是 db/sqlite 文件
- 二十一、第二十步:检查 D1 数据
- 二十二、第二十一步:部署 Worker 前先测试
- 二十三、第二十二步:正式部署 Worker
- 二十四、第二十三步:以后怎么更新 Worker
- 二十五、常见问题
- 二十六、完整命令速查
- 二十七、参考资料
一、先理解整个流程
我们最终的环境大概是:
Android 手机└── Termux └── Ubuntu 24.04 ├── Node.js 24 ├── npm └── Wrangler ├── Cloudflare Worker └── Cloudflare D1以后你更新 Worker 时,基本只需要:
npx wrangler deploy --keep-vars如果要把 SQL 导入 D1:
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes二、第一步:更新 Termux
打开 Termux,执行:
pkg update然后:
pkg upgrade -y再安装 PRoot-Distro:
pkg install proot-distro -y为什么要安装 PRoot-Distro?
我们不直接把 Wrangler 装进 Android 的 Termux 环境,而是在 Termux 里面运行一个 Ubuntu 24.04 环境,再在 Ubuntu 里安装 Node.js 和 Wrangler。
这条路线更适合新手,也更容易处理 Wrangler 的 Linux/Node 原生依赖。
三、第二步:安装 Ubuntu 24.04
执行:
proot-distro install ubuntu:24.04等待安装完成。
如果看到类似:
[*] Installing Ubuntu (24.04)...就耐心等它结束。
安装结束后,输入:
proot-distro list你应该能看到已经安装好的 Ubuntu。
四、第三步:进入 Ubuntu
执行:
proot-distro login ubuntu --shared-home成功进入后,命令行通常会变成类似:
root@localhost:~#这就说明:
你已经不是在 Android 的原生 Termux Shell 里,而是在 Termux 里的 Ubuntu 环境中了。
为什么使用 --shared-home?
因为这样 Termux 和 Ubuntu 可以更方便地共享 Home 目录。
以后你在 Termux 的:
~/storage/downloads里放 Worker 文件、数据库文件,进入 Ubuntu 后也能更方便地访问。
五、第四步:给 Termux 访问手机存储的权限
如果你还没有执行过:
termux-setup-storage建议现在退出 Ubuntu,回到原生 Termux:
exit然后:
termux-setup-storageAndroid 会弹出权限请求。
点击:
允许
之后手机的“下载”目录一般可以通过:
~/storage/downloads访问。
例如:
手机:Download/database.db对应:
~/storage/downloads/database.db再次进入 Ubuntu
proot-distro login ubuntu --shared-home六、第五步:更新 Ubuntu 并安装基础工具
进入 Ubuntu 后执行:
apt update然后:
apt upgrade -y安装我们后面需要的工具:
apt install -y curl ca-certificates git sqlite3 unzip nano这些工具分别用于:
| 工具 | 用途 |
|---|---|
curl | 下载脚本、访问网络 |
ca-certificates | HTTPS 证书 |
git | 获取项目代码 |
sqlite3 | 转换 SQLite 数据库 |
unzip | 解压 ZIP |
nano | 编辑配置文件 |
七、第六步:安装 NVM
先安装 NVM:
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash安装结束后:
source ~/.bashrc检查:
nvm --version如果出现类似:
0.40.3就说明 NVM 已经安装成功。
如果版本号稍有不同,不需要和示例完全一致。
八、第七步:安装 Node.js 24
安装 Node.js 24:
nvm install 24启用:
nvm use 24设为默认版本:
nvm alias default 24检查 Node:
node -v应该看到类似:
v24.x.x再检查 npm:
npm -v正常出现版本号即可。
九、第八步:安装 Wrangler
建议不要把 Wrangler 随便全局安装,而是在一个专门的 Cloudflare 工作目录里面作为项目依赖使用。
创建目录:
mkdir -p ~/cloudflare进入:
cd ~/cloudflare初始化 npm 项目:
npm init -y安装 Wrangler:
npm install --save-dev wrangler@latest安装完成后检查:
npx wrangler --version如果看到类似:
⛅ wrangler 4.x.x就成功了。
Wrangler 版本会持续更新,所以版本号不一定和教程中的示例完全相同。
十、 第九步:登录 Cloudflare
执行:
npx wrangler login --deviceCloudflare 会给你一个网址和验证码。
一般会看到类似:
To authorize Wrangler, please visit:
https://dash.cloudflare.com/oauth2/device
and enter the code:
XXXXXXXX接下来做什么?
- 复制网址。
- 在手机浏览器打开。
- 登录你的 Cloudflare 账号。
- 输入 Termux 显示的验证码。
- 授权 Wrangler。
- 回到 Termux。
如果成功,会看到类似:
Successfully logged in.十一、第十步:检查登录状态
执行:
npx wrangler whoami如果能正常显示 Cloudflare 账号信息,说明登录成功。
如果这里失败
先不要继续操作。
常见原因包括:
- 没有完成浏览器授权
- 登录到了错误的 Cloudflare 账号
- 网络连接失败
- Wrangler 没有正常安装
十二、第十一步:查看已有 D1
因为你说 D1 已经创建过了,所以我们不要重新创建。
执行:
npx wrangler d1 list你应该可以看到类似:
Name UUIDmy-database xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx记下:
D1 名称D1 ID例如:
D1 名称:my-database
D1 ID:12345678-1234-1234-1234-123456789abc不要自己编数据库 ID,以
npx wrangler d1 list显示的为准。
十三、第十二步:查看 D1 详细信息
执行:
npx wrangler d1 info 你的D1名称例如:
npx wrangler d1 info my-database这一步可以帮助你确认数据库确实存在,以及 Wrangler 已经能够正常访问它。
十四、第十三步:获取已经创建好的 Worker
你有两种情况。
情况 A:Worker 已经在 Cloudflare Dashboard 创建
这是最方便的。
进入:
cd ~/cloudflare然后执行:
npx wrangler init my-worker --from-dash 你的Worker名称例如:
npx wrangler init my-worker --from-dash my-workerWrangler 会尝试把 Dashboard 里已经存在的 Worker 初始化到本地项目。
my-worker是你本地项目目录的名字。
你的Worker名称是 Cloudflare Dashboard 里面实际存在的 Worker 名字。
情况 B:你手里已经有 Worker 源代码
例如你手里有:
my-worker/├── package.json├── wrangler.jsonc├── src/└── ...那么不需要从 Dashboard 拉取,直接把整个项目放到:
~/cloudflare/即可。
十五、第十四步:进入 Worker 项目
假设本地项目叫:
my-worker执行:
cd ~/cloudflare/my-worker然后:
ls -la正常情况下可能看到:
package.jsonwrangler.jsoncsrc或者:
package.jsonwrangler.tomlworker.js不同项目结构可能不同。
十六、第十五步:检查 Wrangler 配置
优先检查:
cat wrangler.jsonc如果没有:
cat wrangler.toml一个典型的 wrangler.jsonc
例如:
{ "$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"main": "src/index.js",
"compatibility_date": "2026-10-02",
"d1_databases": [ { "binding": "DB", "database_name": "my-database", "database_id": "12345678-1234-1234-1234-123456789abc" } ]}这里最重要的是:
namemaind1_databases以及 D1 下面的:
bindingdatabase_namedatabase_id十七、第十六步:理解 D1 Binding
这个概念非常重要。
例如 Wrangler 配置:
"d1_databases": [ { "binding": "DB", "database_name": "my-database", "database_id": "12345678-1234-1234-1234-123456789abc" }]那么 Worker 代码里面通常会通过:
env.DB访问这个 D1。
例如:
export default { async fetch(request, env) { const result = await env.DB .prepare("SELECT * FROM users") .all();
return Response.json(result); }};这里:
DB必须和配置里的:
"binding": "DB"一致。
一个常见错误
配置写:
"binding": "DB"代码却写:
env.DATABASE这样 Worker 就找不到对应的 D1 绑定。
所以:
先看原来的 Worker 代码,再决定 binding 叫什么。不要随便改。
十八、第十七步:备份现有 D1
因为你的 D1 已经创建过了,所以在导入新的数据库之前,建议先备份。
例如:
npx wrangler d1 export my-database --remote --output=./d1-backup.sql成功以后,你的项目目录里会多出:
d1-backup.sql为什么要备份?
假设你的 D1 原来已经存在:
userssettingsmessages而你的新 SQL 里又执行:
CREATE TABLE users ...就有可能发生表已经存在、重复插入等问题。
先备份,至少还有恢复依据。
十九、第十八步:上传 SQL 数据库
如果你的数据库文件已经是:
database.sql把它放到 Worker 项目目录,例如:
~/cloudflare/my-worker/database.sql然后:
cd ~/cloudflare/my-worker执行:
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes例如:
npx wrangler d1 execute my-database --remote --file=./database.sql --yes这条命令的意思:
操作 D1↓指定数据库↓操作远程 Cloudflare D1↓读取 database.sql↓执行里面的 SQL二十、 第十九步:如果手里的是 .db / .sqlite 文件
这一步非常重要。
假设你拿到的是:
database.db或者:
database.sqlite不要直接把它作为 --file 上传。
因为 .db 是 SQLite 数据库文件本身,而 wrangler d1 execute --file 使用的是 SQL 文本。
第 1 步:进入数据库文件所在目录
例如:
cd ~/cloudflare/my-worker第 2 步:把 SQLite 导出成 SQL
如果文件叫:
database.db执行:
sqlite3 database.db ".dump" > database.sql完成后检查:
ls -lh应该能看到:
database.dbdatabase.sql第 3 步:检查 SQL 有没有正常生成
执行:
head -n 30 database.sql正常情况下可能看到:
PRAGMA foreign_keys=OFF;BEGIN TRANSACTION;CREATE TABLE ...INSERT INTO ...如果能看到这些 SQL 内容,就说明转换成功。
第 4 步:导入 D1
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes例如:
npx wrangler d1 execute my-database --remote --file=./database.sql --yes二十一、第二十步:检查 D1 数据
数据库导入之后,建议马上检查表。
执行:
npx wrangler d1 execute 你的D1名称 --remote --command="SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name;"例如:
npx wrangler d1 execute my-database --remote --command="SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name;"如果导入成功,可能看到:
userssettingsmessages这样就说明:
D1 不只是“创建成功”,而是已经真正拥有数据库表。
再进一步查询某个表
例如有:
users可以:
npx wrangler d1 execute my-database --remote --command="SELECT * FROM users LIMIT 10;"二十二、第二十一步:部署 Worker 前先测试
进入 Worker 目录:
cd ~/cloudflare/my-worker先运行:
npx wrangler deploy --dry-run这个命令主要用于检查部署过程,而不会直接把 Worker 正式部署上线。
如果这里报错:
不要急着正式部署。
先把错误解决。
二十三、第二十二步:正式部署 Worker
确认 --dry-run 没问题后:
npx wrangler deploy --keep-vars推荐使用:
--keep-vars因为你的 Worker 如果之前在 Cloudflare Dashboard 中设置过普通环境变量,部署时最好注意不要意外覆盖原来的变量。
部署成功以后,一般会看到 Worker 的 URL,例如:
https://my-worker.example.workers.dev这就表示:
Worker 已经重新部署。
二十四、第二十三步:以后怎么更新 Worker
以后就简单很多。
每次打开 Termux:
proot-distro login ubuntu --shared-home进入项目:
cd ~/cloudflare/my-worker然后先测试:
npx wrangler deploy --dry-run确认无误后:
npx wrangler deploy --keep-vars更新 D1 数据时
如果新的数据已经是 SQL:
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes如果还是 SQLite:
sqlite3 database.db ".dump" > database.sql然后:
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes二十五、常见问题
1. node: command not found
检查:
source ~/.bashrc然后:
nvm use 24再:
node -v2. nvm: command not found
执行:
source ~/.bashrc然后检查:
nvm --version如果还是不行,可以重新进入 Ubuntu:
exit再:
proot-distro login ubuntu --shared-home3. wrangler: command not found
如果你是通过:
npm install --save-dev wrangler@latest安装的,不要直接输入:
wrangler而应该:
npx wrangler例如:
npx wrangler --version4. npx wrangler login 登录失败
手机环境推荐:
npx wrangler login --device不要优先折腾本地回调地址。
5. d1 list 看不到我的 D1
先检查:
npx wrangler whoami确认登录的是正确的 Cloudflare 账号。
然后:
npx wrangler d1 list如果你的 D1 属于其他 Cloudflare 账号/账户,登录身份不对时自然看不到。
6. table already exists
说明你的 D1 里已经存在这个表。
先备份:
npx wrangler d1 export 你的D1名称 --remote --output=./d1-backup.sql不要直接乱删表。
如果你不清楚 SQL 文件到底会做什么,可以先打开:
nano database.sql检查里面的:
CREATE TABLEDROP TABLEINSERT INTO等语句。
7. .db 文件直接导入失败
不要:
npx wrangler d1 execute xxx --remote --file=database.db正确方法:
sqlite3 database.db ".dump" > database.sql然后:
npx wrangler d1 execute xxx --remote --file=database.sql --yes8. Worker 部署成功,但是网站还是不能用
重点检查:
D1 binding
配置:
"binding": "DB"代码:
env.DB两者是否一致。
数据库 ID
检查:
database_id是不是你真正的 D1 ID。
数据库名字
检查:
database_name是不是已经存在的 D1。
环境变量
如果 Worker 原来在 Dashboard 配置了变量,部署时可以使用:
npx wrangler deploy --keep-vars二十六、完整命令速查
第一次安装
Termux
pkg updatepkg upgrade -ypkg install proot-distro -ytermux-setup-storageproot-distro install ubuntu:24.04proot-distro login ubuntu --shared-homeUbuntu
apt updateapt upgrade -yapt install -y curl ca-certificates git sqlite3 unzip nanoNVM
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bashsource ~/.bashrcnvm install 24nvm use 24nvm alias default 24Wrangler
mkdir -p ~/cloudflarecd ~/cloudflarenpm init -ynpm install --save-dev wrangler@latestnpx wrangler --version登录 Cloudflare
npx wrangler login --device检查账号
npx wrangler whoami查看 D1
npx wrangler d1 list查看 D1 信息
npx wrangler d1 info 你的D1名称获取已有 Worker
cd ~/cloudflarenpx wrangler init my-worker --from-dash 你的Worker名称备份 D1
cd ~/cloudflare/my-workernpx wrangler d1 export 你的D1名称 --remote --output=./d1-backup.sqlSQLite 转 SQL
sqlite3 database.db ".dump" > database.sql上传 SQL 到 D1
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes检查表
npx wrangler d1 execute 你的D1名称 --remote --command="SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name;"查询数据
npx wrangler d1 execute 你的D1名称 --remote --command="SELECT * FROM users LIMIT 10;"部署前检查
npx wrangler deploy --dry-run正式部署
npx wrangler deploy --keep-vars二十七、参考资料
- Fuwari 官方仓库
- Fuwari 官方文章格式说明
- Cloudflare Wrangler 官方文档
- Cloudflare D1 官方文档
- Cloudflare D1 导入/执行 SQL
- Cloudflare D1 导入 SQLite 数据
- Termux PRoot-Distro 官方仓库
- Node.js 官方网站
最后记住 4 条命令
以后最常用的其实就这几个:
进入 Ubuntu
proot-distro login ubuntu --shared-home查看 Cloudflare 登录状态
npx wrangler whoami上传 D1 SQL
npx wrangler d1 execute 你的D1名称 --remote --file=./database.sql --yes部署 Worker
npx wrangler deploy --keep-vars建议第一次操作时严格按照本文顺序执行,不要跳步骤。
尤其是 D1:先确认数据库 → 再备份 → 再导入 → 再检查表 → 最后部署 Worker。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LegspCpd Blog