使用Termux在安卓手机上安装运行tomcat服务器
- 简单背景
- 探索尝试
- 尝试一:使用limbo虚拟机(失败)
- 想念二:使用Linux Deploy安装(直接放弃)
- 尝试三:使用Aid Learning(成功但搁置)
- 尝试四:使用Termux直接运行(失败)
- 尝试五:安装Termux+CentOS(成功)
- 开始
- 软硬件工具准备
- 准备Linux
- 1、更新软件源
- 2、安装openssh-server
- 3、安装CentOS
- 4、挂载手机储存(可选)
- 安装jdk1.8
- 1、下载arm64版本的jdk
- 2、上传、解压文件
- 3、设置环境变量
- 安装tomcat并启动
- 1、下载tomcat 9
- 2、上传,解压
- 3、启动tomcat
- 4、访问
- 题外:公网访问的探讨
简单背景
最近在学习web开发,想着买个域名加主机来耍耍,但又想到自己的手机卡有个保底消费,流量经常用不完,反正是练手,何不把网站搭到手机上耍呢?自己的手机是荣耀20S,麒麟810,6+128配置,搭个网站服务器,完全没问题才是。经过这两天折腾,查了不少教程,走了不少弯路,总算是搞定了,在此记录下折腾的经过,包括走了一些弯路掉过的坑,一些替代可行的替代方案等,心急的小伙伴可以从标题目录直接跳到【开始】部分。
探索尝试
目前安卓手机上可以直接运行的web服务器有KSWEB等,但好像不支持Java写的后台,无法运行jsp等(目前没找到实现办法),也没有找到的安卓版的tomcat和类似软件,于是想到在安卓系统上安装Linux运行环境或虚拟机,在其之上使用tomcat服务器。
尝试一:使用limbo虚拟机(失败)
想到VMware在电脑上是那么方便,而且可以跟真机隔离开来,互不影响,就想到在手机上应该也可以使用虚拟机安装Linux系统。首先找到的是limbo虚拟机软件,直接把在电脑上在VMware中安装好的CentOS7磁盘镜像拿来用了,官方镜像安装,里面的jdk,tomcat,ngix,zookeeper都已经配置好了,镜像大小3G。手机设置了1G内存,可以正常运行,但启动、相应速度很慢,而且没办法获取虚拟机的ip,也就访问不了文件和网站。折腾好一阵,弃之。
想念二:使用Linux Deploy安装(直接放弃)
网上有很多使用Linux Deploy在手机上安装Linux的教程,然而需要有一部root过的手机才行,我的华为手机自从官方不开放bl锁之后,没办法直接刷机了,上一部老手机折腾了好久都没成功,这部就不折腾刷机了,弃之。
尝试三:使用Aid Learning(成功但搁置)
关于Aid Learning大家可以搜索然后去官网查看详情,也可以直接在各大手机自带的应用商店下载(版本可能没有官网新,会少一些功能),里面集成了一些开发工具比如vscode,python学习,案例等以及Linux环境(Debian),有一个像macOS一样的图形界面,可以通过浏览器输入ip地址直接进行远程桌面连接和文件管理,可以说是相当强大和美观。第一次使用会让下载依赖包,lite包1.5G左右,Linux命令不全,后来下了full包6G左右,功能就比较全面了,把jdk和tomcat直接通过浏览器访问自带的文件管理器上传上去就可以用了。这个软件的8000端口用于远程桌面,8080用于文件管理,还有8910用于密钥上传。访问远程桌面、文件管理是没有登录授权的,整个Linux都被暴露出来,如果手机开放了文件权限给软件,还可以直接通过浏览器地址访问手机上的文件,尽管很方便并不安全,暂时没找到修改或关闭端口的方法,可能需要配置node.js。软件定位AI学习一类的,空间占用6.5G,大部分功能我是用不到的,暂不折腾了。
尝试四:使用Termux直接运行(失败)
最后想到用Termux,其本身已有Linux环境,想着直接安装jdk和tomcat,但最终以失败告终,果然这只是看着像Linux~
尝试五:安装Termux+CentOS(成功)
最后尝试在Termux下安装CentOS,再安装jdk和tomcat,最终运行成功。经过前面一番折腾,这一过程就显得比较简单了,最终安装好的apk软件+Linux+jdk+tomcat仅700M不到,没有图形界面,没有自带很多工具,很纯粹。
开始
软硬件工具准备
安卓手机(本人荣耀20S,安卓10)一部,可以无root权限,剩余存储空间1G以上;
安装Termux(网上搜索随便下载一个不要太老的就好)
电脑一台,Windows 10系统为例,
安装XShell(可以方便在电脑上敲命令),XFtp(用于与Linux文件传输),网上均能找到绿色版本,如果你觉得在手机上也方便操作,可以不准备(这样文件名和目录要手打了~~理论上可不需要电脑)
手机联网(需要下载将近1G内容),将手机和电脑置于同一网段(可连接同一路由器下的WiFi,或者使用手机开热点给电脑用,或者使用电脑开热点给手机用,没有使用电脑的就忽略吧)
准备Linux
本次操作主要参考:Termux在Andriod安装centos一文,感谢作者大大。
首先打开安装好的Termux,
1、更新软件源
使用命令替换为清华源镜像
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
可以一次性复制过去,回车。我这里图片是电脑操作的,当然在手机上也可以操作。
输入更新命令,回车
apt update
2、安装openssh-server
SSH用于在电脑上操作Linux系统。如果你不需要使用电脑进行文件管理和敲命令,可以先跳过这一步
输入命令,回车
pkg install openssh
设置ssh连接密码,输入以下命令回车,会提示输入新密码,密码输入是看不见的,直接输入完回车按提示再输入一次再回车即可
$passwd
查看手机本地IP。如果手机连接了WiFi,直接拉下通知栏,长按WiFi图标,查看所连WiFi详情也可以看到IP地址。我通过命令查出来3个IP地址,我们要第三个192.168开头的。第一个只能在本机手机上使用,第二个是运营商分配的目前不知道怎么用,第三个可以给同一个路由器的的其他设备访问使用,本机也可以用。
ifconfig
查看用户名,敲入命令回车
whoami
启动SSH连接,手机输入sshd命令然后回车
sshd
注意:
之后需要在手机应用管理或电池管理中设置Termux的电源策略(华为手机在设置-应用-启动中设置:允许后台启动、允许关联启动、自动启动等),
并在“正在运行的任务”列表中锁住软件(下拉),避免软件切换到后台或点击内存清理的时候被关闭,否则你就需要把termux一直显示在手机最前端并且不能关掉屏幕,不然电脑可能会突然连不上手机。
电脑端使用XSehll和XFTP连接手机,输入IP,端口号是8022,再输入账号和密码,以下是xshell设置方法,从左上角 文件-新建,打开如下窗口进行设置,xshell和xftp方法类似,输完后确定,连接即可。
XShell
XFTP
3、安装CentOS
配置proot,用以模拟sudo权限
pkg install proot
再敲入命令
termux-chroot
安装wget,用以下载文件
pkg install wget
安装CentOS,复制命令粘贴,回车,等待片刻
mkdir CentOS && cd CentOS && pkg install wget openssl-tool proot -y && hash -r && wget https://raw.fastgit.org/EXALAB/AnLinux-Resources/master/Scripts/Installer/CentOS/centos.sh && sed -i 's/githubusercontent.com/fastgit.org/' centos.sh && bash centos.sh && rm centos.sh
最终会在 /data/data/com.termux/files/home 目录生成CentOS文件夹
依次输入
cd CentOS
回车进入这个文件夹,再输入ls,获取列表
启动CentOS
./start-centos.sh
CentOS目录,与在真机,vm虚拟机中的一致
4、挂载手机储存(可选)
如果你需要实现Linux与手机储存的文件共享,比如没有在第2步中配置SSH在电脑中操作,需要下载jdk和tomcat到手机上的,需要先挂载SD卡。这个命令要在手机上输入,回车后手机上会有提示,我们需要及时点确定。
termux-setup-storage
命令执行后,会在home(非centos中的home)文件夹下生成一个storage文件夹,底下shared里的内容就是手机储存里的文件。如果后续不想共享文件了,删除storage文件夹,在手机中禁用termux的文件访问权限即可
安装jdk1.8
1、下载arm64版本的jdk
到Oracle官网下载arm版本的jdk1.8,适用版本下错,将无法正常使用
2、上传、解压文件
使用xftp将下载好的压缩包上传到手机centos系统中/root/文件夹下(要放哪个目录根据自己需要来),操作方法与在Linux中安装jdk方法一样。如果是在手机上操作,则需要下载到手机后,挂载sd卡,使用Linux命令将压缩包复制到Linux的目录中。
通过第3步进入到centos命令后(光标前显示root@localhost),进入root文件夹,执行解压命令,解压至当前文件夹
cd ~
tar -xvf jdk-8u281-linux-aarch64.tar.gz -C /root/
这里放一个解压好的图
3、设置环境变量
在xftp中找到 /data/data/com.termux/files/home/CentOS/centos-fs/etc下的profile文件,右键用记事本打开,再末尾添加以下内容,其中的路径如果上一步你们不是和我的一样在/root目录,则按实际的来:
JAVA_HOME=/root/jdk1.8.0_281
PATH=/root/jdk1.8.0_281/bin:$PATH
export JAVA_HOME PATH
然后保存并关闭记事本即可。
如果没有使用电脑,可以先使用exit退出centos,再通过termux自带的vim命令进行文件编辑,这时需要完整的路径
/data/data/com.termux/files/home/CentOS/centos-fs/etc/profile
然后按i进行文本编辑,按esc退出编辑,输入:wq退出并保存。环境配置正确,输入java命令回车会出现很多信息,否则提示找不到命令,即配置失败
安装tomcat并启动
1、下载tomcat 9
2、上传,解压
与jdk上传与解压方式一致,可将之解压至/root中
3、启动tomcat
进入tomcat安装目录的bin文件夹中,注意
cd /root/tomcat/bin 中的 tomcat 文件夹,默认解压出来的应该是 apache-tomcat-9.0.44. 文件夹,上面的图中可以看到我这里为了以后方便记忆便改成了 tomcat,你们按实际的来即可。然后执行./startup.sh命令:
cd /root/tomcat/bin
./startup.sh
出现stared字样则启动成功。
4、访问
tomcat默认端口为8080,centos中已经为我们打开了,可以直接通过ip+:8080访问,在手机可以直接通过本机浏览器访问http://127.0.0.1:8080
出现了下图中的猫,证明tomcat配置成功了!我们可以把开发好的JavaWebApp的war上传到tomcat目录中的webapps中,即可通过浏览器访问了。
题外:公网访问的探讨
使用花生壳、nat123一类的软件做好端口映射,在Linux中安装好服务,即可实现公网访问,尽情地挥霍流量了。现在的手机也已经普及IPv6地址了,如何通过公网ipv6地址直接访问手机,亦可以研究一下~