【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)

Web服务器系列相关文章编写如下:

  1. 【Web开发】Node.js实现Web服务器(http模块)
  2. 【Web开发】Node.js实现Web服务器(express模块)
  3. 【Web开发】Python实现Web服务器(Flask入门)
  4. 【Web开发】Python实现Web服务器(Flask测试)
  5. 【Web开发】Python实现Web服务器(Tornado入门)
  6. 【Web开发】Python实现Web服务器(Tornado+flask+nginx)
  7. 【Web开发】Python实现Web服务器(FastAPI)
  8. 【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js)

文章目录

  • 1、简介
  • 2、配置Termux开发环境
    • 2.1 安装Termux
    • 2.2 了解Linux的常用命令
    • 2.3 管理Termux的命令
    • 2.4 安装和更新coreutils
    • 2.5 安装编辑器
    • 2.6 安装Hacker's Keyboard
    • 2.7 安装SSH
  • 3、Python实现Web服务器
    • 3.1 安装Python
    • 3.2 运行
  • 4、node.js实现Web服务器
    • 4.1 安装node.js
    • 4.2 编写测试代码一
    • 4.3 编写测试代码二
  • 5、C/C++的程序开发
    • 5.1 安装C/C++相关库
    • 5.2 运行
  • 6、PHP的程序开发
    • 6.1 安装php库
    • 6.2 安装nginx库
    • 6.3 安装PHP-FPM库
  • 7 安装mysql
  • 结语

1、简介

https://termux.com/
https://github.com/termux/termux-app#github

Termux - 适用于 Android OS 的终端仿真器应用程序,可通过各种包进行扩展。
Termux 是一个免root的linux模拟器。

Termux 是一个 Android 终端仿真应用程序,用于在 Android 手机上搭建一个完整的 Linux 环境。 不需要 root 权限 Termux 就可以正常运行。Termux 基本实现 Linux 下的许多基本操作。可以使用Android 手机架设 Web服务器进行测试。
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第1张图片

  • 安全的。 使用来自 OpenSSH 的 ssh 客户端访问远程服务器。Termux 将标准包与准确的终端仿真结合在一个漂亮的开源解决方案中。

  • 功能丰富。 在 Bash、fish 或 Zsh 和 nano、Emacs 或 Vim 之间进行选择。Grep 通过您的 SMS 收件箱。使用 curl 访问 API 端点并使用 rsync 将联系人列表的备份存储在远程服务器上。

  • 可定制。 通过 Debian 和 Ubuntu GNU/Linux 已知的 APT 包管理系统安装您想要的。为什么不从安装 Git 和同步您的点文件开始呢?

  • 可探索的。 你有没有坐在公共汽车上想知道 tar 到底接受了哪些参数?Termux 中可用的软件包与 Mac 和 Linux 上的软件包相同 - 在您的手机上安装手册页并在一个会话中阅读它们,同时在另一个会话中进行试验。

  • 包括电池。 你能想象一个比 readline 驱动的 Python 控制台更强大、更优雅的袖珍计算器吗?Perl、Python、Ruby 和 Node.js 的最新版本均可用。

  • 准备扩大规模。 如果需要,连接蓝牙键盘并将您的设备连接到外部显示器 - Termux 支持键盘快捷键并具有完整的鼠标支持。

  • 可修补。 通过使用 Clang 编译 Go、Rust、Swift 或 C 文件进行开发,并使用 CMake 和 pkg-config 构建您自己的项目。如果遇到困难需要调试,lldb/GDB 和 strace 都可以使用。

2、配置Termux开发环境

2.1 安装Termux

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第2张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第3张图片

2.2 了解Linux的常用命令

linux部分常用命令如下:

cd <目录地址> 打开目录地址
cp <文件名> <目标目录地址> 拷贝到目标目录地址
mkdir <文件夹名> 新建文件夹
rm <文件名> 删除文件
rm -rf <文件夹名> 删除文件夹
ls 查询该文件夹下文件及文件夹
chmod -x <程序名> 增加权限访问该程序

在Linux系统上,把当前目录生成压缩包,在控制台里输入下面指令:

tar -zcvf ../test.tar.gz ./

window上,安装个git,同时把Linux基本指令也附带安装,找到要压缩的目录,右键-》“git bash here”,命令相同。
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第4张图片

2.3 管理Termux的命令

除了 apt,Termux 在此基础上还封装了 pkg 命令,向下兼容 apt。pkg 在运行前会执行一次 apt update,保证安装的包是最新版本。

  • apt:
# 连接远程仓库,获取软件包信息
$ apt update

# 更新本地已经安装的软件包
$ apt upgrade
  • pkg:
pkg search <query>              搜索包
pkg install <package>           安装包
pkg uninstall <package>         卸载包
pkg reinstall <package>         重新安装包
pkg update                      更新源
pkg upgrade                     升级软件包
pkg list-all                    列出可供安装的所有包
pkg list-installed              列出已经安装的包
pkg shoe <package>              显示某个包的详细信息
pkg files <package>             显示某个包的相关文件夹路径
#vim为编辑器,可自行更改为其它编辑器,但非常建议使用vim。学习vim的操作不会很难,常用的命令只有那么几个,习惯了就好。
#curl可以优化termux终端界面,酌情下载安装。
#clang为C和C++编译器。
#python可以让我们制作一些对拍小程序,也有很多其它的玩法,酌情下载安装。
#gdb和cgdb为调试工具,可根据需要酌情下载安装。
pkg install vim clang python gdb cgdb curl

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第5张图片

  • 由于官方源下载速度较慢,建议将安装源修改为国内源。
# 设置默认编辑器
$ export EDITOR=vi

# 编辑源文件
$ apt edit-sources
or
$ vi  $PREFIX/etc/apt/sources.list

将安装源修改为 http://mirrors.tuna.tsinghua.edu.cn/termux,保存退出。

查看Linux内核版本命令(两种方法):

  1. cat /proc/version(这里失效)
  2. uname -a(这里成功执行)

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第6张图片
Termux 支持安装其它 Linux 发行版。

  • 手机安装各版本linux:
termux-setup-storage #获取存储权限
apt update
apt install x11-repo -y #下载x11源
apt update && apt upgrade -y

termux-change-repo #如果更新慢可以更换清华源
#下载 proot 和proot-distro:
apt install proot proot-distro -y
proot-distro list

proot-distro install debian #利用官方的proot-distro安装Debian 
proot-distro login debian #进入Debian系统
apt updateapt upgrade -y #进入debian系统后更新源
apt install neofetch -y #安装neofetch
neofetch 

apt install sudo -y #安装sudo
adduser test #创建新用户test
nano /etc/sudoers  将新用户test加入sudoers组里

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第7张图片

  • 下面的命令可以从命令行查看手机的 IP 地址。
apt install net-tools
ifconfig

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第8张图片

  • Termux系统的测试命令
# 安装 sl 软件包
$ apt install sl

# 运行
$ sl

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第9张图片

2.4 安装和更新coreutils

Coreutils 软件包包括一整套基本的 shell 工具。是GNU提供了一整套比较基本的工具软件包,是这些工具的集合。其本身是需要依赖shell程序的。

apt update && apt upgrade
apt install coreutils

2.5 安装编辑器

你可以选择 vim 或者直接 nano,或其他终端文本编辑器。

  • vim
apt install vim  # 安装成功
# or
pkg install vim  # 也能安装成功

pkg install vim-python # 让Vim支持Python编写的插件
export EDITOR=vim # 设置默认编辑器为Vim
插入模式
i 从当前光标处进入插入模式
I 进入插入模式,并置光标于行首
a 追加模式,置光标于当前光标之后
A 追加模式,置光标于行末
o 在当前行之下新加一行,并进入插入模式
O 在当前行之上新加一行,并进入插入模式
Esc 退出插入模式
退出编辑器
:w 将缓冲区写入文件,即保存修改
:wq 保存修改并退出
:x 保存修改并退出
:q 退出,如果对缓冲区进行过修改,则会提示
:q! 强制退出,放弃修改

提示:如何用putty时在linux vim里面粘贴windows剪贴板的东西?
方法一:在普通模式下键入“ :set mouse-=a”(不包括引号)
方法二:编辑 ~/.vimrc 文件,加入如下代码: if has(‘mouse’) set mouse-=a endif 方法一每次打开vim时都需要设置一次。方法二改了配置文件后,每次启动vim都可以粘贴了.
:set number可以显示行号了.

  • nano
apt install nano # 安装失败
# or
pkg install nano # 安装成功

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第10张图片

2.6 安装Hacker’s Keyboard

用手机常用的输入法写代码很不方便,我们经常需要 tab、shift、ctrl 等等这样的键,因此,我们可以安装一个专门的输入法,这里可以选择 Hacker’s keyboard。

https://github.com/klausw/hackerskeyboard

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第11张图片

使用 Android 设备时,您是否缺少您习惯的计算机按键布局?此软件键盘具有单独的数字键、常用位置的标点符号和箭头键。它基于 AOSP Gingerbread 软键盘,因此它支持修饰键的多点触控。

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第12张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第13张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第14张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第15张图片

支持的键盘布局包括亚美尼亚语 (Հայերեն)、阿拉伯语 (العربية)、英国语 (en_GB)、保加利亚语 (български език)、捷克语 (Čeština)、丹麦语 (dansk)、Carpalx 英语(语言“en-CX”)、德沃夏克英语 (语言 “en-DV”), 英语 (QWERTY), 芬兰语 (Suomi), 法语 (Français, AZERTY), 德语 (Deutsch, QWERTZ), 德语 Neo2 (Deutsch, 语言 “de-NE”), 希腊语 (ελληνικά),希伯来语 (עברית)、匈牙利语 (Magyar)、意大利语 (Italiano)、老挝语 (ພາສາລາວ)、挪威语 (Norsk bokmål)、波斯语 (فارسی)、葡萄牙语 (Português)、罗马尼亚语 (Română)、俄语 (Русский)、俄语语音 (Русский) , ru-rPH), 塞尔维亚语 (Српски), 斯洛伐克语 (Slovenčina), 斯洛文尼亚语 (Slovenščina)/波斯尼亚语/克罗地亚语/拉丁语 塞尔维亚语, 西班牙语 (Español, Español Latinoamérica), 瑞典语 (Svenska), 泰米尔语 (தமிழ்), 泰语 (ไทย) 、土耳其语 (Türkçe) 和乌克兰语 (українська мова)。

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第16张图片

2.7 安装SSH

由于在手机上打字效率堪忧,所以决定先在 Termux 上配置个 SSH 服务,让 PC 端能够远程连接到手机。配置完成后,确认下 SSH 连接的相关信息。需要注意的是,Termux 的 sshd 服务默认监听在 8022 端口上。

# 手机端
pkg install openssh # 安装ssh
sshd # 开启服务端,允许其他机器访问当前手机端
whoami # 查看登录用户名
ifconfig # 查看ip

# 电脑端
ssh-keygen -t rsa # 生成密钥
# 将id_rsa.pub copy 至手机 ~/.ssh 目录

# 手机端
cat id_rsa.pub > authorized_keys # 将密钥加入信任列表

# 电脑端
ssh -p8022 [email protected]

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第17张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第18张图片

# 安装SSH服务
$ pkg install openssh

# 设置密码
$ passwd

# 启动sshd服务
$ sshd

# 访问本机存储
$ termux-setup-storage
# 查询手机ip,以实际手机ip为准
$ ifconfig
=> 192.168.31.87

# 查询当前用户
$ whoami
=> u0_a184

# 确认ssh服务的监听端口
netstat -ntlp | grep sshd

ssh [email protected] -p 8022

# 停止ssh
pkill sshd

# 设置ssh自动开启,不用手动输入命令(我还没试过,因为我的是旧手机的安卓系统,所以懒得试)
echo "sshd" >> ~/.bashrc
  • 通过电脑上的Putty访问Android手机上的linux系统:
    【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第19张图片
    通过电脑上的Putty访问Android手机上的linux系统上搭建的web服务器,进而查看android的文件数据:
    【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第20张图片
    【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第21张图片
  • 电脑的文件上传到Android手机上
scp -P 8022 /d:/test.png [email protected]:/data/data/com.termux/files/home
scp -P 8022 /d:/test.shp [email protected]:/sdcard/Download/
  • 电脑端操作界面:
    【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第22张图片
  • 手机端输出界面:
    【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第23张图片
    当然也可以电脑FileZilla 连接IP,端口8022,协议SFTP,使用用户名密码连接。

3、Python实现Web服务器

3.1 安装Python

# 安装 python3。如需安装 python2,则执行pkg install pyton2。
$ pkg install python

# 或安装python:训练python
pkg install python -y

# 升级 pip3:便于安装一些python库
python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

3.2 运行

# 启动 HTTP 服务。
$ python -m http.server 8080

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第24张图片

在台式机电脑上的edge浏览器访问上面anroid手机搭建的web服务器如下:
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第25张图片

4、node.js实现Web服务器

4.1 安装node.js

apt install nodejs

4.2 编写测试代码一

mkdir test
cd test
touch server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
  res.end('hello 2022,爱看书的小沐!');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
  • 运行
node server.js

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第26张图片

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第27张图片

4.3 编写测试代码二

http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs。

  • 使用npm/cnpm安装http-server
npm install http-server -g
  • 运行
http-server -a 0.0.0.0 -p 3000
or
http-server

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第28张图片
在台式机电脑上的edge浏览器访问上面anroid手机搭建的web服务器如下:
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第29张图片

5、C/C++的程序开发

5.1 安装C/C++相关库

pkg install vim clang python gdb cgdb

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第30张图片

5.2 运行

打开vim编写c代码,如下:
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第31张图片
有如下三种方式编译代码:

clang -o mytest mytest.c
gcc -o mytest mytest.c
g++ mytest.cpp -o mytest

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第32张图片

6、PHP的程序开发

6.1 安装php库

pkg install php

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第33张图片
启动PHP内置WEB服务器 :

php -S 0.0.0.0:8081

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第34张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第35张图片
通过vim创建文件test.php:

 phpinfo();?>

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第36张图片

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第37张图片

6.2 安装nginx库

(Nginx 是一款高性能 web 服务器,常常与 php 配合解析并搭建网站)

# 安装nginx:搭建web服务器
pkg install nginx

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第38张图片
(1)启动Nginx

nginx

(2)用 pgrep 命令查看终端号(看看nginx是否启动了)

pgrep nginx

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第39张图片
在电脑的edge浏览器上访问网址:

http://192.168.31.87:8080

从网页返回的内容可以看出 nginx 正常启动。
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第40张图片

6.3 安装PHP-FPM库

nginx 与 php 都安装好了,接下来就要把这两个程序给链接在一起。
nginx 是一个静态 web 服务器,只能解析处理 html 这类静态文件,对于 php 这种动态语言无能为力,所以要把 php 请求交给 php解释器 处理,可怎么才能区分 html 与 php 文件呢?
php-fpm 是 nginx 与 php 之间的互动桥梁。

# 安装php-fpm
pkg install php-fpm

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第41张图片

  • 配置php-pfm
    php-pfm 配置文件在绝对路径 /data/data/com.termux/files/usr/etc/php-fpm.d/www.conf,通过vim修改:
vim $PREFIX/etc/php-fpm.d/www/conf

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第42张图片
将上图中的listen修改如下:
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第43张图片

  • 配置 Nginx
    Nginx 的配置文件在绝对目录 /data/data/com.termux/files/usr/etc/nginx/nginx.conf, 用 vim 打开 nginx.conf 文件:
vim $PREFIX/etc/nginx/nginx.conf

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第44张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第45张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第46张图片
新建测试页面info.php,如下图所示:
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第47张图片

# 启动程序
php-fpm
nginx

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第48张图片

# 查看8080端口被占用的进程
lsof -i:8080
# kill命令干掉该进程
kill -9 9622

7 安装mysql

pkg install mariadb
# 如果安装失败可能是因为没有名为 my.cnf.d 的目录
cd /data/data/com.termux/files/usr/etc
mkdir my.cnf.d

# 如果 my.cnf.d 目录已存在,则不执行任何操作,然后返回主页:
cd $home

# 一旦创建目录(如果目录不存在),我们将执行以下命令:
# 初始化 MariaDB 数据目录,并在数据库中创建 系统表mysql
mysql_install_db

# 可选,但建议:安全的 MariaDB
mysql_secure_installation

启动mysql:

mysqld
# 或 mysqld_safe 与 root 用户一起运行的;“&”号将在后台运行。
mysqld_safe -u root &

访问数据库:

mysql -u root -p
# 或 默认情况下,是没有密码的
mysql

启动MySQL远程访问,进入mysql:

# 创建一个可远程登录的用户
CREATE USER 'tomcat'@'%' IDENTIFIED BY '123456';
GRANT ALL privileges ON *.* TO 'tomcat'@'%';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

其中 root 是登录用户名,123456是数据库登录密码,设置完后刷新配置;

【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第49张图片
【Web开发】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)_第50张图片
停止 MariaDB 服务器:

#要停止 MariaDB 服务器
pkill mysql

#要查找执行的进程ID:
ps aux | grep mysql

#拥有ID后,请杀死它们:
kill -9 15423


结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

你可能感兴趣的:(Python,Android,Linux,python,android,node.js,web,sever,web服务器)