「讓 ASP.NET在 Raspberry PI 飛」之墜落紀錄

摘要:「讓 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 ,以及勇敢吃下我原本的任務,讓我摸東摸西的。