Android + Termux + SSH + Django + Ngrok 个人博客搭建过程

0. 前言

手头上有一部闲置的手机,昨天刷知乎看到有人用安卓机搭了一个私人博客,于是也心痒痒想要玩一下。

网上找了一下教程,发现都需要把手机刷成 linux 系统的,我觉得有点麻烦,然后想起了以前玩过一段时间 Termux。

昨天折腾了一下,发现果然可以用,就把过程记录下来,以后需要时可以查找,也希望能帮到其他人。

1. 设备

首先你需要一部安卓机,需要什么配置我不太清楚,我用的是 小米4,处理器是 骁龙 801,运行内存只有 2G,已经是 4 年前的手机了,所以手机这方面应该不会有多大问题。

手机最好能 Root,不然可能会出一些问题。

然后还要有一台 Linux 的电脑,可以 SSH 连接到手机。

2. 安装 Termux

一般在各大应用商店都能找到,我是在 Apkpure 上面下载的,版本号是 0.65 。

下载完打开后会自动 安装,我在这里遇到的一个问题是用 Wifi 怎么都连接不上,最后用了数据才正常安装好。这个情况因人而异,只是提个醒。

我安装后是这样子:

音量上键 + Q 可以唤出辅助键盘,不然根本没办法使用 Vi,如下图:

3. 安装软件

使用 Termux 安装一些接下来会用到的软件包。

  • 首先需要 获得存储权限

    
    # 在 Termux 中输入以下命令,应该会弹框确认是否授权
    
    termux-setup-storage

    成功拿到存储权限后会在 home目录生成 storage 目录,并且生成若干目录,软连接都指向外置存储卡的相应目录应目录。

  • 改软件源,不然安装软件包可能巨慢甚至连接不上,推荐使用清华的镜像:http://mirrors.tuna.tsinghua.edu.cn/termux

    首先将 vi 设为默认编辑器(一开始你也没有其他的编辑器可以用),然后打开源列表:

    export EDITOR=vi      # 将 vi 设为默认编辑器
    apt edit-sources      # 打开源列表

    我的改完以后是这样的:

    
    #The main termux repository:
    
    
    #deb https://termux.net stable main
    
    deb http://mirrors.tuna.tsinghua.edu.cn/termux stable main

    然后就可以正常安装软件了。先执行:

    pkg update
  • 安装 Python

    pkg install python        # 默认安装 python3
    pkg install python2       # 安装 python2
  • 安装 openssh

    pkg install openssh

4. SSH 配置

Termux 终端中 sshd 服务不支持密码认证,也就是说用户想要通过 ssh 连接上 Android 设备,只能通过密钥认证方式先将设备公钥放置在 Android 设备的 sshd 服务的授权登录列表中,然后通过私钥校验的方式登录。

ssh 具体原理我也不太懂,感兴趣的可以去找一下相关资料。这里就仅提供配置的步骤。

  • 首先在电脑端执行:

    ssh-keygen -t rsa 

    会生成一个 key,保存在 ~/.ssh/ 下,id_rsa 是私钥,id_rsa.pub 是公钥。

  • 然后将生成的 id_rsa.pub 随便用什么方式发送到你的手机,然后保存到 /data/data/com.termux/files/home/.ssh/ 目录下。要进入到这个目录,需要一些文件管理器,比如 RE,MT,应该还需要 Root 权限。

  • Termux 上执行:

    cd /data/data/com.termux/files/home/.ssh/
    cat ./id_rsa.pub >> authorized_keys       # 将公钥内容添加到ssh的授权文件里
  • 设置权限

    在 Termux 运行 whoami 得到用户名,比如我的是 u0_a188

    然后在 home 文件夹执行:

    ls -al

    得到类似如下的结果:

    drwx------    8 u0_a188  u0_a188       4096 Aug 14 09:57 .
    drwx------    4 u0_a188  u0_a188       4096 Aug 13 20:49 ..
    -rw-------    1 u0_a188  u0_a188       1000 Aug 13 23:21 .bash_history
    drwx------    3 u0_a188  u0_a188       4096 Aug 13 21:25 .cache
    -rw-------    1 u0_a188  u0_a188         21 Aug 13 23:04 .python_history
    drwx------    3 u0_a188  u0_a188       4096 Aug 13 22:21 .ssh
    -rw-------    1 u0_a188  u0_a188       8791 Aug 14 09:57 .viminfo
    drwx------    3 u0_a188  u0_a188       4096 Aug 13 23:40 blog
    drwx------    5 u0_a188  u0_a188       4096 Aug 13 23:36 blog_env
    drwx------    3 u0_a188  u0_a188       4096 Aug 13 23:24 hello
    drwx------    2 u0_a188  u0_a188       4096 Aug 13 23:10 storage

    如果你的 .ssh 文件夹的权限不是如上图所示,则执行:

    chmod 700 .ssh                    # 更改权限
    chown u0_a188:u0_a188 .ssh         # 更改用户和组

    然后再以同样的方法检查 authorized_keys 文件的权限。

  • 此时,我们已经配置好了 ssh ,在 termux 中输入 sshd 开启 ssh 服务。

    然后,就可以在电脑上进行连接:

    
    # user_name 是 whoami 得到用户名,ip_address 是你手机的 ip 地址
    
    ssh user_name@ip_address -p 8022
    
    # 比如我的连接命令:
    
    ssh u0_a188@192.168.1.103 -p 8022

    不出意外就能连接上了。

5. 搭建博客

由于本人对 Web 知之甚少,只学过一点 Django 的皮毛,所以博客就采取 Django 搭建。

在这里,使用一个开源项目,是当初我用来学习 Django 的,在这里用来做一个搭建过程的示范。(其实跟在电脑上基本是一模一样的)。

项目地址是:https://github.com/zmrenwu/django-blog-tutorial

配套的教程:追梦人物的 Django 博客教程

以下是运行步骤(直接搬运了项目的 readme):

  1. 克隆项目到本地

    打开命令行,进入到保存项目的文件夹,输入如下命令:

    git clone https://github.com/zmrenwu/django-blog-tutorial.git
  2. 创建并激活虚拟环境

    在命令行进入到保存虚拟环境的文件夹,输入如下命令创建并激活虚拟环境:

    virtualenv blogproject_env
    
    
    # linux
    
    source blogproject_env/bin/activate

    关于如何使用虚拟环境,参阅:搭建开发环境 的 Virtualenv 部分。如果不想使用虚拟环境,可以跳过这一步。

  3. 安装项目依赖

    如果使用了虚拟环境,确保激活并进入了虚拟环境,在命令行进入项目所在的 django-blog-tutorial 文件夹,运行如下命令:

    pip install -r requirements.txt
  4. 迁移数据库

    在上一步所在的位置运行如下命令迁移数据库:

    python manage.py migrate
  5. 创建后台管理员账户

    在上一步所在的位置运行如下命令创建后台管理员账户

    python manage.py createsuperuser

    具体请参阅 在 Django Admin 后台发布文章

  6. 运行开发服务器

    在上一步所在的位置运行如下命令开启开发服务器:

    python manage.py runserver

    在浏览器输入:127.0.0.1:8000

  7. 进入后台发布文章

    在浏览器输入:127.0.0.1:8000/admin

    使用第 5 步创建的后台管理员账户登录

    具体请参阅 在 Django Admin 后台发布文章

由于这一步骤与在电脑上是一模一样的,涉及的知识我也不太了解,就不赘述,感兴趣的可以自己去找其他博客模板,或者自己写一个,这里只是做一个示范。我在自己手机上亲测是可以正常运行上述的项目的。

6. Ngork 内网穿透

如果你成功的在手机上运行了博客,那你一定想在任何情况下都能访问到博客。因为手机没有公网 IP,所以以上步骤搭建的博客只能在局域网访问,这时候我们就需要内网穿透了。

我选用的是 Ngork 来进行内网穿透,首先在 Ngork 注册一个账号。

  • 我选择的是免费的隧道。

  • 然后填写一些信息。

  • 然后确认添加,选择隧道管理

  • 点击客户端下载

  • 下载 Python版本

  • 将下载的压缩包解压到手机,里面有一个文件叫做 sunny.py ,用 Termux 进入到所在目录,运行如下命令:

至此,你的博客已经可以用以上域名直接访问了。如果你有自己的域名,也可以采用自定义域名,具体参考:SunnyNgrok自定义域名使用方法,我就不再罗嗦了。

7. 小结

虽然搭建的博客确实可用,但是性能堪忧,因为我是直接使用 Django 的自带服务器,这玩意儿毕竟只能用来调试,没办法用在生产环境中,所以之后找个其他的办法将博客部署到手机上(其实上面的博客教程里就有,但是我懒)。

用了一晚上把上面的东西搞好,然后就美滋滋的跑去和女朋友炫耀,得了几句夸奖。今天花了一早上写了这个博客,真是暑假里充实的一天啊!

参考资料:

神器Termux的使用日常

关于安卓手机的牛逼软件termux使用

在安卓上部署服务器 - 解决内网穿透

电脑通过ssh连接android手机上的termux

你可能感兴趣的:(一些经验)