手机服务器艰辛之路(一)~手机服务器环境部署_华为手机部署服务器-程序员宅基地

技术标签: Linux  运维  linux  服务器  

手机服务器艰辛之路(一)~手机服务器环境部署


前言

随着博主使用服务器的依赖性越来越高,之前一直是99元白嫖阿里云服务器,但是每年都会遇到相同的一个问题“是否还需要续费?”。
答案当然是不可能续费的,因为续费需要支付小百元大钞。主要是没有这么高的需求,本来就是个人爱好,搭建的一些网站,没有什么服务必须要运行的。那就面临着一个问题“服务器上的代码是否还需要备份到本地?”
想想都是之前自己的心血呀,还是上服务器捡一捡。大部分东西都记不清了,存下来有的时候就不太想再部署了,因为太麻烦了,需要安装各种环境,依赖包,随着还会有一些千奇百怪的报错等着你。
今年又到了选择的时候,基于上面各种情况,我放弃了购买服务器,但是我还想要一个自己的服务器,偶尔可以部署一些小项目,可以玩。于是,我就开始思考有没有一个服务器,我可以决定它的是否存在,不受外界因素的影响,在我需要的时候我又可以使用它。
经过各种搜索,终于让我给找到了,那就是以旧手机搭建一台服务器,再通过内网穿透,就可以实现。



一、服务器硬件基础

  • 旧手机: 小米5sPlus
  • 存储: 4G + 64G
  • 内网穿透: 在花生壳上注册个账号,可以获取个免费域名,支持开通两个端口,带宽1M。
    前期基本满足需求,大部分时间旧手机在身边,我们可以使用局域网进行连接操作。

二、搭建Linux环境

我们想让旧手机作为服务器,那我们需要在旧手机上先安装Linux环境,这样后面就可以部署我们的应用了。在安装Linux环境之前,有几个必须要做的操作,不然后面的安装执行不下去。

 1. 手机需要进行root,部分操作只有root权限才可以操作;
 2. 手机需要安装几个软件:Magisk + BusyBox + LinuxDeploy + JuiceSSH;

2.1 Root权限获取

不同的手机获取root权限的方式可能不太相同,我这边是使用的小米手机。随着手机不断的更新迭代,很多手机也有了更高的权限限制,像之前root大师,360root各种root软件基本都没毛用。下面提供一下小米手机的root步骤,仅供参考。
大家注意我们选用的旧手机上最好不要有什么重要的东西,因为会涉及到手机格式化,之前的东西很可能会被清除掉。

小米手机安装的版本一般是分基本版和开发版,默认是基本版,要想获取root权限,大概分为以下几个流程:开启开发者选项——设备解锁——安装开发版系统——开启Root权限。

2.1.1 解锁

如果手机是基本版,首先我们需要将手机开启开发者选项:

  • 开启开发者选项:设置——我的设备——全部参数——连续点击“MIUI版本”后面的当前版本(如MIUI 11.0.3|稳定版 11.0.3.0(ODBCNXM)),直至页面提示已经处于开发者模式。开启成功,可以在更多设置中找到,看到如下效果。
    开发者选项
    开发者选项

  • 解锁: 电脑上下载解锁工具并登陆小米账号(与手机上登陆账号一致),具体方法:官网下载工具,一般解锁可以需要1-3个工作日,这个可以提前做一下。解锁成功可以在手机开发者选项中查看。
    解锁
    解锁成功

2.1.2 安装Magisk

这一步放前面,主要是为了生成一个magisk_xxx.img文件,后面在刷机的时候替换掉之前的boot.img
随着手机的不断更新迭代,现在大部分手机获取root权限都很难实现,经过博主大量测试,发现市场上很多root软件无论是线刷还是卡刷都无法实现root,如:刷机大师,Root大师,还有部分软件需要付费才可以Root,有钱人可以试试。我这边经过各种搜索查资料,发现Magisk这个开源软件可以实现,大家想了解的,可以去magisk官网看一下,里面也有各种手机获取root权限的教程。
下载完成之后,是个app,需要在我们的手机上安装。安装可以直接下一步推荐操作,安装完成之后,它会提示重启,同时会在文件系统Download(默认路径,也可以在设置中修改)下生成magisk_xxx.img,我这边重启之后好像也没安装成功。
我当时是将magisk_xxx.img这个文件重新修改了一下名称为boot.img,然后在刷机的时候,用这个文件把之前的boot.img替换掉,刷机后打开就安装成功了。
后面这种方式我自己没有尝试,大家有兴趣可以试一下。我又查看了一下官网的相似文档,发现需要先线刷一个TWRP Recovery,然后在按降低音量键+电源按钮将手机启动到 TWRP 恢复模式,找到Magisk下面的压缩包,安装提示步骤就可以实现Root。最后安装成功,下面会显示一个卸载Magisk操作。
Magisk
MagiskAPP
Magisk安装
安装完成

magisk.img
Magisk安装成功

2.1.3 刷机

首先我们需要将手机刷机为开发版,对应的开发版本我们可以在小米论坛上下载,大概是1.6G,下载后解压到一个目录下,这里我们在解压的images目录下找到boot.img,然后把我们上一步通过Magisk生成的magisk_xxx.img重新命名为boot.img,然后替换掉之前的boot.img。这样做的话,我们刷机后的系统是自动安装了Magisk。
之后我们下载小米刷机工具(XiaoMiFlash),安装驱动,用数据线连接手机,MiFlash上点击加载设备,正常我们会看到我们的设备,选择我们刚才解压的目录即可,MiFlash会检测到.bat文件,这里我们千万不要着急刷机,一定要把下面选项调整一下,因为它默认“全部删除并lock”,我们要选择其它两个任一一个即可。勾选完成之后点击刷机。
修改img文件

开发包
XiaoMiFlash
安装驱动
连接手机
选择镜像

2.1.2 Root

在完成上面的刷机之后,我们可以在Magiskapp上看到超级用户模块,这里是我们授权的列表,这样在其他软件使用到root权限时,会提醒root授权。
超级用户
root授权

2. Linux环境搭建

上面我们已经获取到了手机的Root权限,后面我们只需要安装下面3个软件,就可以开始Linux环境搭建。核心apk是Linux Deploy

2.2.1 相关apk下载

  1. Busybox(apk)
    BusyBox 是一个小型可执行文件,它结合了许多常见 UNIX 实用程序的精简版。它占用很小的体积,通常用在嵌入式设备上。 在安卓系统上安装busybox,就可以运行更多的unix命令如vi,find,grep,cat,wegt等。
    BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。由于原机自带的Linux命令集不完整,我们一般需要安装Busybox来扩充Linux命令集(不安装也可以)。

  2. Linux Deploy(apk)
    Linux Deploy是一款可以在Android设备上部署Linux环境的应用,其原理大概是在Android的Linux层跑一个chroot或者proot容器,然后再在容器中运行我们准备好的另外一个Linux系统。值得注意的是,这与我们熟知的虚拟机技术不同,新的Linux系统将和Android系统平行运行(非专业解释不要深究)。

  3. JuiceSSH(apk)
    JuiceSSH是一个Android安卓手机端的免费SSH工具,功能很多,用起来也很方便,包括SSH远程连接、记住密码、管理连接信息等,常用的功能JuiceSSH都支持。
    由于这个下载需要google翻墙,这里分享一个我之前下载的JuiceSSH APK(juicessh-v3.2.2)。
    链接:https://pan.baidu.com/s/13RIRwP5Ug7f6ThuD6xqHiQ?pwd=jbn4
    提取码:jbn4

2.2.2 Linux环境搭建

2.2.2.1 Busybox安装配置
  1. 安装Busybox好后,点击左上角的三个杠,打开设置界面:复制安装路径,返回到主界面,点击安装即可,点击信息查看,可以看到本机处理器架构是 aarch64,安装路径是/system/xbin。
    Busybox
    安装过程
    安装成功
2.2.2.2 Linux Deploy安装配置
  1. 打开设置修改环境变量,找到PATH修改为 /system/xbin(即Busybox的安装路径)PATH变量
  2. 修改配置文件(可忽略)
    配置文件
  3. 安装Centos7,回到主界面,打开安装配置,勾选配置信息
    安装配置
  4. 选择容器类型为chroot,系统为Centos,架构为aarch64,这里可以改为国内阿里云源地址
    架构信息
  5. 安装类型/路径/镜像大小对Linux系统存储影响比较大,这个我们后面会专门整理出来,这里我们可以自行修改用户名和密码
    存储-用户
  6. 挂载点设置,可以将SD卡存储挂载到Linux系统上
    挂载点设置
    挂载点
  7. SSH设置,用于远程连接
    SSH设置
    SSH
  8. 回到主界面,点击右上角三个点,选择安装
    安装
  9. 安装成功,启动配置
    安装完成
    启动配置
  10. 点击停止,然后再点击启动
    启动

3. 连通验证

注意:手机和PC在相同的局域网中

3.1使用终端

使用ssh连接:ssh [email protected]
ssh

3.2使用juicessh

手机连接服务器,打开juicessh
juicessh

总结

以上就是手机上部署Linux整个流程,本文主要介绍手机获取Root权限,及搭建相应的Linux系统。后续会进行一些常用软件安装,及后续使用中遇到问题及解决问题整理,及如何在手机服务器上部署应用的实现。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28844767/article/details/124775876

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签