安卓手機如何使用Termux搭建web伺服器教程
前言
因為疫情的關係一直在家隔離,看了看手裡的四部手機 ,一臺伊拉克成色的小米2s(咱當年也是發sao青年),3臺蘋果(也都是比較舊的型號。。。撿老爸老媽剩下的。。。)
其實小米還算正常--除了自帶聽筒和麥克風不好用、電源鍵不太好使以外,其他沒有什麼毛病。但感覺就像雞肋,食之無味,棄之可惜。
後來我仔細想想,能不能把手機搞成個小伺服器呢?手機的硬體本就是為了長時間待機的,穩定性應該不錯的。如果能打造成伺服器,豈不是“充分利用閒置的舊手機,讓其發揮餘熱?“(知乎上這個問題給了我不少靈感)
先吐槽下,雖然不知道國外啥樣,但是感覺國內的Termux資源以及使用人群是真的少.....沒個論壇或者qq群啥的,Termux吧裡好多都不是適合自己學習的資料。大家如果有折騰Termux的圈子,希望能告訴我一下,過去學習學習(寒窗12年,從來沒這麼自發的想學習過....)。所以特別編寫、整理了這個“最詳細、完整的基於安卓手機使用Termux搭建web伺服器教程”。
小白不要怕、萌新不要怕,我在linux以及搭建伺服器這方面也是賊白賊白、賊新賊新的。
俗話說得好,要把大象裝冰箱,總共分幾步?(答案在文章開頭)
一.軟體的準備
- Termux
- nat123安卓版
- 建站系統
- Putty(windows軟體)
二.前期Termux的設定與準備
1.Termux安裝
首先在安卓手機上安裝Termux,200k的小軟體,功能卻非常強大,自帶busybox。這個軟體的安裝要求是Android5.0及以上,建議將手機root。
2.Termux的配置(共4步)
a.為Termux改源
安裝好以後,先改源(要不下載太慢),建議改成清華源(也算圓了我上清華的夢想)。
Termux自帶vi,設定預設編輯器為vi,以及使用vi編輯器編輯軟體源:
export EDITOR=viapt edit-sources
回車後是個這樣的,按i進入編輯模式:
Ctrl A ->將游標移動到行首 Ctrl E ->將游標移動到行尾 Ctrl K ->從游標刪除到行尾
將原來的deb
https://termux.net..........這一行前面加個#號給它註釋掉
新增:
deb [arch=all,你的平臺架構] http://mirrors.tuna.tsinghua.edu.cn/termux stable main
填寫完成後,手機上的輸入法上方應該會有ESC這個按鍵,點一下,然後找符號中的 “:“ 號,然後最下面會有一個:出來,再輸入wq,手機回車,就儲存並退出vi了。
b.升級軟體庫
接下來我們將軟體包庫升級一下:
pkg updatepkg upgrade
c.安裝openssh並設定
升級好後我們下載openssh,方便我們在電腦上用電腦鍵盤操作,提高效率。安裝openssh命令:
pkg install openssh
安裝完成後,我們先設定termux的密碼:
passwd
系統會提示你輸入密碼,但不會以 ** 等符號來提示你,所以輸入時要仔細。
再次確認密碼--在輸入一遍剛剛輸入的密碼,回車
系統提示設定成功。
d.啟動並用putty遠端登陸Termux
啟動ssh(預設埠為8022):
sshd
查詢主機名稱:
whoami
查詢區域網ip地址(建議大家去路由器管理頁面做個ip與MAC地址繫結,以後就不用總查了)
ifconfig wlan0
然後用putty登入,putty 設定:
藍色圓圈部分是因為長時間沒有操作會自動斷開ssh,所以在這裡設定成60(其他也可以,建議不要過小)
Hostname填寫查詢到的ip,埠填寫8022,選擇下方空白處的default settings,點選右邊的save,儲存設定
點選open,這裡正常應該是login as:
ssh 主機名@查到的IP -p 8022
接著會讓你輸入密碼password: 將我們設定過的密碼輸入進去(同樣沒有提示)
回車以後會看到歡迎頁:Welcome to Termux!(balabala一大堆)
這些是前期準備工作。
三.Termux搭建WEB伺服器所需的軟體及配置(分3步,Termux中下載)
1.php
a.下載php
pkg install php
b.開啟php自帶的web伺服器並指定建站系統資料夾(-t 資料夾名稱)
ps:1.我一般是直接cd到建站系統資料夾路徑的
2.cd:類似windows裡開啟硬碟某個資料夾一樣,Termux下常用的cd
/data/data/com.termux/files/home。每個手機的路徑可能都不相同,可以輸入“pwd”回車檢視路徑
3.建議用RE檔案管理器將建站系統資料夾直接複製過去。如果沒有許可權,可以用cp命令,這裡就不展開了,百度下“cp命令“有用法以及示範。
php -S 0.0.0.0:埠號 -t 資料夾名稱
此時一個web伺服器就成功開啟了,可以在區域網內的電腦或移動裝置瀏覽器內輸入“伺服器的區域網ip地址:埠號“即可訪問
2.mariadb資料庫
a.安裝mariadb
pkg install mariadb
b.配置mariadb
有可能會報錯,依據提示執行要求的命令即可,我碰到的是讓我執行“mysql upgrade"的命令,好像是這個。最開始還有tmp資料夾下找不到mysqld.sock檔案的錯誤,這個問題一直沒找到解決辦法,cp這個檔案到tmp下也試過了,不管用,然後我就強行執行了“mysqld”的命令
mysql_install_db
c.開啟mariadb
mysqld
3.下載phpMyAdmin資料庫管理軟體
百度phpmyadmin下載,下載後解壓出資料夾,放到某路徑下
開啟phpmyadmin,就是開啟php的web伺服器,並將指向解壓出來的資料夾,可以設定其它的埠:
php -S 0.0.0.0:埠號 -t 資料夾名稱
然後在瀏覽器內輸入主機的區域網ip地址 : 埠即可訪問,預設帳號為root,密碼為空。
會提示缺少mcrypt擴充套件,這個不影響登入,後面可以慢慢除錯。
第一次輸入帳號(密碼為空,就是不用輸入)後點”執行“上方還會提示“禁止空密碼進入”,這時候我們需要修改下他的配置檔案:
cd到phpmyadmin資料夾,然後裡面會有檔名為config.sample.inc.php的檔案,也可能是config.inc.php,或者是config.default.inc.php
用vi開啟它:
vi config.sample.inc.php
會看到:
向下滑,將
cfg[′Servers′][i]['AllowNoPassword'] = false;
改為:
cfg[′Servers′][i]['AllowNoPassword'] = true;
或將密碼設定一下(紅色部分):
接著按住ESC並輸入“:wq“,回車自動儲存退出,空密碼的問題解決。
至此,web伺服器搭建完成,但是自己在區域網內搭建個部落格啥的,也就只能給自己看,那有啥意思,部落格不就是為了分享生活,分享快樂,分享知識技術的嘛。所以我們還需要將我們搭建好的網站讓公網也可以訪問到,有兩種辦法:1.直接去兩位馬爸爸家購買相應服務 2.自己在網上找相應的軟體以及配置教程。
不過咱們用手機搭建伺服器不是為了省錢嗎,不然還折騰這個幹嗎。畢竟大家都是窮吊絲,呸!就我是個窮吊絲,大家都是富一代、富二代、青年企業家。
為了省錢我就在網上找相關的軟體以及教程。最開始用的是ngrok,買了個免費的,結果發現配置成功了,但是訪問卻訪問不到。後來查到個軟體:nat123。
說實話,最開始進官網的時候感覺介面有點low,不是很優雅、美觀,但是確實是成功的從公網訪問到了我的伺服器,不吹不黑,速度不錯!下面是通過nat123讓伺服器能被公網訪問的教程。
四.通過公網訪問伺服器的辦法
1.nat123安卓版
a.在nat123官網上註冊帳號並登入
b.登入後,找到埠對映列表,右上角“新增埠對映”
c.填寫資訊,並確認儲存
d.選擇android版,根據手機系統下載軟體
e.開啟nat123安卓版,並輸入在官網註冊的帳號密碼,進入後自動開啟服務
可選擇退出前臺程式選項,不要讓手機在後臺kill此程式,建議設定白名單,Temrux同理
Ps:以下為nat123官網複製的內容(侵刪):
android版本備註: 1.在安卓執行後,遠端web管理。登陸網頁新增修改刪除操作,管理對映/解析,自動同步生效。 2.客戶端和訪問者是分開獨立的。 3.安卓版的訪問者暫時不支援1024以下埠。
五.總結
php -S 開啟web伺服器時,指向建站系統資料夾最開始不知道怎麼表達,也就不知道怎麼搜尋,苦惱了好一陣。
mariadb中,碰到了同樣煩心的命令錯誤問題:mysql_install_db 與mysql upgrade,執行mysql upgrade命令過程中還會碰到在網上找不到合適解決辦法的mysqld.sock問題。
無論是ssh還是在手機上,開啟了mariadb服務就不能關掉終端,只能新建一個終端,否則會失效
開啟伺服器的命令最好在手機上的一個終端上完成,測試有時在ssh上開啟後不能關閉ssh或斷開連線,有機率會在後臺找不到之前開啟的伺服器活動,並且建議先執行php -S 的web伺服器指令,因為可以通過Ctrl Z、bg等指令實現在後臺繼續執行;mariadb執行後只能在前臺執行(網上其他資料也這麼說),沒有找到後臺執行的辦法,開啟mariadb的狀態下,Ctrl Z、bg等命令均無效。等這些服務執行起來後,在手機Termux介面由左向右滑動螢幕,會有“New session”選項,可以開啟一個新的終端。
Termux的installing與phpmyadmin的下載花了好久的時間,最好有特殊的網路連線。