经常会有电脑不在身边但想写点什么打发时间的场景,但是因为富文本内容和扩展语法没法看到自己写了些什么、看上去怎么样…
在某天发现Obsidian是跨平台的之后,我突然悟了!为什么不能在手机上部署一个一模一样的环境呢?说干就干!
准备工作
安装Termux
Hugo作为一个headless cli是需要Linux环境运行的,Termux正好提供这样一个环境。如果你还没有安装的话可以尝试ZeroTermux,可以省去一些配置上的麻烦。
安装Obsidian
这里主要是需要一个能方便编辑markdown的编辑器,如果你有其他喜欢的大概也是可以用的。
配置Obsidian
打开Obsidian,新建一个仓库,仓库位置选择Device storage,在Document下新建一个文件夹,随后点击使用此文件夹。
为Termux提供储存权限
打开Termux,安装完bootstrap后输入
| |
不出意外的话会有一个提示框,点击允许即可。尝试输入cd /sdcard/Documents,如果没有Permission denied的提示就完成啦。
将文档目录链接到home下
这一步是为了方便自己的,毕竟谁也不想每次打开都cd一次吧(笑)我们可以把博客目录链接到home,这样每次打开Termux都可以直接启动部署。
| |
然后ls一下,看看有没有新的文件夹出现吧。
安装Hugo
因为Termux的软件源里本来就有hugo,所以这一步十分简单:
| |
需要注意的是,如果你使用了官方版本的Termux可能会出现在某些网络环境下载不下来的情况,可以自行搜索Termux更换镜像源
后继续操作。
安装Git并克隆项目
| |
如果你忘记clone到刚刚链接的目录,就mv过去吧
启动Hugo服务
| |
这里解释一下最后一个参数,hugo为了防止server和build同时进行或类似的竞态情况默认是有lock机制的。翻看源码发现使用的库是lockedfile,底层为syscall.Flock。这在大部分情况下都工作得很好,然而/sdcard下使用的是FUSE文件系统,不支持flock操作。
让Termux能够后台运行
现在,你已经可以回到Obsidian中编辑博客,随后在浏览器中预览了!但是如果你把Termux放到后台再打开localhost:1313,大概率会因为后台被冻结而失败。可以尝试以下方法:
- 进入设置,找到耗电管理,把Termux的电池计划改为无限制/完全允许后台行为
- 进入后台划卡页面,下拉Termux锁定
- 进入权限管理,给Termux自启动权限
- 在Termux中输入
termux-wake-lock,然后给予后台留存的特殊权限
如果你不知道以上具体的操作,可以参考这里。
