程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Web開發】Android手機上基於Termux實現Web服務器(Python、node.js、C/C++)

編輯:Python

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 管理Termux的命令
    • 2.2 安裝和更新coreutils
    • 2.3 安裝編輯器
    • 2.4 安裝Hacker's Keyboard
    • 2.5 安裝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服務器進行測試。

  • 安全的。 使用來自 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


2.2 管理Termux的命令

linux部分常用命令如下:

cd <目錄地址> 打開目錄地址
cp <文件名> <目標目錄地址> 拷貝到目標目錄地址
mkdir <文件夾名> 新建文件夾
rm <文件名> 刪除文件
rm -rf <文件夾名> 刪除文件夾
ls 查詢該文件夾下文件及文件夾
chmod -x <程序名> 增加權限訪問該程序

除了 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

  • 由於官方源下載速度較慢,建議將安裝源修改為國內源。
# 設置默認編輯器
$ 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(這裡成功執行)


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組裡

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

  • Termux系統的測試命令
# 安裝 sl 軟件包
$ apt install sl
# 運行
$ sl

2.2 安裝和更新coreutils

Coreutils 軟件包包括一整套基本的 shell 工具。是GNU提供了一整套比較基本的工具軟件包,是這些工具的集合。其本身是需要依賴shell程序的。

apt update && apt upgrade
apt install coreutils

2.3 安裝編輯器

你可以選擇 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 # 安裝成功

2.4 安裝Hacker’s Keyboard

用手機常用的輸入法寫代碼很不方便,我們經常需要 tab、shift、ctrl 等等這樣的鍵,因此,我們可以安裝一個專門的輸入法,這裡可以選擇 Hacker’s keyboard。

https://github.com/klausw/hackerskeyboard

使用 Android 設備時,您是否缺少您習慣的計算機按鍵布局?此軟件鍵盤具有單獨的數字鍵、常用位置的標點符號和箭頭鍵。它基於 AOSP Gingerbread 軟鍵盤,因此它支持修飾鍵的多點觸控。




支持的鍵盤布局包括亞美尼亞語 (Հայերեն)、阿拉伯語 (العربية)、英國語 (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) 和烏克蘭語 (українська мова)。

2.5 安裝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]


# 安裝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系統:

    通過電腦上的Putty訪問Android手機上的linux系統上搭建的web服務器,進而查看android的文件數據:

  • 電腦的文件上傳到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/
  • 電腦端操作界面:
  • 手機端輸出界面:

    當然也可以電腦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

在台式機電腦上的edge浏覽器訪問上面anroid手機搭建的web服務器如下:

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

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


在台式機電腦上的edge浏覽器訪問上面anroid手機搭建的web服務器如下:

5、C/C++的程序開發

5.1 安裝C/C++相關庫

pkg install vim clang python gdb cgdb

5.2 運行

打開vim編寫c代碼,如下:

有如下三種方式編譯代碼:

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

6、PHP的程序開發

6.1 安裝php庫

pkg install php


啟動PHP內置WEB服務器 :

php -S 0.0.0.0:8081



通過vim創建文件test.php:

<?php phpinfo();?>

6.2 安裝nginx庫

(Nginx 是一款高性能 web 服務器,常常與 php 配合解析並搭建網站)

# 安裝nginx:搭建web服務器
pkg install nginx


(1)啟動Nginx

nginx

(2)用 pgrep 命令查看終端號(看看nginx是否啟動了)

pgrep nginx


在電腦的edge浏覽器上訪問網址:

http://192.168.31.87:8080

從網頁返回的內容可以看出 nginx 正常啟動。

6.3 安裝PHP-FPM庫

nginx 與 php 都安裝好了,接下來就要把這兩個程序給鏈接在一起。
nginx 是一個靜態 web 服務器,只能解析處理 html 這類靜態文件,對於 php 這種動態語言無能為力,所以要把 php 請求交給 php解釋器 處理,可怎麼才能區分 html 與 php 文件呢?
php-fpm 是 nginx 與 php 之間的互動橋梁。

# 安裝php-fpm
pkg install php-fpm

  • 配置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


將上圖中的listen修改如下:

  • 配置 Nginx
    Nginx 的配置文件在絕對目錄 /data/data/com.termux/files/usr/etc/nginx/nginx.conf, 用 vim 打開 nginx.conf 文件:
vim $PREFIX/etc/nginx/nginx.conf




新建測試頁面info.php,如下圖所示:

# 啟動程序
php-fpm
nginx

# 查看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是數據庫登錄密碼,設置完後刷新配置;



停止 MariaDB 服務器:

#要停止 MariaDB 服務器
pkill mysql
#要查找執行的進程ID:
ps aux | grep mysql
#擁有ID後,請殺死它們:
kill -9 15423

結語

如果您覺得該方法或代碼有一點點用處,可以給作者點個贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
如果您感覺方法或代碼不咋地//(ㄒoㄒ)//,就在評論處留言,作者繼續改進;o_O???
如果您需要相關功能的代碼定制化開發,可以留言私信作者;(*◡‿◡)
感謝各位童鞋們的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!




  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved