家里的小米路由R1D用了近一年,只是做一個普通的路由器使用,實在太浪費了。最近學習移動端編程,感覺和PC時代最大的不同就在於移動端產品更重雲和端的配合。於是就花了一晚上搗鼓搗鼓,在小米路由上搭建了一套可從外網訪問的web 服務,以便手機上做的玩意兒可以隨時隨地獲得私有雲的支持。把搭建路徑備案記錄下來:
- 第一步、先把小米路由刷到開發版ROM。
后面ssh登錄需要開發版ROM支持。注意:先保存路由器上的所有數據!!!比如寬帶賬號、密碼信息,這些信息一般在裝完寬帶后就很少用到了,一定確保先找到這些數據,以便刷機完成后可以正常設置路由;刷機會導致路由上所有信息包括硬盤數據丟失,所以要做好數據備份。
去miwifi.com,點擊“官網” - 下載 - ROM - 小米路由器(R1D) ROM開發版 - 下載
· 將下載好的ROM包放到U盤的根目錄下,並命名為“miwifi.bin”;
· 開路由器的電源后,將U盤插入路由器的USB接口,按住reset,接通電源,待路由器指示燈變為黃燈閃爍時,松開reset
· 大約3-5分鍾后,指示燈變成黃色常亮狀態時可以拔掉U盤,此時刷機已經完成正在重啟,稍等片刻路由器指示燈變藍就可以正常使用了。
- 第二步、開啟SSH工具
還是剛剛的網站,點擊“開放” - 開啟SSH工具 - 下載工具包,按照網頁指導和第一步類似地,將SSH工具刷入路由器。重啟路由后即可登錄,在PC上輸入命令ssh root@192.168.31.1,輸入密碼即可看到如下信息:
palancedeMacBook-Pro:~ palance$ ssh root@192.168.31.1 The authenticity of host '192.168.31.1 (192.168.31.1)' can't be established. RSA key fingerprint is SHA256:FEpnjo9ynkUI4LWu3ckjcEce7HCJoybOJqANYh6+hSM. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.31.1' (RSA) to the list of known hosts. root@192.168.31.1's password: BusyBox v1.19.4 (2015-12-11 15:58:27 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. ----------------------------------------------------- Welcome to XiaoQiang! ----------------------------------------------------- root@XiaoQiang:~#
搞定!
- 第三步、安裝llmp
下載llmp_install.bin(百度一下,這玩意很容易找到),然后執行
chmod +x /userdisk/data/llmp_install.bin&&/userdisk/data/llmp_install.bin in
看到
Install: unzip data llmp.tgz ok Install: config llmp start ... Install: config llmp complete llmp start ! The wwwroot is in The shared disk ! Install: everything is ok, Try to open the url http://192.168.31.1:8080
搞定!訪問http://192.168.31.1:8080即可看到歡迎頁。llmp系統運行在沙盒之中,該沙盒ssh端口為3333,該沙盒下用戶有root、www,密碼都是admin,建議先修改密碼。
ssh -p 3333 root@192.168.31.1
即可進入。www用戶不能直接修改自己的密碼,需要先root登錄,再執行passwd www修改其密碼。
mysql的root用戶默認密碼也為admin,假設要修改為ABCD,可執行:
mysqladmin -u root -p password ABCD
然后會提示輸入原先的密碼。
網站根目錄在小米共享盤wwwroot下,ssh到路由上對應的位置在/userdisk/data/wwwroot。
好了,以上步驟就完成了在小米路由上搭建web服務,到目前為止,可以在局域網內正常訪問了。目前從外網還訪問不了,原因是被防火牆攔了,下一步我們添加防火牆例外,就可以做到從外網用ip訪問該web 服務。需要說明的是,我發現聯通運營商屏蔽了8080端口的訪問,所以得先把web服務的端口改一下,比如改成8023。SSH到路由,
vi /userdisk/llmp/etc/lighttpd/lighttpd.conf,找到這一行,並把8080改為8023:
## bind to port (default: 80) server.port = 8080 #把8080修改為8023
保存后執行如下命令,重啟llmp服務:
sh /userdisk/llmp/manager/llmp_fix.sh
- 第四步、添加防火牆例外
vi /etc/config/firewall,在文件最后添加如下內容:
config rule 'httpdwan' option src 'wan' option dest_port '8023' option proto 'tcp' option target 'ACCEPT' option name ''\''httpd wan accept tcp port 8023'\'''
保存后執行如下命令,重啟防火牆策略:
/etc/init.d/firewall restart
OK,現在從外網通過IP就能訪問該web服務了,去小米路由的管理后台找到自己的外網IP:
然后在外網訪問該IP,http://222.128.173.113:8023,如下:
可以小雞凍一把了~~
- 第五步、域名解析
最后一步就是最好能通過域名直接訪問,一般家里的電腦都是動態IP,路由每次重啟獲得的IP是不同的,因此需要動態地把域名和這個IP實時綁定。在小米論壇上有教程講怎么映射到花生殼的二級域名,這種域名是免費的,而且小米路由的后台管理支持該域名的動態解析DDNS。不過我手上有一個從阿里雲購買的一級域名,在小米路由上又不能直接支持DDNS,所以還需要額外做一些事。大致分兩個步驟:一、申請一個花生殼的二級域名,並動態解析到小米路由;二、將阿里雲的一級域名再解析到花生殼的二級域名。
首先,去花生殼申請一個二級域名,這是免費的,如下:
然后在路由的管理后台中找到 高級設置 - DDNS - 添加服務,如下,輸入花生殼登錄的用戶名密碼以及剛剛申請的域名作為主機名稱:
然后從外網訪問http://palance.gicp.net:8023就能訪問到自己的web服務啦~
最后,需要去阿里雲上添加一條域名解析規則。去到阿里雲的管理控制台,選擇“域名”服務,找到自己的域名(我的域名是www.binglen.com),點擊“解析”,添加如下記錄:
注意,主要填寫記錄類型為CNAME,主機記錄為www,記錄值為在花生殼的二級域名palance.gicp.net,這樣就可以通過www.binglen.com:8023訪問小米路由的web服務。
還可以再添加一條:記錄類型為CNAME,主機記錄為@,記錄值為palance.gicp.net,這樣就可以通過binglen.com:8023訪問了。
大功告成!