前言
最近给家人换了一台新手机,而旧手机难道就低价回收了吗?作为曾经的一名安卓工程师,这些旧手机对我都有一定的价值。于是我把手机刷机,想看看还能干啥用,突然想到安卓底层是Linux内核呀,应该可以在其上部署一个小型的Linux系统出来当服务器用。于是本人查资料后发现,果然有开源的项目能够做到。这样就可以将Android手机当作一台Linux服务器用,搭建一个J2EE项目了。
下面以我本人的搭建经历,讲解搭建服务器的主要过程,全部自己亲测。
平台
- 手机型号:红米Pro全网通
- CPU架构:ARM(一定要清楚CPU的架构,与安装的Linux发行版和软件包对应)
- 运存内存:3G+32G(运存最好2G以上)
- Linux部署:Linuxdeploy | Ubuntu 18.04 LTS x64
准备工作
一、刷机并Root:
当前有两个开源应用能够实现Linux环境搭建,分别如下:
1、Linuxdeploy:采用chroot容器技术,能够安装各种Linux发行版,运行稳定,如Ubuntu、CentOS等,很完善,但是手机需要Root。
2、Termux:极低的性能损耗,驱动Linux底层内核模拟终端,能够通过apt安装python等软件包,并且不需要Root。但是本身并不完整,一些Linux的重要软件仍然不能安装
3、Aid Learning:类似于Termux,但是更纯净,能安装的软件也更多,自带图形界面和VS Code等软件,但是比较吃性能,我不需要图形界面也不需要杂七杂八的软件。所以我还是打算将手机Root并使用Linuxdeploy。
至于具体手机怎么Root,就不多说了,网上大把的资料,但是要先记得解锁哦。
二、安装Busybox:
Busybox号称安卓的“瑞士军刀”,它对安卓底层缺乏的Linux命令作了补充,就像对底层添加了灵魂,让手机具有真正成为Linux系统的潜质。由于本人使用ROM刷机包集成了Busybox,就直接跳过了这一步,大家就自行查资料安装配置Busybox应用即可,也可以通过刷具有Busybox的第三方的ROM包集成。
步骤
一、安装Linuxdeploy和Linux系统镜像:
视频教程:https://www.bilibili.com/video/BV1oA411b7Fb/?spm_id_from=333.788.videocard.0
这个教程讲的精简,我也是这样做的,但是要提以下几点:
1、操作系统架构一定选对,手机CPU一般都是ARM架构,可以通过安兔兔或网上查询你手机的CPU型号确认。
2、镜像最好用国内的,下载稳定不会中途卡住:http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
镜像安装成功后,开启Ubuntu,打印界面信息如下:
二、安装JDK并配置环境变量:
JDK是J2EE最重要的东西了,不多说,官网直接下对应的CPU架构版本:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
解压到自己指定的系统目录,并配置JDK环境变量
vi /etc/profile
export JAVA_HOME=/home/lzy/env/jdk1.8.0_261 (使用自己的目录)
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
三、安装MySQL服务
由于手机CPU是ARM架构,所以必须使用ARM版本的MySQL,而官网并没有给出资源,可以用apt软件包去下载:
apt-get install mysql-server
apt-get install mysql-client
apt-get install mysql-common
解决Android的网络权限分组问题:
usermod -a -G aid_inet,aid_net_raw mysql
cat /etc/group
启动、重启和关闭MySQL服务
service mysql start # 启动服务
service mysql restart # 重启
service mysql stop # 停止服务
service mysql status # 查看服务运行状态
启动MySQL服务后,开启远程访问,以root用户为例
mysql>use mysql;
mysql>select user, host from user;
mysql>update user set host='%' where user='root' and host='localhost';
mysql>flush privileges;
mysql>exit;
四、安装Maven
作为搭建Maven项目使用,在apache官网上下载Linux版本的Maven:https://maven.apache.org/download.cgi
解压包配置环境变量:
tar -xvzf apache-maven-x.x.xx.tar.gz /home/lzy/env/apache-maven-3.6.3
vi /etc/profile
# 在最后添加
export MAVEN_HOME=/home/lzy/env/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile
# 测试
mvn -v
五、安装Tomcat并启动服务器
安装的话,由于Tomcat 8有免安装包,去到apache tomcat官网上下载Tomcat 8的免安装包,然后解压到指定目录即可。
启动Tomcat服务:
chmod 777 -R tomcat/ (用自己的安装目录)
cd tomcat
cd bin
./startup.sh # 启动Tomcat服务器
tail -f ../logs/catalina.out # 查看实时日志
到此,Linux的服务器搭建完成,在局域网上就可以访问了。若自己有J2EE项目,只需把项目打成war包,并拷贝到webapps文件夹下,重启tomcat服务器即可。
六、内网穿透
内网穿透主要是为了能够让外网访问到自己的处于局域网中的安卓服务器,如果想把自己的Demo给朋友们演示(炫技),让他们通过互联网远程访问到你的网页。就需要使用内网穿透服务来搭建隧道,实质是通过一个隧道服务器作为代理,将内网的主机和外部网络建立长连接。具体搭建的步骤就不细说,网上有很多资料。
常用的内网穿透服务有以下几个:
- Ngrok:老牌内网穿透服务,一键使用,不同类型的隧道收费购买
- Natapp:高效的内网穿透服务,有免费隧道,但是域名不固定会随机更换,适合测试使用
- 花生壳:国内比较有名的服务,解决无公网和NAT转换时,内网IP到外网域名的映射问题
- FRP:免费开源的软件,但是隧道服务器需要有一台固定IP的外网服务器来搭建
- 小米球Ngrok:由一位博主利用闲置Ngrok服务器搭建的内网穿透服务,非常慷慨,项目演示时推荐使用
结束语
工作忙,抽出时间写文章不容易,还请多多给个赞,有问题可以评论交流