点击查看参考教程

观前提示

本帖讨论的完整功能体系需要配合安卓已ROOT手机。考虑到受众群体和涉及的些许技术能力,不推荐纯小白使用(大概是本站少有的非萌新向教程了)。而且鉴于本帖的适用性实在谈不上高,我只会发一下整体思路和分享好用的安卓APP。

其他系统或者不想root的读者可以移步冰老师写的

通过将文章储存在云端,借助云函数触发github action自动部署文章。该方案不受客户端限制,可以在MAC、Win、Linux、Android、ios等任何能够打开浏览器的系统上使用。

关于配合Termux在本地写作和使用语雀在云端写作,两种方案并无冲突,所以请不要在本帖评论区乃至任何地方发起无意义的争吵。这种时候,满足条件的用户就该大声说出——我!全!都!要!

简介

Termux是一款能够在安卓手机上部署linux环境的软件,集成了Python、 PHP、 Ruby、 Nodejs、 MySQL等多种开发环境。理论上甚至可以将其搭建成虚拟主机作为站点的服务器。

本帖涉及的软件(Magisk,Termux,mixplore,Quickedit,X浏览器)均能在@酷安上搜到。所以就不专门发apk安装包了。

具体流程

  1. 首先,需要一台ROOT的安卓手机,然后安装Termux,在安装完成后需要一点特殊网络环境来完成初始化。有条件的还可以通过切换流量运营商来博一下运气。
  2. 为了后续安装快捷。建议替换为清华源,复制以下指令执行:
    1
    2
    3
    4
    5
    6
    7
    sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list

    sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list

    sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list

    pkg update
  3. 换源成功后,在Termux上安装openssh,git和nodejs。此处推荐安装nodejs长期支持版本,避免不必要的bug。

    1
    2
    3
    pkg install openssh
    pkg install git
    pkg install nodejs-lts
  4. 更换npm源为阿里镜像:

    1
    npm config set registry https://registry.npmmirror.com
  5. 安装Hexo,此处实在是不推荐用户在手机上从头开始配置Hexo,光是敲指令就能被逼疯,建议在电脑上配置好以后直接拉取源码然后npm i恢复。以下是我的做法。

  6. 可以使用mixploremt管理器等任何能够访问到system分区的文件管理器,直接搜到/data/data/com.termux/files/home/,然后在home目录下新建一个简易脚本(此处分享我写的脚本,最好还是按照脚本内的注释在电脑上配置好各类路径再复制过去):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    #!/bin/sh
    #本脚本用于群友交流,完全开源,可以随意传阅,不过希望保留出处。
    echo "==========================================="
    echo " 欢迎使用萌新版Hexo控制脚本!"
    echo " 双击打开即可使用"
    echo " 更多内容可以访问我的博客"
    echo " https://"
    echo "==========================================="
    HexoPath=$(cd "$(dirname "$0")"; pwd)
    cd ${HexoPath}
    printf "\033[32m Blog 根目录:"${HexoPath}"\033[0m"
    echo " "
    echo "[0] 退出菜单"
    echo "=============以下功能需要在空文件夹内使用================"
    echo "[1] 初始化安装Hexo(仅在第一次安装时使用)"
    echo "[2] 从云端恢复Hexo(需要在脚本中配置仓库URL)"
    echo "=============以下功能需要在Hexo文件夹内使用================"
    echo "[3] 开启本地预览"
    echo "[4] 重新编译后开启本地预览(修改过_config.yml需使用这个才能看到变化)"
    echo "[5] 部署页面到博客网站"
    echo "[6] 从Github拉取最新版本(需要在脚本中配置仓库URL)"
    echo "[7] 提交本地修改到GitHub"
    echo "[8] 升级Hexo及插件(慎用)"
    echo "[9] 安装butterfly主题"
    echo "[10] 安装volantis主题"
    echo "[11] 安装Hexo-Admin(用于管理或撰写Hexo博文,适合初学者使用)"
    echo "=============以下功能为全局指令================"
    echo "[12] 安装ssh密钥"
    echo "[13] 验证ssh密钥"
    echo " "
    printf "请选择需要的功能,默认选择[3] 开启本地预览"
    echo " "
    printf "选择:"
    read answer

    if [ "$answer" = "1" ]; then
    printf "\033[32mINFO \033[0m 正在为您创建Hexo文件夹 ...\n"
    mkdir Hexo
    cd Hexo
    printf "\033[32mINFO \033[0m 正在将npm源替换为阿里云镜像 ...\n"
    npm config set registry https://registry.npmmirror.com # 替换NPM源为阿里镜像
    printf "\033[32mINFO \033[0m 正在为您全局安装Hexo命令集...\n"
    npm install -g hexo-cli
    printf "\033[32mINFO \033[0m 即将为您开始Hexo初始化安装...\n"
    hexo init
    printf "\033[32mINFO \033[0m 正在为您安装必要依赖...\n"
    npm install --save
    npm install hexo-deployer-git --save
    printf "\033[32mINFO \033[0m 请查看您当前的Hexo版本...\n"
    hexo version
    printf "\033[32mINFO \033[0m 安装完成,您可以开始您的Hexo之旅了!\n"
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    exit 0
    else
    if [ "$answer" = "2" ]; then
    printf "\033[32mINFO \033[0m 正在从Github拉取博客源码 ...\n"
    git clone https://github.com/测试lxh/Hexo-blog-source.git Hexo # 记得替换仓库URL为自己的源码存放仓库
    cd Hexo
    printf "\033[32mINFO \033[0m 正在将npm源替换为阿里云镜像 ...\n"
    npm config set registry https://registry.npmmirror.com # 替换NPM源为阿里镜像
    printf "\033[32mINFO \033[0m Hexo恢复中...\n"
    npm install -g hexo-cli
    # npm install gulp-cli -g #全局安装gulp,未配置不用开启
    npm install --save
    printf "\033[32mINFO \033[0m 恢复完成,您可以开始您的Hexo之旅了!\n"
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    printf "\033[32mINFO \033[0m 请将本脚本文件放入Hexo文件夹以继续使用其他功能!\n"
    sleep 5s
    exit 0
    else
    if [ "$answer" = "3" ] || [ "$answer" = "" ]; then
    printf "\033[32mINFO \033[0m 正在启动本地预览,可以按Ctrl+C退出\n"
    hexo s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "4" ]; then
    printf "\033[32mINFO \033[0m 正在清理本地缓存...\n"
    hexo clean
    # printf "\033[32mINFO \033[0m 正在更新番剧列表...\n"
    # hexo bangumi -u #bilibili追番插件,未配置无需开启
    printf "\033[32mINFO \033[0m 正在重新编译静态页面...\n"
    hexo generate
    # printf "\033[32mINFO \033[0m 正在压缩静态资源...\n"
    # gulp #gulp插件,未配置无需开启
    printf "\033[32mINFO \033[0m 正在开启本地预览,可以按Ctrl+C退出\n"
    hexo server
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "5" ]; then
    printf "\033[32mINFO \033[0m 正在清理本地缓存...\n"
    hexo clean
    # printf "\033[32mINFO \033[0m 正在更新番剧列表...\n"
    # hexo bangumi -u #bilibili追番插件,未配置无需开启
    printf "\033[32mINFO \033[0m 正在重新编译静态页面...\n"
    hexo generate
    # printf "\033[32mINFO \033[0m 正在压缩静态资源...\n"
    # gulp #gulp插件,未配置无需开启
    printf "\033[32mINFO \033[0m 正在准备将最新修改部署至Hexo...\n"
    hexo deploy
    printf "\033[32mINFO \033[0m 部署完成,您的网站已经是最新版本!\n"
    sleep 1s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "6" ]; then
    printf "\033[32mINFO \033[0m 正在从Github拉取最新版本...\n"
    git pull origin master #2020年10月后github新建仓库默认分支改为main,注意更改
    printf "\033[32mINFO \033[0m 拉取完毕,您的博客已是最新版本!\n"
    sleep 1s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "7" ]; then
    printf "\033[32mINFO \033[0m 正在提交最新修改到GitHub...\n"
    git add .
    git commit -m "Update posts content"
    git push origin master #2020年10月后github新建仓库默认分支改为main,注意更改
    printf "\033[32mINFO \033[0m 提交完毕,您的修改已上传至Github!\n"
    sleep 1s
    exec ${HexoPath}/menu.sh



    else
    if [ "$answer" = "8" ]; then
    printf "\033[32mINFO \033[0m 请先确认当前版本 ...\n"
    hexo version
    sleep 3s
    printf "\033[32mINFO \033[0m 即将为您全局升级hexo-cli...\n"
    npm install hexo-cli -g
    printf "\033[32mINFO \033[0m hexo-cli升级完成,请查看当前版本。\n"
    hexo version
    sleep 3s
    printf "\033[32mINFO \033[0m 即将为您升级npm-check...\n"
    npm install -g npm-check
    printf "\033[32mINFO \033[0m npm-check升级完成!\n"
    printf "\033[32mINFO \033[0m 正在使用npm-check检查系统是否有可升级插件...\n"
    npm-check
    sleep 3s
    printf "\033[32mINFO \033[0m 即将为您升级npm-upgrade...\n"
    npm install -g npm-upgrade
    printf "\033[32mINFO \033[0m 正在使用npm-upgrade升级插件...\n"
    printf "\033[32mINFO \033[0m 您可以在接下来的过程中主动选择是否升级插件\n"
    npm-upgrade
    sleep 1s
    printf "\033[32mINFO \033[0m 正在为您保存升级结果...\n"
    npm update -g
    npm update --save
    printf "\033[32mINFO \033[0m 恭喜您,您的Hexo已经是最新版本\n"
    sleep 2s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "9" ]; then
    printf "\033[32mINFO \033[0m 正在为您下载最新稳定版butterfly主题 ...\n"
    git clone -b master https://gitee.com/iamjerryw/hexo-theme-butterfly.git themes/butterfly
    printf "\033[32mINFO \033[0m 正在为您安装必要依赖!\n"
    npm install hexo-renderer-pug hexo-renderer-stylus --save
    printf "\033[32mINFO \033[0m 安装完成,感谢您对butterfly的支持!\n"
    sleep 1s
    printf "\033[32mINFO \033[0m 请在/Hexo/_config.yml中将theme修改为butterfly以激活主题!\n"
    sleep 3s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "10" ]; then
    printf "\033[32mINFO \033[0m 正在为您下载最新稳定版volantis主题 ...\n"
    git clone https://github.com/volantis-x/hexo-theme-volantis themes/volantis
    printf "\033[32mINFO \033[0m 正在安装本地搜索必要依赖!\n"
    npm install hexo-generator-search --save
    npm install hexo-generator-json-content --save
    printf "\033[32mINFO \033[0m 正在安装页面渲染必要依赖!\n"
    npm install hexo-renderer-stylus --save
    printf "\033[32mINFO \033[0m 安装完成,感谢您对volantis的支持!\n"
    sleep 1s
    printf "\033[32mINFO \033[0m 请在/Hexo/_config.yml中将theme修改为volantis以激活主题!\n"
    sleep 3s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "11" ]; then
    printf "\033[32mINFO \033[0m 正在为您下载Hexo-Admin插件 ...\n"
    npm install hexo-admin --save
    printf "\033[32mINFO \033[0m 安装完成,即将为您启动本地预览!\n"
    printf "\033[32mINFO \033[0m 请访问 http://localhost:4000/admin/ 进行博文编辑!\n"
    sleep 2s
    hexo server
    sleep 1s
    exec ${HexoPath}/menu.sh

    else
    if [ "$answer" = "12" ]; then
    printf "\033[32mINFO \033[0m 正在重新设置github global config...\n"
    git config --global user.name "测试lxh" # 记得替换用户名为自己的
    git config --global user.email "测试lxh@gmail.com" # 记得替换邮箱为自己的
    ssh-keygen -t rsa -C 测试lxh@gmail.com # 记得替换邮箱为自己的
    printf "\033[32mINFO \033[0m 即将打开sshkey,复制后可按 Ctrl+D 返回...\n"
    sleep 2s
    less ~/.ssh/id_rsa.pub
    printf "\033[32mINFO \033[0m 配置完成,请将sshkey添加到Github!\n"
    sleep 1s
    exec ${HexoPath}/menu.sh
    else
    if [ "$answer" = "13" ]; then
    printf "\033[32mINFO \033[0m 正在验证SSHkey是否配置成功 ...\n"
    ssh -T git@github.com
    printf "\033[32mINFO \033[0m 验证完毕,您的SSHkey已成功绑定至Github!\n"
    sleep 1s
    exec ${HexoPath}/menu.sh

    else
    if [ "$answer" = "0" ]; then
    printf "\033[32mINFO \033[0m 欢迎下次光临!\n"
    sleep 1s
    exit 0
    else
    printf "\033[31mERROR \033[0m 输入错误,请返回重新选择...\n"
    sleep 1s
    exec ${HexoPath}/menu.sh
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi

  7. 脚本新建完成后,回到Termux终端,使用指令运行脚本打开菜单页面,按照菜单指示进行配置sshkey和重装hexo:

    1
    bash menu.sh
  8. 编辑器推荐使用Quickedit,可以编辑system分区下的文章,支持markdown预览。

  9. 浏览器推荐使用X浏览器,除了体量小的优点外,还支持按照油猴脚本,以及打开控制台。

  10. 觉得本帖操作难度有点大的请移步冰老师写的

TO DO

Termux安装教程

定制脚本

写作环境软件安装配置