1. 程式人生 > >小米路由器MINI架設WEB服務

小米路由器MINI架設WEB服務

@(標籤) [平窮髮揮我的想象] [Openwrt] [Markdown] [Linux]

閒來無事 折騰點事,自從騰訊雲和阿里雲取消了免費的大學生伺服器套餐。 ╮(╯▽╰)╭活在夢裡,我已經不是大學生了呢。阿里上一個月幾十上百的伺服器租費,看著能讓我冒一陣雞皮疙瘩。想來自己真心沒有閒錢來租一個伺服器玩。要是弄個老機器開著當伺服器。耗電不說,整天嗡嗡嗡的腦袋疼。思來想去,唯一滿足以下幾點的能讓我架設伺服器的只有家裡的路由器了。

  • 全天工作 :家裡的路由器全天工作,星期一二四六會有個重啟,喘口氣;

  • 功耗低 :12w不到的功耗,用一小時也就0.012度電,整個路由器算上家裡的寬頻消耗也就5~6塊錢不到;

  • 噪音小 :路由器也沒機箱風扇,噪聲基本為0;

  • 效能尚可:有1核580MHZ,128RAM,跑一組靜態服務,一組動態服務足以;

硬體準備

  • 吃灰的U盤 : 路由器的FLASH是在太小,僅僅12MB,一定是不夠用的,所以需要在路由器上掛載一個U盤。
  • 小米路由器MINI : 本主,MINI核心基於Openwrt,這能做的事情就太多了啊。
  • 同區域網電腦 : 用於對MINI進行配置,啟動關閉服務等。

刷開發版韌體

軟體準備

  • 下載開發版的ROM : 雷猴王想的很周全,刷了開發版ROM,並開啟SSH後,據說沒有保修,觀眾請三思。
    ROM下載地址為:MiWiFi 官網。由於我用的是MINI,於是就下載官網開發版ROM,操作流程如下:

    • 步驟(1)這裡寫圖片描述
    • 步驟(2)這裡寫圖片描述
    • 步驟(3)如果你是其他型號,自行查閱相關型號官方說明,路由器刷機步驟則參照截圖中官方刷機教程
  • 下載小米路由SSH工具 :有了SSH工具,用PuTTYWinScp就可以搞事情了。將下載好的SSH工具重新命名為miwifi_ssh.bin,放置於之前刷機用的U盤根目錄即可。下載位置如圖所示:

    這裡寫圖片描述

組裝輕量級WEB服務

使用PuTTY開始搭建

接下來使用之前提到的PuTTY,點選文章中的高亮部分,即可到官網下載。下載好後,雙擊執行,IP地址填路由器閘道器地址,預設為192.168.31.1 埠號為SSH預設埠 22。然後點選Open按鈕。輸入使用者名稱為root,密碼為下載SSH工具時顯示給你的root密碼。當看到大大的ARE YOU OK,說明已經進入到小米路由的Shell中了,這是成功的一大步。

編譯好的Python

這裡直接提供編譯好的Python下載,這個連結為MINI型號下編譯好的Python2.7.5。通過之前提到的WinScp,直接解壓好了,像windows平時複製黏貼檔案一樣,拖拽WinScp介面右側U盤碟符下的/extdisks/sda1/python資料夾下即可。

配置Python環境變數

python的環境變數在Openwrt中的配置也很簡單,開啟/etc/profile 進行新增環境變數,參考如下:

vi /etc/profile

然後在文字最後,新增如下注冊內容:

export PATH="/extdisks/sda1/python/bin:$PATH"

然後按ESC,再按兩遍 Shift + z,儲存好退出。然後直接更新環境變數。

source /etc/profile

由此Python環境變數即配置完成。嘗試shell中輸入python2.7,看到python撥出,即大功告成。

安裝Bottle和Markdown2

在SSH下,直接執行如下:

pip install bottle markdown2

pip工具就能下載好bottle輕量web服務框架以及python的markdown2標記語言庫。

開啟靜態伺服器

首先在U盤根目錄下建立WEB資料夾。然後修改系統 httpd。

vi /etc/sysapihttpd/sysapihttpd.conf

然後按 Ctrl + F,到文字末尾最後一個“}”前新增如下符合nginx語法的配置:

    server {
            listen 8090;
            server_name _;
            access_log off;
            location / {
                    root /extdisks/sda1/WEB;
                    index  index.html index.htm;
            }
            error_page  404              404.html;
            error_page   500 502 503 504  50x.html;
            location = 50x.html {
                           root   html;
            }
    }

程式碼演示中用的是8090埠,如果想定義其他也可。執行如下命令更新httpd服務:

/etc/init.d/sysapihttpd restart

如果沒有出現error資訊,代表重啟成功,若出現,請檢查配置程式碼。 由此靜態資源伺服器已建立成功。

防火牆設定

開啟防火牆部分的設定:

vi /etc/config/firewall

在最後新增如下埠的配置內容:

config rule 'httpdwan'
        option src 'wan'     
        option dest_port '8090'
        option proto 'tcp'
        option target 'ACCEPT'
        option name ''\''httpd wan accept tcp port 8090'\'''

埠請自行更改。然後重啟防火牆程序:

/etc/init.d/firewall restart

WEB APP DEMO

最終在U盤下,建立自己的web動態服務相關的資料夾,建立python指令碼test.py,例:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
        return template('<b>Hello {{name}}</b>!', name=name)

run(host='0.0.0.0', port=9527)

重新回到,上一張,配置開啟9527埠的防火牆設定並重啟。執行命令:python2.7 test.py 。
然後在瀏覽器中輸入http://192.168.31.1:9527/hello/world 若出現Hello world內容,即Bottle伺服器框架已能正常執行。
由此即可開始通過Python-bottle寫自己的動態網頁、建設自己的部落格啦~。

DDNS服務設定

開啟192.168.31.1(小米路由器的後臺管理)。點選->高階設定->DDNS , 選擇DDNS提供商,輸入殼域名提供商那兒註冊的賬號名密碼,以及殼域名地址並儲存。大功告成。由此就可以通過你的殼域名訪問小米路由器中的靜態伺服器地址和動態伺服器地址啦~。
PS:這裡不推薦花生殼,因為它總需要一個oray程序存活於區域網中的某臺主機上,若關閉,DDNS即失效。 這裡我用的是no-ip.com。註冊後獲取免費的殼域名。 我在自己購買的阿里頂級域名中進行修改解析記錄,將www選項設定為CNAME,並設定為no-ip.com註冊的域名地址。

若是要實現 HTTPS,還需準備一個阿里雲或者者其他正規DNS解析域名。並新增HTTPS證書等操作。看以後有空再寫一篇吧。

由上一大堆,折騰了一天,終於告一段落,自己的部落格也算架設起來了,Openwrt可以玩的還有好多,這個春節有的折騰咯。