megrxu

家庭儲存的網際網路訪問實現

Jul 4, 2017  #Code #Recording 

其實非常沒有技術含量。但是為了湊個數,就起了一個這樣的名字。

實際上做的是:

  1. Django 寫的一個程式碼質量相當差的後端,能進行透過 Web 請求進行基本的檔案操作,列出檔案目錄,下載預覽等等。

  2. Vue.js + ElementUI 寫的一個不太穩健的前端,實現一下上述功能。

  3. 將後端部署到瑞星微3288開發板上(上面燒錄的系統是 Debian 9 ARM)。

  4. 在校園網內用 SSH 做內網穿透,連線到我的騰訊雲公網伺服器,把公網的某個埠的網路請求轉發到執行在本地的開發板上的後端。

結果看起來就像是透過 Web 管理電腦上的檔案,並支援遠端下載和編輯

想法來源

這個課一定要做個奇奇怪怪的專案,自己想了很久也不知道做啥。硬體方面也不是很想做,要買東西的什麼很煩。所以只想考慮軟體方面的。

本來想寫個複雜點的爬蟲,但是爬什麼東西,卻一點也沒有思路。後來老師說可以報銷,我突然想起來可以買個樹莓派玩玩。就想做樹莓派的 Home Server,做個語音控制 + 遠端監控之類的小玩意兒。結果老師說太寬泛了。只得做罷。

最後差不多了,選了一個和 Home Server 同源的東西,也是自己比較熟悉的那一套吧……

太爛了。其實應該學點新東西的。

過程中遇到了很多坑。

  1. ElementUI 是很良心了。但是最開始的時候對 Vue 那一套實在不是海東,所以就用了 ElementUI 的那套 StartTemplate。 寫到後面發現為什麼包都這麼老,需要一個一個升級,而且 Webpack config 的結構也似乎是挺亂的,改的時候沒辦法搞。看了一下還是自己來吧,不用別的模版了。於是就重新用 Vue-cli 寫了。

  2. 內網穿透最開始用的是 ngrok。 最開始發現 ngrok 最新版似乎已經不開源了。用了第二版進行編譯。期間發現要編譯不同平臺的可執行檔案,用 Go 的話就是修改一下環境引數就好,極端的方便。自己還挺高興。但是發現居然要把域名和證書也編譯進去。我就覺得稍微有點不清真。 但是最後還是弄好了。很開心。

    後來換了一個域名,重新編譯了一套。但是似乎步驟忘記了,最終執行不起來。我也沒什麼辦法。尤其是馬上就要展示了。所以經室友提醒趕緊換上了最簡單的 SSH 做穿透,用 autossh 避免長時間連線斷掉的問題。

    發現還是 SSH 好啊。這種程度的穿透 SSH 足夠了。

  3. Python 字串 在寫後端的時候,要判斷給進來的字串是不是一個合法的路徑,所以用了isFileisDir等等函式。但是後來發現有一個地方總是判斷失敗。

    De 了很久的 bug,即使用上了小黃雞除錯法也沒看出來是啥問題。

    請教了好厲害,發現是字串的最後有一個是 \r\n,一個是\n,所以判斷錯誤了。自己太不敏感了。

  4. 最後還是不太懂 WSGI 是咋回事,演示也只是在開發伺服器上演示的……非常傻……



可能相關的