如何在安卓设备上搭建一个网络服务器
在这个模块中,我们将了解如何在Android上托管一个Web服务器,并使用ngrok进行端口转发,以便在移动中拥有灵活的Web服务器。
在Android上托管Web服务器的步骤
现在让我们直接进入在Android设备上托管Web服务器的步骤。
安装Termux和Hacker的键盘。
首先,在我们继续之前,我们将需要两个应用程序:Termux(它将帮助我们发出命令)和Hacker’s Keyboard(它将帮助我们使用通常在标准Android键盘上不可用的Ctrl,Esc,Alt等键)。
你可以从他们的官方网站或者Google Play商店下载Termux。
您可以安装Hacker’s Keyboard,以便在Termux窗口内进行更好的导航。
2. 在 Termux 上安装软件包
现在我们需要在Termux上安装一些我们需要的软件包。打开应用并输入以下命令:
$ pkg update && pkg upgrade
这应该升级我们目前的系统。接下来,我们将需要使用以下命令安装一些必要的软件包:
$ pkg install apache2 git neovim wget curl
3. 通过SSH连接到Android设备
请注意,此部分完全可选。在这里,我们将安装一些额外的软件包,以帮助我们在整个过程中进行操作。
$ pkg install openssh neofetch fish nmap
首先,让我们启用SSH,这样我们就可以通过电脑连接到手机。
$ sshd
接下来,用 ifconfig 检查您的用户名和 IP。
$ whoami
u0_a147
$ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.105 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ce9f:7aff:fe81:3115 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
txqueuelen 3000 (UNSPEC)
RX packets 227165 bytes 311846650 (297.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 82264 bytes 7912862 (7.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
现在我们需要检查SSH服务运行在哪个端口。你可以使用以下方法进行检查:
$ nmap -sV 127.0.0.1
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-12 14:44 IST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0075s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
8022/tcp open ssh OpenSSH 8.4 (protocol 2.0)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.87 seconds
一旦您获得了端口号,请切换到您的个人电脑并使用以下方式连接到您的设备:
$ ssh -p <PORT> <USER>@<IP>
例如,对我来说,完整的命令将是:
$ ssh -p 8022 u0_a147@192.168.0.105
下一步更改默认的Shell为:
$ chsh /data/data/com.termux/files/usr/bin/fish
此时,您可以从您的个人电脑终端向您的设备发出命令。
在安卓上启动网络服务器。
现在,我们可以使用以下命令启动服务器:
$ apachectl
默认情况下,网页托管在8080端口上。在浏览器上访问该端口,我们会看到以下信息:
要编辑消息,我们需要用vi编辑器更改index.html文件。
$ vi $PREFIX/share/apache2/default-site/htdocs/index.html
让我们把index.html的内容改为:
<html><body><h1>Android !</h1></body></html>
刷新页面后,我们应该能够看到我们所做的更改被反映出来。
在这一点上,你可以定制你的页面,使其呈现任何你想要的外观/功能。然而,为了进一步扩展我们的功能,我们可以使用ngrok来启用端口转发!
5. 使用Ngrok进行端口转发
首先,我们需要从官方网站获取压缩文件:
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.tgz
使用以下方法解压缩文件:
$ tar -xvzf ngrok-stable-linux-arm64.tgz
接下来,你需要在他们的网站上注册并获取授权令牌。
现在,你应该获取一个授权令牌。要将令牌添加到默认的配置文件中,请输入:
$ ./ngrok authtoken <token>
现在,我们应该可以访问更多的功能和更长的会话。最后,仍然运行着我们的网页服务器,输入:
$ ./ngrok http 8080
我们获得了一个ngrok链接,通过这个链接我们可以找到我们网站的主页。
现在,我们可以使用ngrok链接从我们的本地网络以外访问我们的服务器了!
結論
因此,以这种方式,我们可以将我们的Android手机用作Web服务器。在非Root的手机上,您可以在任何较高的端口上托管Web服务器,而在Root的手机上,您可以使用默认端口80。