点击查看参考教程

观前提示

本帖讨论的完整功能体系需要配合安卓已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. 为了后续安装快捷。建议替换为清华源,复制以下指令执行:
    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上安装git和nodejs。此处推荐安装nodejs长期支持版本,避免不必要的bug。
    apt install git
    apt install nodejs-lts
  4. 更换npm源为阿里镜像:
    npm config set registry http://registry.npm.taobao.org
  5. 安装Hexo,此处实在是不推荐用户在手机上从头开始配置Hexo,光是敲指令就能被逼疯,建议在电脑上配置好以后直接拉取源码然后npm i恢复。以下是我的做法。

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

    #!/bin/sh
    #本脚本用于群友交流,完全开源,可以随意传阅,不过希望保留出处。
    echo "==========================================="
    echo " 欢迎使用萌新版Hexo控制脚本!"
    echo " 双击打开即可使用"
    echo " 更多内容可以访问我的博客"
    echo " https://akilar.top"
    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.npm.taobao.org # 替换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/Akilarlxh/Hexo-blog-source.git Hexo # 记得替换仓库URL为自己的源码存放仓库
    cd Hexo
    printf "\033[32mINFO \033[0m 正在将npm源替换为阿里云镜像 ...\n"
    npm config set registry https://registry.npm.taobao.org # 替换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 "akilarlxh" # 记得替换用户名为自己的
    git config --global user.email "akilarlxh@gmail.com" # 记得替换邮箱为自己的
    ssh-keygen -t rsa -C akilarlxh@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:
    bash menu.sh
  8. 编辑器推荐使用Quickedit,可以编辑system分区下的文章,支持markdown预览。

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

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

TO DO

Termux安装教程

定制脚本

写作环境软件安装配置