在手机上运行Hexo博客

#网站

前言

这段时间,我发现Hexo博客还是依赖在电脑进行编辑、生成和发布。于是寻思着能否在手机上也能够使用Hexo生成博客,这样在外也可以使用手机来发布博客。

思路

核心思路是在手机上模拟一个 Linux 环境,然后在其上安装运行 Hexo 所需的 Node.js 和 Git。

实操

第一步:安装 Termux

这一步非常简单,直接通过Google Play商店安装Termux即可,非常简单。如果没有Google Play商店的话,可以去手机应用商店找找,实在不行就去酷安下载吧。

第二步:在 Termux中安装Node.js、Hexo 和 Git

对Termux进行配置

在安装之前,我们需要对Termux进行配置,使其能够访问手机存储。

使用命令termux-setup-storage,这个命令会向 Android 系统请求存储权限,并在你的 Termux 主目录($HOME)下创建一个 storage 文件夹,里面包含指向手机各个公共目录的符号链接。运行后手机会弹出授权窗口,点击“允许”即可。

安装Node.js、Hexo

在 Termux 中执行 pkg install nodejs 来安装 Node.js。使用 npm install hexo-cli -g 全局安装 Hexo 命令行工具。

到这一步以后,就可以将自己电脑上的Hexo博客复制道手机存储当中,然后使用hexo运行了。

安装Git

在 Termux 中执行 pkg install git ,安装后可以运行 git --version 验证。

第三步:配置 SSH 密钥认证

先设置好Git:

1
2
3
cd ~
git config --global user.name "GitHub用户名"
git config --global user.email "你的GitHub邮箱"

生成密钥:在 Termux 中运行 ssh-keygen -t rsa -C "你的邮箱",一路回车即可。

查看公钥:运行 cat ~/.ssh/id_rsa.pub,复制输出的全部内容。

添加到 GitHub:在 GitHub 的 Settings → SSH and GPG keys 中,点击 “New SSH key”,把刚才复制的内容粘贴进去。

配置 Hexo 使用 SSH 地址:在你的 _config.yml 中,把 deploy.repo 的地址从 HTTPS 格式(https://github.com/...)改为 SSH 格式(git@github.com:用户名/仓库名.git)。

验证连接,在 Termux 中运行:ssh -T git@github.com这样配置后,hexo d 推送时就不会再询问密码了。

如果Git发布报错,参考以下解决方案

1
2
3
4
5
fatal: detected dubious ownership in repository at 'xxx'
To add an exception for this directory, call:

git config --global --add safe.directory xxx
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html

Git 从 2.35.2 版本开始,会检查仓库目录的“所有者”是否和当前运行 Git 的用户一致。如果发现不一致,就会为了安全拒绝操作,并提示你添加信任目录。Android 的 /storage/emulated/0/ 等存储目录,其底层的所有者被系统固定为 media_rw 用户组,并非你的 Termux 用户。因此,Git 会认为这个仓库“来源不明”,从而报错。

一劳永逸的解决办法:可以全局关闭这项检查。在 Termux 中执行:git config --global --add safe.directory '*',这会让 Git 信任所有目录。考虑到 Android 本质上是个单用户系统,这样做是安全且方便的。

第四步:运行、发布

到此,就可以使用我们的Hexo博客,就如同在电脑上一样:

1
2
3
hexo clean
hexo s
hexo deploy