【CSDN 编者按】你家是否还有堆在角落积灰的Android/ target=_blank class=infotextkey>安卓旧手机?给它一个机会,让他变废为宝可好?来看看将其改造成Ruby Web服务器的攻略吧!
原文链接:https://lbrito1.github.io/blog/2020/02/repurposing-android.html
作者 | Leonardo Brito
译者 | 弯月 责编 | 彭慧中
出品 | CSDN(ID:CSDNnews)
你一定有安卓旧手机吧?每年都有大量的电子垃圾被扔掉,在发达国家,平均每个人每隔几年都要扔掉一台手机,而废弃的手机是最大的电子垃圾来源 。
我有一台在角落兜灰的旧摩托罗拉G5 Cedric,所以我决定用它来做点什么 。现在,我利用它运行一个Puma Web服务器,上面跑着一个简单的Sinatra应用 。
在进一步介绍之前,你也许会想:这有什么实际的用途吗?一台旧的安卓手机可能并不会有太高的性能,但t2.nano的AWS服务器也没有 。我还没有在安卓上部署任何“真正”的代码,但即使是最廉价的手机,一般也都有四核甚至八核CPU,至少2GB内存,所以理论上手机性能几乎接近最先进的云服务器(例如t2.nano就只有512MB内存) 。当然,手机的处理器是ARM,而云服务器通常是x86;内存管理也完全不同 。不过我们这里只是粗略估计一下 。
不论如何,这篇文章的目的是介绍如何将安卓设备改造成Web服务器或任何其他东西 。
安装Termux
首先我们需要在手机上设置一个linux环境 。Termux是一个运行在安卓上的终端模拟器和Linux环境,可以直接从谷歌应用商店下载 。安装完成后不需要任何配置 。
设置SSH
你肯定不想在手机的小屏幕上输入大量命令,所以我们来设置一下ssh,这样就可以远程登录Termux了 。
方法实现有几种,但我认为最方便的是通过一个名为Dropbear的软件 。
首先在安卓上运行:
进入WiFi设置,禁用DHCP,然后给手机指定一个IP地址 。
这一步是有必要的,这样路由器就不会每过几天就给手机分配一个新地址 。否则,配置会相当麻烦 。
安装Ruby、Bundler、Sinatra和Puma
Sinatra是一个轻量级的Web应用程序框架,而Puma是Web服务器 。
Ruby就是Ruby!
当然,Sinatra和Puma只是建议,你甚至可以在手机上运行完整的Rails应用程序 。只要别使用默认的Rails开发服务器WEBRick就行,它只有单进程、单线程,因此不适合生产环境 。(小型测试环境还是不错的) 。
在安卓上运行:
nginx是Web服务器、反向代理和负载均衡器 。虽然配置成多服务器是最有效的,它可以给多台服务器分发请求,但在我们的手机服务器上nginx也非常好,它内置了DDoS防范功能,还能为静态文件提供服务 。
在安卓上运行:
如果想让Web服务器可以通过互联网访问,就需要给路由器设置端口转发,将进入的请求到新配置好的安卓Web服务器上 。
具体做法取决于你的路由器 。可以参考这篇文章(https://www.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个并发用户(真实世界中应该设置得更大):
推荐阅读
- 大学生|当00后从大学生变成应届生,就业难的大背景下,简历可别瞎乱来!
- |老领导酒后吐真言:想在职场混得好,要看清8个生存法则,别傻干
- 如何识别打呼噜是不是病?
- 家里有酒怎么存才好?教你4个技巧,存酒手别欠,不然好酒变差酒
- 这6种食品没有“保质期”,别再傻傻丢掉了
- 新买的铁锅别马上使用,教你正确开锅方法,久用不粘锅也不生锈
- 这些咖啡的区别你了解吗
- 护理和护士有什么区别?
- 貂皮怎么辨别好坏?
- tf卡与sd卡有什么区别?