旧安卓机别扔了,自制 Web 服务器了解一下!

      最后更新:2022-07-09 12:07:56 手机定位技术交流文章


      你家里有堆积在角落里的Android手机吗?给它一个机会把它变成宝石吗?让我们看看如何把它变成一个RubyWeb服务器吧!

      来源链接: https://lbrito1.github."2020/02/repurposing-android".html

      声明: 本文本由CSDN翻译. 请注意其复制的来源.

      作者 | Leonardo Brito

      译者 | 文月 | 彭惠春

      |CSDN(ID:CSDNnews)

      你一定有安卓旧手机吧?每年都有大量的电子垃圾被扔掉,在发达国家,平均每个人每隔几年都要扔掉一台手机,而废弃的手机是最大的电子垃圾来源。

      我有一个旧的摩托车G5Cedric在角落里,所以我决定用它做一些事情。 现在,我用它运行PumaWeb服务器运行一个简单的Sinatra应用程序。

      在进一步介绍之前,你也许会想:这有什么实际用处吗?旧的Android手机可能没有很高的性能,但t2.Nano的AWS服务器没有。我还没有在Android上部署任何真正的代码。但即使是最便宜的手机,通常有四个甚至八个CPU,至少2GB内存,所以理论上手机性能几乎接近最先进的云服务器(例如t2.nano就只有512MB内存)。当然,手机的处理器是ARM,云服务器通常是x86;存储管理完全不同。但是我们只是做了一个粗略的估计。

      无论如何,本文的目的是解释如何将Android设备转换为Web服务器或其它任何东西。


      安装Termux

      首先,我们需要在手机上设置一个Linux环境。Termux是一个端口模拟器和运行在Android的Linux环境,可以直接从GoogleAppStore下载。


      设置SSH

      您肯定不想在您的手机的屏幕上输入大量的命令,所以让我们设置ssh,以便您可以远程登录到terminus。

      这样做有几种方法,但我认为最简单的方法是使用一个叫做Dropbear的软件。

      首先在安卓上运行:


      pkg upgrade pkg install dropbear

      你可以选择密码认证,也可以选择公钥认证。虽然推荐使用公钥认证,但作为尝试的话,密码认证是最简单的。运行以下命令:


      passwd New password: Retype new password: New password was successfully set.

      提示:您可以安装一个终端复制程序,例如tmux或屏幕,这使得通过ssh运行程序非常方便:


      pkg install tmux

      然后,在桌面或笔记本上测试连接:


      ssh android-ip-address -p 8022


      设置Android静态IP地址

      输入WiFi设置, 关闭DHCP, 然后指定电话的IP地址.

      这个步骤是必要的,以便路由器不会每几天给电话分配新的地址,否则,配置将非常麻烦。

      安装 Ruby 、 Bundler 、 Sinatra 和 Puma

      Sinatra是一个轻型Web应用程序框架,而Puma是一个Web服务器。

      鲁比是鲁比!

      当然,西纳特拉和普马只是建议,你甚至可以在你的手机上运行完整的Rails应用程序。不要使用默认的Rails开发服务器WebRick,这是一个单一的过程,一个单一的线程,因此,它不适合生产环境。小测试环境仍然良好。

      在安卓上运行:


      pkg install ruby gem install sinatra puma
      安装nginx

      nginx是Web服务器、反向代理和负载均衡器。虽然配置成多服务器是最有效的,它可以给多台服务器分发请求,但在我们的手机服务器上nginx也非常好,它内置了DDoS防范功能,还能为静态文件提供服务。

      在安卓上运行:


      pkg install nginx

      接下来我们需要一些技术,这样龙虾和熊猫可以一起工作。这个配置(https://gist.github.com/ctalkington/448153)很好,复制inx.conf,将 appdir 转换为您的网页应用程序的根目录。在我的配置中,我把它转换成/data/data/com/termux/files/home/android-sinatra。

      设置端口转发

      如果您希望一个网络服务器能够访问互联网,您需要将路由器的配置端口转移到新配置的Android网络服务器。

      具体方法取决于您的路由器,你可以参阅本条(https://ww.Noip."com/support/knowledgebase/general-port-forwarding-guide)。

      配置动态dns

      大多数人的公共IP地址是动态的,因此,设置动态dns(DDNS)服务是非常必要的,它将提供一个静态的域名,自动转移请求到您的动态公共网络IP地址。

      有几个免费的DDNS服务。我使用的是no-ip,到目前一切都好。只不过你需要每个月去“更新”一下域名。

      设置DDNS后,您需要配置路由器,让它定期通知自己的IP地址给DDNS服务。 具体方法取决于路由器类型。

      跑 Hello World!


      负载测试

      你可以用siege这个HTTP负载测试软件来模拟真实世界中的使用情况。下面是在我的服务器上运行siege的情况,服务器支持3个并发用户(真实世界中应该设置得更大):


      十字路口的数字并不重要,因为我们的网页应用程序的响应只是时间标记,不超过100个字符,但足以证明我们的服务器能够处理少数同时使用的用户。

      番外篇:安全性

      互联网是非常危险的,如果你真的想运行服务器,你必须考虑这些问题。

      运行服务器数小时后,各种爬行动物都进来了。 它们的大多数是无害的搜索引擎,但有些是坏的访问者,例如两个请求:


      因此,请确保所有您的软件都最新,注意您的访问日志,并遵照nginx安全指引。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29453.html

          热门文章

          文章分类