首页 > 编程学习 > 使用Termux在安卓手机上运行tomcat服务器

使用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地址直接访问手机,亦可以研究一下~

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000