摘要:「讓 ASP.NET在 Raspberry PI 飛」之墜落紀錄
原本好懶惰的 (看點部落上篇發文時間就曉得懶幾年了,ㄎㄎ ),但因為小朱和 18 大大一直叫我積極點。嗯,這是個好建議,動筆吧。
某日我親友跟團買了兩塊 PI2 ,他說我可以先拿來玩,然後我就很快樂的玩了一陣子的 Minecraft PI Edition 。哈哈
後來可能被雷打到了,突然想玩壓測以及平行運算,所以打算拿兩塊 PI 建立 Web Server 陣列打打看。不試還好,一試才發現從買貨到啟動 Web Server 全部都是洞。我跳了許多洞撞得坑坑疤疤,本篇就把我撞到的每個洞都寫下來,讓下一個要玩的人可以參考一下。
圖一:我打算建立的環境以及網路架構
我是個寫 ASP.NET 的人,即使在 LINUX 上,打算要繼續寫 ASP.NET 也是個挺合理的選擇。根據過去經驗, Web Server 叢集上打算架的執行環境如下表:
| 軟體 | 備註 | |
| OS | Raspbian | PI 專用,由 Debian 改造而來 |
| .NET Runtime | MONO | |
| WEB Server | Jexus | |
| DataBase | 在另一台電腦裝 SQL Express |
以前架 CentOS 時,只要下載 MONO 原始碼,然後重新編譯就好,頂多是版本載錯,編譯不通過……但這次事情真的不像憨人想得那麼簡單,如果順利我就不會寫這篇了。就讓我們來看看到底裝個 ASP.NET 執行環境有多少雷可以踩。
| 病灶和解藥 | |
| 症狀一 |
病: 新買的 SD 卡讀不到…這好悲劇,然後我跑去重新換一張…還是不行,而且其它電腦讀得到。
解: 最後從其它電腦透過 DiskPart 指令,重新把磁區完全砍掉再格式化,總算能進安裝了。 |
| 症狀二 |
病: 燒錄 OS 失敗…在把 SD 卡塞進 PI 開始安裝 OS 時一直跑 I/O ERROR,而且重新燒錄 Raspbian 也失敗。 當時我連 DiskPart 都無法刪除磁區,感覺 SD 卡都廢掉了。
解: 請使用寶具:SD Formatter ,這套軟體順利把 SD 卡清空。 |
| 症狀三 |
病: 透過 apt-get install 指令取得 MONO 失敗,取得 Jexus 失敗,取得 Nginx 失敗,取得 Apache2 失敗。因為一直都是 404 Not Found,所以一度懷疑是網路問題,然後從 WIFI 換成有線,再換成某位 DOFI 提供的 4G 。全部失敗。
解: 取得什麼東西都失敗,感覺人生也失敗啊啊啊啊啊。 後來測試結果根本不是網路問題。在 OS 設定完後,安裝任何東西前,一定要記得先執行指令 apt-get upgrade ,不然套件來源 URL 全部沒更新,必然讀不到。 (DOFI 大大,你的熱情贊助以及借我網路都有在我失望時拉我一把,下下儂。) |
| 症狀四 |
病: Jexus 無法啟動,但明明用 Root 權限了。而且我發現 Apache 可以啟動,所以不是權限問題…
解: 安裝 MONO 時,記得用 mono-complete 而不要用 mono-runtime 。 如果這樣還是不能啟動,把 Jexus 換成原始碼重新編譯,或是 MONO 重新編譯。因為你載的版本可能不支援 ARM 架構。 |
最後是 PI 這個使用者權限很低,連資料夾或文件的存檔權限都沒有,所以我把 Jexus 資料夾和網站資料夾都修改權限,讓 PI 可以去使用它。 XWindow 中漂漂介面的文字編譯器才是現代人該用的嘛,客官您說是吧,是吧是吧。
上面這些事情,我每個都花了一兩晚才解決,感覺好累,我只是想跑個 ASP.NET 為什麼這麼痛苦…希望這些經驗對需要的人有幫助。
雖然抱怨了很久,我還是成功把環境架起來,並且試著用 JMeter 開始做壓測了,下次我們試著寫些程式再壓測。以及改成叢集再壓測。
最後特別感謝我親友 DS 提供 PI ,以及勇敢吃下我原本的任務,讓我摸東摸西的。
