旧手机闲置?教你用Termux搭建个移动服务器

news2024/11/28 20:49:38

目录

前言

准备工作

实践

安装Termux:

运行Termux:

环境配置:

效果展示

写在最后


前言

最近偶然看到网上有人用KSWEB搭建本地服务器,于是突发奇想也想在手机中搭建一个node环境试试,趁着周末有空,麻溜的试了试。这篇文章将针对我的搭建过程,遇到的问题及解决方案做个记录

我的计划是使用手机搭建一个node环境,通过内网穿透将服务器暴露。然而KSWEB主打PHP+MySQL,暂时不适合我,所以在网上找了几个解决方案:Termux,Linux Deploy,Anbox

最终基于方便和轻量,选择了Termux,说干就干

前情提示:安卓6的机子由于各种兼容问题最终还是没有完成搭建,后续使用的是安卓9的机子

准备工作

  • Termux
  • 安卓手机(最好是安卓7+,并且不使用模拟器),我的一号机是荣耀6-安卓6;二号机是华为荣耀-安卓9
  • vpn
  • 谷歌商店,有最好
  • 电脑:adb

实践

安装Termux:

有无谷歌商店:有的话直接安装,没有的话请往下看

如果是高版本的手机一般不会有安装不上的问题(在安卓模拟器上我出现过无法安装的问题),如果安装不上可以先使用数据线连接电脑,运行下面的指令查询手机CPU架构

adb shell getprop ro.product.cpu.abi

并直接在GitHub下载对应的包安装

 

直接使用adb install 安装包路径+安装包全称进行安装

如果是低版本的系统,像我这用的是安卓6,只能下载历史版本的软件

这里是老版本的地址(需要vpn),没vpn的用这个地址

运行Termux:

运行软件踩坑的开门红是软件的bootstrap安装,软件第一次安装初始化时会请求bootstrap模块(这一步需要挂梯子),低版本安卓6挂梯子仍然出现这个提示

在安卓9的高版本程序中挂梯子顺利请求到并安装成功

 

初步猜测是软件版本过低,拿不到依赖包,使用Fiddler抓包试试

果不其然,请求的地址拿不到源文件,直接报404

我的解决方案是参考之前的文章使用重定向,代理到新的源文件中,这个也需要开vpn

下面是增加的函数

static function ReplaceUrl(oSession, origin_host, replace_host){
    if(oSession.fullUrl.indexOf(origin_host)!=-1){
        MessageBox.Show(oSession.fullUrl)
        oSession.fullUrl = oSession.fullUrl.Replace(origin_host,replace_host);
        
    }
}

var replace_host = 'https://archive.org/download/termux-repositories-legacy/bootstrap-archives-legacy-24.12.2019.tar/bootstrap-archives%2Fbootstrap-arm.zip'

var origin_host = 'https://termux.net/bootstrap/new/bootstrap-arm.zip'

ReplaceUrl(oSession, origin_host, replace_host)

完成下载安装bootstrap模块后,就可以继续下一步操作了

有个注意点,如果无法挂vpn的同学可以找到我的文件中的termux-v0.79-offline-bootstraps.apk离线包直接安装,如果安装后报错的话则还是需要挂梯子安装手机对应架构的bootstrap模块

环境配置:

termux的操作可以参考这篇文章,讲的很详细

前置操作,切换pkg的国内镜像

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

pkg update

Node安装

pkg i node-lts

远程或局域网连接ssh

先在termux上安装nmap和openssh

pkg i nmap openssh -y

设置termux密码

passwd

启动ssh和nmap

sshd
nmap 127.0.0.1

看到这个基本就大功告成,在电脑上用git-bash试试(手机ip可以在手机设置或使用命令ifconfig查看)

 ssh 192.168.0.103 -p 8022

效果展示

部署一个Node项目

const http = require("http");
http
  .createServer((_, res) => {
    res.setHeader("Access-Control-Allow-Origin", "*"); //设置响应头解决跨域
    console.log("get msg");
    res.write("hello world");
    res.end();
  })
  .listen(10243, () => {
    console.log("server start");
  });

写个最简单的node服务部署到服务器中

在局域网中输入http://192.168.0.103:10243/

 

写在最后

至此,一个完整的移动端服务搭建完成

参考这篇文章:没有云服务器?内网穿透了解一下_DieHunter1024的博客-CSDN博客

可以将服务器部署至公网中,有兴趣的同学可以试试

感谢你看到这里,希望这篇文章能帮助你

如果有帮助还请支持一下博主,感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3商店后台管理系统设计文稿篇(五)

记录使用vscode构建Vue3商店后台管理系统,这是第五篇,主要记录Vue3项目路由知识 文章目录一、Vue3路由二、安装Element Plus三、NPM设置淘宝镜像四、Yarn 设置淘宝镜像正文内容: 一、Vue3路由 路由用于设定访问路径, 将路径和组件映射起来&…

【vue系列-06】vue的组件化编程

深入理解vue的组件一,vue组件1,什么是vue组件2,单文件组件和非单文件组件3,非单组件的基本使用4,vue组件命名规范4.1,一个单词组成4.2,多个单词组成5,组件与组件间的嵌套6&#xff0…

Tomcat结构体系

总体结构Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图可以看出 Tomcat 的心脏就是…

opencv的mat openvino的tensor libtorch的tensor

opencv的mat 对于矩阵数据,在opencv里面是通过使用mat这个数据结构来实现的,我觉得这个数据结构本身设计是用来做图片的存储,所以很多的教程都是关于三维矩阵的(其中一个维度是channel),关于三维矩阵的定义…

通讯录小练习:柔性数组和文件操作实现

目录 一.程序功能 二.定义关键类型的头文件与枚举的应用 三.封装柔性数组的增容函数与缩容函数 四.添加联系人功能模块 五 .联系人信息打印模块 六. 查找指定联系人的模块 七.删除指定联系人模块 八.修改指定联系人信息模块 九.排序模块 九.文件操作模块 十.通讯录初…

如何实现外网远程登录访问jupyter notebook?

Jupyter Notebook是一个交互式笔记本,本质是一个 Web 应用程序,支持运行 40 多种编程语言,此前被称为 IPython notebook。Jupyter Notebook 便于创建和共享程序文档、支持实时代码、数学方程、可视化和 markdown,应用场景有数据清…

机器学习基础——k-近邻算法概述和简单实现

本章内容 k-近邻分类算法 从文本文件中解析数据 前言 众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影分类时必须要考虑的问题。没有哪个电影人…

Revit问题:降板表面填充图案和构件上色

一、Revit中如何为降板表面填充不同的图案 在平面图中该如何利用填充图案来区别降板跟楼板? 1、中间的楼板为降板(120)/-150mm,下面我们通过“过滤器”来为其填充表面图案。 2、通过快捷键VV打开“可见性/图形替换”对话框,单击选择“过滤器”一项。 3、…

2023/1 寒假期间自学c++计划安排

寒假一期学习总结 寒假一期学习是在线下进行的,总的来说,非常充实,也很有收获,成体系的学习了 二分,高精度,函数,结构体,STL 等等内容,既开心有学到了知识。 在这7天的集…

最新ios证书申请流程

苹果官方申请ios证书的方法,需要mac电脑,需要使用钥匙串管理先生成csr文件,然后去苹果开发者中心生成证书,然后再用mac电脑导出p12证书。假如我们没有mac电脑,又如何申请证书呢?这个教程我将教会大家如何使…

从汇编的角度了解C++原理——类的储存结构和函数调用

本文用到的反汇编工具是objconv,使用方法可以看我另一篇文章https://blog.csdn.net/weixin_45001971/article/details/128660642。 1、类的储存结构和函数调用 以这段代码为例。 编译后对obj文件反汇编,得到以下汇编代码,配合常量的值来分…

大数据技术架构(组件)——Hive:环境准备2

1.0.1.5、Mysql安装1.0.1.5.1、软件包下载解压缩官网或者直接从百度云盘中下载即可。https://dev.mysql.com/downloads/mysql/1.0.1.5.2、环境变量配置1.0.1.5.2.1、创建系统环境变量MYSQL_HOME1.0.1.5.2.2、将系统环境变量配置到Path上1.0.1.5.2.3、生成Data文件使用系统管理员…

【MySQL进阶教程】MySQL管理

前言 本文为 【MySQL进阶教程】MySQL管理 相关知识,下边将对系统数据库,常用工具(包括:mysql、mysqladmin、mysqlbinlog、mysqlshow、mysqldump、mysqlimport/source)等进行详尽介绍~ 📌博主主页&#xff…

开发微信小程序过程中遇到的问题笔记

时间绑定bindtap的基础用法 <view id"tapTest" data-hi"WeChat" bindtap"tapName"> Click me! </view>这里要注意的是data-xxx中的xxx需要小写&#xff0c;否则获取不到。 使用for循环的时候&#xff0c;这种方法是拿不到数据的。 …

系统分析师案例必备知识点汇总---2023系列文章三

系统设计 1、面向对象设计 分析类图是从用户的角度出发得到的业务“系统”&#xff0c;而设计类图更多的是从系统、软件的角 度来描述和表达系统。二者具体的区别&#xff1a; 分析类图&#xff1a;在需求分析阶段&#xff0c;类图是研究领域中的概念&#xff1b;分析类图主要…

C语言实现密码检查

这道题目并不算难&#xff0c;实现时可能会写出一些bug&#xff0c;需要耐心去调试。有两种方法&#xff0c;首先这些题目要求可以频繁使用字符串的库函数&#xff0c;这里不介绍这些库函数&#xff0c;我的方法是直接比较阿斯克码值的大小进行删选&#xff0c;频繁使用if语句。…

模板的补充

1. 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成…

【ElasticSearch01】ElasticSearch入门

目录1.数据类型2.Elasticsearch是什么3.全文搜索引擎4.Elasticsearch安装5.Restful和JSON6.Postman客户端工具7.倒排索引8.Elasticsearch基本操作8.1 索引操作8.1.1 创建索引8.1.2查询索引1.查询指定索引2.查询所有索引8.1.3删除索引8.2 文档操作8.2.1 创建文档8.2.2 创建文档时…

力扣 2287. 重排字符形成目标字符串

题目 给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排&#xff0c;得到若干新的字符串。 从 s 中取出字符并重新排列&#xff0c;返回可以形成 target 的 最大 副本数。 示例 输入&#xff1a;s “ilovecodingonleetcode”, target “co…

人工智能入门基础概念—教你正确打开人工智能世界的大门

一、机器学习 1.1机器学习概述 机器学习简介 机器学习&#xff0c;通俗地讲就是让机器拥有学习的能力&#xff0c;从而改善系统自身的性能。 这里的“学习”指的是从数据中学习&#xff0c;从数据中产生模型的算法&#xff0c;即学习算法。有了学习算法&#xff0c;只要把经验…