在手机上部署并维护hexo博客的奇怪问题
前情提要:最近我重新捡起了停更长达三年的博客,这个博客最初只是我用来研究各类新工具、新玩法的平台。我花了5块钱重金(雾)购入了一个域名,同时将网站托管到了Cloudflare Pages平台。相较于GitHub Pages。因为学业原因,这段时间一直没办法使用电脑,后续的过程,我都是在手机上完成的,有一些很多网上没讲到的问题,所以就分享一下。**这不是一篇一条龙,只是我自己的问题总结和流程。**我实在是没有精力把注册到创建库都给你走一遍。所以我引用了一些文章,非常感谢那些作者。
正文
准备工作
先是准备工作,你在手机上面要下载Termux(理论上来说,任何一个终端管理器都可以),以及一个 MT 管理器(或者是什么任何功能强大的管理器都可以,但是我这里建议用 MT管理器,因为它可以方便地挂载 Termux 的目录.好像MixPlorer也可以).建议再找一个科学上网环境(毕竟github……)。如果你和我一样的话,你的手机需要ROOT。
注册 Cloudflare和GitHub
首先配置你得先有个账号吧,这里注册我就不再赘述了。
CF官网,github官网
当然,这里也有一个问题,有可能你进不去注册界面,它的域名是 dash.cloudflare.com。你可以参考网上大神的方式,像改host或者是用Cloudflare的SaaS,但是为了省事,我在这里先建议大家用科学上网。
配置Cloudflare pages和Github仓库
https://blog.csdn.net/xxxlxxxxlx/article/details/155951727(配置CF)
这里的问题主要是Github绑定不上(不知道是不是我的VPN的问题),可以试试开隐私页面或者换个节点/浏览器。#注意:一定要勾上“允许访问隐私仓库”或至少把你的库选上,不然部署不了。
创建一个Github仓库。叫什么都可以。因为我们是用的是CF Pages,所以设置私密也可以(只要你上一步允许了就行)。**最好不要用这个仓库存其他的东西!也不要设置多个分支!**除非你想在推送的时候把你搞死。
Termux(ROOT)
什么是ROOT:手机ROOT是Android系统用户获取操作系统超级用户权限的技术操作,用人话讲就是获取你手机的最高权限,因此可以进行一些高级操作。该操作具有 风险性,会让你的手机失去保修(如果你还有的话)。
为什么:理论上来说,如果你的手机版本小于安卓11,那么你也可以不用root(但真的有人用么)。因为并且随着 Android 版本的提升,在 Android 11 中限制了对 /sdcard/Android/data 目录的访问,几乎只能通过 root 权限进行访问。
没有ROOT
还有一种方法:SHIZUKU/DHIZUKU来获取/data的权限。前者使用ADB(Android Debug Bridge),后者使用设备拥有者权限(Owner)权限,后者理论上是除了ROOT的最高权限。具体可以看:Shizuku官网,“不能解锁、无法ROOT也能玩机:Shizuku 基础使用攻略:让应用直接使用高级权限” -知乎,Dzhizuku官网,Shizuku的激活有三种:ROOT,电脑有线链接和手机无线调试,在这里推荐无线调试,因为一个手机搞定,也不要ROOT(不然你也不会在这里)。不过,无线调试要求安卓10+且Shizuku每次重启会掉。Dzhizuku则需要Shizuku,权限更高,而且重启大概率不会掉,也可是实现反激活(Dhizuku激活Shizuku)。但软件生态不怎么样。这些文章十分详细,看完大概就会了。配置完成后,往下看。
有ROOT
往下看就可以
- 安装 Git
打开 Termux,依次执行:
1 | # 更新软件源 |
- 配置全局用户名邮箱(必须,否则无法提交)
1 | git config --global user.name "你的GitHub/Gitee用户名" |
安装HEXO
一、前置更新
1 | pkg update && pkg upgrade -y |
二、安装 Node.js(含 npm)
Termux 官方源自带 nodejs:
1 | pkg install nodejs -y |
三、全局安装 Hexo
1 | npm install -g hexo-cli |
四、初始化 Hexo 博客
创建博客文件夹(比如 blog,其实叫什么都可以)
1 | hexo init blog |
但这里注意,在第四步时,你的目录最好创建在Termux的默认目录下(>/data/data/com.termux/files/home)
因为Termux在高版本安卓里对你的SDCard目录有访问限制,会报错。如果你ROOT了,直接挂就行。如果没有,你也可以试试Shizuku,或者祈祷你的手机可以使用(?)
如果你和我一样挂在了默认目录,你可以打开MT管理器,点挂载,点本地,把Termux挂上就可以了。
编写,部署和提交博客
首先,配置Hexo就不多说了。关于编写blog,我的建议是:用管理器内置。因为最方便,权限啥的也更好管理(网上的什么编辑器很大一部分访问不了底层目录)。况且,MD格式也不需要什么编码器(碎碎念)。
部署,你可以像之前一样,git add . git commit git push,但你如果恰巧和我一样懒,你可以试这个(万能的AI):
一、创建脚本文件
- 先建脚本存放目录
1 | mkdir -p ~/scripts |
- 编写 bpush.sh 脚本
1 | nano ~/scripts/bpush.sh |
把下面内容完整粘贴进去(碎碎念:其实这一步用管理器更好,我个人真用不惯nano):
1 |
|
保存退出:Ctrl+O → 回车 → Ctrl+X
3. 给脚本加执行权限
bash
运行
chmod +x ~/scripts/bpush.sh
二、绑定别名到 Termux
- 编辑 .bashrc 配置文件
1 | nano ~/.bashrc |
在文件末尾加上这一行:
1 | alias bpush='bash ~/scripts/bpush.sh' |
保存退出。
2. 让配置立即生效
1 | source ~/.bashrc |
三、使用方法
只本地提交,不推送
1 | bpush |
自动检测文件变化 → 生成静态页 → git 提交,不推送到 GitHub
提交并推送到 GitHub
1 | bpush -p |
其他问题
Node.js版本
Hexo 7.x 官方最低要求:Node.js 18.0.0 及以上
Termux 默认 pkg install nodejs 安装的是最新稳定版,大概率满足,但存在两种坑问题:
旧版 Termux 源 node 16 及以下:直接不兼容 Hexo7,运行会报语法 / API 错误
Node 22 最新版:少数 Hexo 插件存在兼容警告,优先推荐 Node 20 LTS
建议在运行前看看版本。如需稳定直接指定安装 nodejs-lts 锁定 20LTS。
报错“Username for ‘https://github.com’:
Password for ‘https://xxx@github.com’:”
没有配置 Git 推送凭证。有两种可选:SSH,PAT。
PAT 令牌密码登录简单点、SSH 密钥免密推送更长期推荐。具体可以看:https://www.cnblogs.com/tlnshuju/p/19358599
3. 权限问题
- 脚本无执行权限
现象:bash: ./xxx.sh: Permission denied
原因:新建脚本默认没有 x 执行位
解决:chmod +x ~/scripts/bpush.sh - 访问手机共享存储报错(如果你真的想在sdcard目录下创建的话…)
现象:Permission denied 无法读写 ~/storage/
原因:没申请存储权限
修复:
1 | termux-setup-storage |
弹窗点允许,会自动生成 ~/storage 软链接。但不建议,因为我手机上经常失败。
4. Hexo/Node 不能读写目录
报错:EACCES: permission denied
诱因:
把博客项目放在 ~/storage(安卓共享存储不支持 Linux 文件权限模型)
手动复制 Windows 文件进 Termux 携带错误权限
解决:
项目全部移回 ~/ 家目录
批量修复权限:chmod -R 755 ~/blog
5. 缓存目录 npm 权限不足
报错:npm ERR! EACCES mkdir
Termux 的 npm 全局安装无需 sudo,但缓存损坏会锁权限:
1 | rm -rf ~/.npm |
6. 无法修改配置文件
比如 _config.yml、~/.bashrc 只读:
1 | chmod u+w ~/.bashrc ~/blog/_config.yml |
7. 为什么我进入ROOT(su)之后什么指令(如GIT)都用不了?
Termux默认root会清空PATH,用人话说就是不认了。
-直接用绝对路径。比如用adb devices:
1 | /data/data/com.termux/files/usr/bin/adb devices |
- 单次设定PATH。同样是adb:
1 | su -c "PATH=/data/data/com.termux/files/usr/bin:$PATH adb devices" |
- 永久生效
编辑 Termux 配置 ~/.bashrc,末尾添加:
1 | alias su='su -c "export PATH=/data/data/com.termux/files/usr/bin:$PATH; exec sh"' |
重载配置:
1 | source ~/.bashrc |
之后直接输入 su 进入 root即可
8. Shizuku出现问题?
我总结了一些常见问题:
- 卡在「正在搜索配对服务」
原因:厂商后台限制 Shizuku 本地网络、锁屏断后台网络,也就是没电
解决:电池优化设为无限制 / 永不休眠,开启自启动、后台活动,配对时保持屏幕常亮,关闭 VPN、移动数据,只用 2.4G WiFi(其实不用2.4也可以,但是这样跟保险),关闭系统「锁屏后清理后台」「极致省电」 - 输入配对码立刻失败(MIUI/POCO 专属)
原因:MIUI 把窗口拦截了
解决:设置→通知管理→Shizuku→通知显示设置→切换原生通知样式 - 无线配对提示配对超时 / 端口错误
原因:WiFi 跨网段、5G WiFi 不稳定、无线调试过期
解决:
用2.4Ghz,关闭双频合一,开发者选项关闭再重新打开「无线调试」,多刷新几次调试码,手动查看 IP + 端口,手动输入配对,看看你家路由器有没有网,有没有开内网隔离,有没有把你设置为访客 - 电脑 USB ADB 激活模式(数据线)
- 电脑执行 adb 启动脚本提示 Permission denied
解决:你没勾选「始终允许此电脑调试」,可删除已授权主机,重新授权。**安卓 13 + 必须开启:USB 调试(安全设置)**换一条质量好点的数据线、用后置 USB 口,最好别用拓展坞(也可以用前提是你对这东西很信任且你电脑没有其他的了。前置USB口和扩展坞一个道理,只不过插得是主板的usb插针) - adb shell sh /sdcard/xxx/start.sh 提示文件不存在
新版 Shizuku 脚本在Android/data/moe.shizuku.privileged.api/,天杀的系统会限制该目录访问
解决:复制start.sh+starter到普通文件夹(Download)再执行 adb 命令 - adb 命令卡住无输出、光标卡死不动
解决:这是SELinux 强制模式拦截。系统后台杀 Shizuku 进程,提前关闭所有省电策略。重启 adb 服务,电脑执行adb kill-server && adb start-server。 - 电脑启动提示 ADB 权限不足、无法启动服务
解决: 这是厂商限制。MIUI把USB 调试(安全设置)打开;ColorOS是关闭权限监控;Flyme要关闭支付保护OriginOS关闭「ADB 权限管控」
9.为啥推送到Github过了好久都没反应?
到CF面板看一下报错。有时候是你本地的模块没安装,或者是CF node.js版本不对…反正,大概率是CF问题。
结尾+碎碎念
这也是我自己折腾出来的东西,也是我的第一篇长文。加上好久之前了,其实有些也快忘得差不多了(笑)。因为各种问题,前前后后写了快2个月(现在我在写这一段的时候是2026/7/3 15:49,也就是3个月多了???),甚至开头我就是用手机写的。现在快九年级,可能时间越来越少了,已经开始阶段性断网了(悲)。但不管怎么样,好歹是挤完了。以后要是有时间,我也会写点其它的。
