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

现在,我们需要使用ngrok链接从本地网络外部访问我们的服务器!
结论
因此,通过这种方式,我们可以使用我们的Android手机作为网络服务器。在非根电话上,您可以在任何更高的端口上托管Web服务器,而在根电话上,您可以使用默认端口80。