最后更新: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是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安全指引。
本文由 在线网速测试 整理编辑,转载请注明出处。