[.2.23 更新]:更新 BusyBox,Linux Deploy 软件
之前无意间看到了一篇《在安卓上部署服务器》的文章,正好最近换了新手机,正好最近在学 Python 和 HTML,就想着跟着教程搭一个服务器。
但是原博有些地方写的比较简单,有些有坑的地方没有提及,有些软件更新了版本,跟原博有些出入,于是决定写一篇博客详细记录一下。
step 0:预备工作
需要工具:
一部安卓手机一台能上网的电脑
我的旧手机是 MIUI 的操作系统,但是在安装 Linux Deploy 的时候会重启,因此我将系统刷成了MoKee,lineageos上也有很多 rom 可以刷。
其他手机系统不知道会不会有这个问题,可以先继续,如果安装 Linux Deploy 的时候有问题再刷机也不迟。刷机教程网上太多,就不写了。
由于国内手机自带的 recovery 一般都会验证签名,因此最好将 recovery 刷成 TWRP,这是最常用的用来刷第三方包的 recovery。
TWRP 有三种刷入方法:
官网选择对应设备,下载 img 文件,使用 adb 刷入。前置技术需求:英语、adb,不方便,不推荐。下载官方app,安装。
第一项和第三项勾选上,第二项是使用 root 运行,可以不勾选,但是大多数特性将不可用。
选择“TWRP FLASH”,第二项是备份当前 recovery,有需要的可以自己备份。
前面选择了 root 选项的需要允许授权。
然后需要选择设备,选好对应设备后会让你选择版本,都选好后会自动跳转网页。
下载 img 文件,下载好之后退回到 TWRP app 中。
“Select a file to flash”选择刚才下载的 img 文件,然后点击“FLASH TO RECOVERY”。
刷入成功,缺点是没有中文。在国内手机论坛中下载别人制作好的卡刷包,我用的就是在 MIUI 论坛上下载的,基本上每个手机都会有对应的版本,而且都有汉化版。下载好之后放到存储卡,关机后长按“音量 + 和电源键”进入 recovery,通过原来的 recovery 刷入,MIUI 用户可以将压缩包重命名为 update.zip,在 recovery 中使用通过 updata.zip 更新。
第二种方法最好是已经 root 的设备,方法三不需要进行 root,自行考虑使用哪种方法。
step 1:root
MIUI 系统需要解锁 Fastboot 才能 root。其他手机系统没用过,不清楚。已经 root 过的可以跳过这一步,需要 root 的要使用 supersu。
下载地址:/i1aosbe
关机后长按“音量 + 和电源键”进入 recovery,使用 recovery 刷入,**这里**有一些简单步骤,如果上一步刷 TWRP 使用的卡刷的话,这个也一样,都是卡刷。
这一步可以和上一步刷 TWRP 调换顺序,前提是你原来的 recovery 能够直接刷入 supersu。
刷入完成后重启手机,会出现一个超级授权app,有的话一般都是成功了。
step 2:安装 BusyBox
BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件,主要用于嵌入式系统。
下载地址:
busybox 61 版本:/i1aos8b (需要安卓系统 4.0.3 以上)
busybox 62 版本:/i37zibe
旧版本:/apk/6139/
打开软件后会载入 Smart Install,我没有使用它,版本选择“Busybox 1.28.4(61 版本)”(62 版本为 1.29.2),安装位置选择“/system/xbin”,然后“install”就行。
看到successful就说明安装成功了。
step 3:安装 Linux Deploy
Linux Deploy 是一款可以在 Android 设备上部署 Linux 环境的应用,其原理大概是在 Android 的 Linux 层跑一个 chroot 或者 proot 容器,然后再在容器中运行我们准备好的另外一个 Linux 系统。值得注意的是,这与我们熟知的虚拟机技术不同,新的 Linux 系统将和 Android 系统平行运行,即不影响安卓系统的正常运行。
下载地址:/i37zmpc
其他版本:/meefik/linuxdeploy/releases
安装 app,点击下面这个按钮,对要安装的 Linux 进行配置。
源地址使用了清华大学的镜像地址,比原地址下载速度要快。安装类型的选择可以参考原博,我用的目录。用户名和密码就是你登录 Ubuntu 时需要输入的用户名密码,特权用户可以保持默认。本地化选择“zh_CN.UTF-8”,否则如果后面有中文要显示的话会报错,例如 Python 脚本。SSH 服务器需要启用,设置保持默认。图形界面按需求启用。
设置完成后退回主界面,点击右上角以三个点表示的菜单键,选择“安装”开始 Linux 系统的安装,安装过程中需要一直保持网络连接。
当看到终端输出>>>deploy
时,代表安装已开始。
当看到终端输出<<<deploy
时,代表安装已完成。
如果安装失败(错误见评论)可以试试更换不同版本的 Linux。
安装完成后需要重启,恢复系统的 root。重启之后打开 Linux Deploy,点击启动即可启动系统。
step 4:安装 JuiceSSH
下载地址:/i1aos4h
JuiceSSH 可以用来登录 Linux 系统,并且远程操作该系统。
点击“连接”,转到“认证”页面,新建一个认证。昵称随便填写,用户名和密码是你在 Linux Deploy 上设置的用户名和密码,然后点击右上角的 √。
转到“连接”页面,新建连接,昵称随便填写,可以和认证一样,类型就选 SSH。
地址是 Linux Deploy 应用标题栏中那个,这里是 192.168.1.115,其实就是安卓手机由路由器分配的地址。
这篇教程里 JuiceSSH 和 Linux Deploy 都是装在同一个手机上的,因此地址也可以填写为 127.0.0.1,这表示本地地址。
创建好连接之后,点击刚才创建的连接,连接成功后如下所示:
因为我们是通过普通用户登陆系统的,接下来我们需要设置特权用户(root)的密码并且以特权用户的身份登陆系统,在终端中键入:sudo passwd root
终端将会提示用户输入 root 用户的密码并且再次输入一次以确认(输入密码时密码将不可见,连*都不会显示)。
设置完毕后,在终端键入命令 su 并输入刚刚设置好的 root 用户密码即可切换到 root 用户。
然后就可以通过 JuiceSSH 对手机上的 Linux 进行操作,但是手机上打命令还是不够方便,可以通过在电脑端也安装一个 SSH 客户端来对手机上的系统进行操作,这也是我常用的方法。
step 5:安装 Xshell
下载地址:/zh/free-for-home-school/
输入名称和邮箱就有链接发到邮箱,免费下载。
安装好 Xshell 后,选择文件 -> 新建。
名称可以随意填写,也可以和 JuiceSSH 中一样,协议、端口号都跟 JuiceSSH 中配置的一样,由于电脑和手机 IP 不一样,所以 Xshell 中的主机不能填写 127.0.0.1,要填写 Linux Deploy 应用标题栏中的地址,这里是 192.168.1.115。
填写完成后点击“连接”,依次输入 Linux Deploy 中设置的用户名和密码,即可连接上手机中的系统。在命令行中输入“su”即可切换至 root 用户。
也可以在连接的时候,用户名输入“root”,密码输入之前设置的 root 用户密码,直接以 root 用户登录。
连接成功后可以直接在 Xshell 窗口中输入 Linux 命令对手机中的系统进行操作,相比手机上打命令方便很多。
step 6:文件管理
1. 使用 ES文件浏览器
ES文件浏览器各大应用商店都能下载。
如果通过“目录”方式部署的 Linux 系统,那么可以直接使用ES访问路径/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux来管理系统中的文件。
如果通过“文件”方式部署的 Linux 系统,管理文件等操作就得依靠 SFTP 或者 SSH 了。
2. Xftp 6
Xshell 和 Xftp 是一家的,Xftp 可以远程进行 SFTP、FTP 文件传输,对于要从 PC 端向手机端传输文件来说相当方便。Xftp 的设置和 Xshell 的设置类似,只是协议不同。
连接最好使用 root 用户登录,避免使用普通用户登录而缺少一些修改文件必要的权限。
至此,手机和电脑上需要安装和配置的软件都介绍完毕,接下来需要在手机的 Linux 系统上安装 nginx,来部署服务器。
传送门:教程 | 用安卓手机搭建 web 服务器(二)—— Nginx 安装配置
如果觉得《教程 | 用安卓手机搭建 web 服务器(一)—— 应用安装配置》对你有帮助,请点赞、收藏,并留下你的观点哦!