文章目录
原文:
大家好,我是鸟哥。
你家是否还有堆在角落积灰的安卓旧手机?给它一个机会,让他变废为宝可好?来看看将其改造成 Ruby Web 服务器的攻略吧!
你一定有安卓旧手机吧?每年都有大量的电子垃圾被扔掉,在发达国家,平均每个人每隔几年都要扔掉一台手机,而废弃的手机是最大的电子垃圾来源。
我有一台在角落兜灰的旧摩托罗拉 G5 Cedric,所以我决定用它来做点什么。现在,我利用它运行一个 Puma Web 服务器,上面跑着一个简单的 Sinatra 使用。
在进一步介绍之前,你也许会想:这有什么实际的用途吗?一台旧的安卓手机可能并不会有太高的性能,但 t2.nano 的 AWS 服务器也没有。我还没有在安卓上部署任何 “真正” 的代码,但即使是最廉价的手机,一般也都有四核甚至八核 CPU,至少 2GB 内存,所以理论上手机性能几乎接近最先进的云服务器(例如 t2.nano 就只有 512MB 内存)。当然,手机的处理方式器是 ARM,而云服务器通常是 x86;内存管理也完全不同。不过事实上我们这里只是粗略估计一下。
不论如何,这篇文章的目的是介绍如何将安卓设备改造成 Web 服务器或任何其他东西。
1、安装 Termux
第一步我们需要在手机上设置一个 Linux 环境。Termux 是一个运行在安卓上的终端模拟器和 Linux 环境,可以直接从谷歌使用商店下载。安装完成后不需要任何配置。
2、设置 SSH
你肯定不想在手机的小屏幕上输入大量命令,所以我们来设置一下 ssh,这样就可以远程登录 Termux 了。
方法达成目标有几种,但我认为最方便的是通过一个名为 Dropbear 的软件。
第一步在安卓上运行:
pkg upgrade
pkg install dropbear
你可以选择密码认证,也可以选择公钥认证。虽然推荐使用公钥认证,但作为尝试的话,密码认证是最简单的。运行以下命令:
passwd
New password:
Retype new password:
New password was successfully set.
**小贴士:**可以安装一个终端复用程序,如 tmux 或 screen。这样通过 ssh 运行程序时非常方便:
pkg install tmux
接下来,在台式机或笔记本上测试连接:
ssh android-ip-address -p 8022
3、设置安卓的静态 IP 地址
进入 WiFi 设置,禁用 DHCP,然后我们进行给手机指定一个 IP 地址。
这一步是有必要的,这样路由器就不会每过几天就给手机分配一个新地址。否则,配置会相当麻烦。
4、安装 Ruby、Bundler、Sinatra 和 Puma
Sinatra 是一个轻量级的 Web 使用程序框架,而 Puma 是 Web 服务器。
Ruby 就是 Ruby!
当然,Sinatra 和 Puma 只是建议,你甚至可以在手机上运行完整的 Rails 使用程序。只要别使用默认的 Rails 开发服务器 WEBRick 就行,它只有单进程、单线程,所以不适合生产环境。(小型测试环境还是不错的)。
在安卓上运行:
pkg install ruby
gem install sinatra puma
安装 nginx
nginx 是 Web 服务器、反向代理和负载均衡器。虽然配置成多服务器是最有效的,它可以给多台服务器分发请求,但在我们的手机服务器上 nginx 也非常出色,它内置了 DDoS 防范功能,还能为静态文件提供服务。
在安卓上运行:
pkg install nginx
接下来需要一点小技巧,才能让 nginx 与 Puma 相互配合。这个配置()非常出色,复制 nginx.conf,将 appdir 改成你的 Web 使用的根目录。在我的配置中,我将其改成了 /data/data/com/termux/files/home/android-sinatra。
设置端口转发
如果想让 Web 服务器可以通过互联网访问,就需要给路由器设置端口转发,将进入的请求到新配置好的安卓 Web 服务器上。
配置动态 dns
大多数人的公网 IP 地址都是动态的。所以,设置一个动态 dns(DDNS)服务非常有必要,它会给你提供一个静态域名,自动将请求转发到你的动态公网 IP 地址上。
有几个免费的 DDNS 服务。我使用的是 no-ip,到目前一切都好。只不过事实上你需要每个月去 “更新” 一下域名。
设置好 DDNS 之后,你需要配置路由器,让它定期将自己的 IP 地址通知给 DDNS 服务。详细做法取决于路由器型号。
运行 Hello world!
负载测试
你可以用 siege 这个 HTTP 负载测试软件来模拟真实世界中的使用情况。下面是在我的服务器上运行 siege 的情况,服务器支援 3 个并发用户(真实世界中应该设置得更大):
截图中数字的意义不大,由于我们的 Web 使用的响应只不过事实上是时间戳,不超过 100 个字符,但足够印证,我们的服务器可以处理方式少量的并发用户了。
番外篇:安全性
互联网非常危险。如果你真的要运行一台服务器,就必须考虑这些困难。
运行这台服务器几个小时后,就已经有各种爬虫进来了。大多数都是无害的搜索引擎爬虫,但有的却是来者不善,比如这两个请求:
所以,务必要保证所有软件都是最新的,无论何时观察访问日志,并遵循 nginx 的安全指南。
说个题外话,鸟哥是个比较喜欢折腾的程序员,业余喜欢开发自己网站、小程序、App等,这些东西统统离不开服务器!最近就围绕服务器的主题创建了一个微信群,喜欢玩服务器或者想自己开发一款产品的读者可以进来,相互学习交流!群通知中给大家分享了一套搭建服务器的视频教程哦。非常适合新手学习!我也会时不时的带大家撸点和服务器相关的优惠券!不感兴趣,不喜欢折腾的就没必要凑着闹了!
识别二维码,添加微信后
发送【服务器】即可获取邀请链接
这是我部署的机器人,请勿调戏!
推荐阅读
转载请注明来自粉色视频一样的软件,本文标题:《哈哈,把女友的旧手机改造成了web服务器! 》