[Cloud]Azure以外的Free solution - AppHarbor(以ASP.NET MVC為例)

  • 353
  • 0
  • 2019-10-03

[Cloud]Azure以外的Free solution - AppHarbor(以ASP.NET MVC為例)

偶然發現一個除了Azure以外的另外一個.Net微軟雲端 free solution - AppHarbor
他不是只有一個月免費,他是在最小的使用限度之下都是免費,對於developer想要測試雲端空間又不想要花錢來說,非常實用!

首先先到官網申請帳號,這部分很簡單我想應該不用說明
https://appharbor.com/

接著在官網上方的Your applications畫面,點擊Create New按鈕以新增一個你的MVC網站名稱

下一步則是將你的程式碼上傳到AppHarbor,官網這邊能夠選擇的方式只能透過Git,那麼我們這邊就選用我最常用的GitHub,

然後選擇你放在GitHub的MVC網站,並點擊ADD按鈕

除非祖上有積德,通常不會直接ADD就馬上成功,然後就會出現以下錯誤訊息:


八成是github跟appharbor兩邊沒整合好,沒關係,我們改成自行從local端上傳程式碼,先點選官網上方的Your Applications選項,你會發現多了一個MVC_AppHarbor_Demo的應用程式,這就是你剛剛透過Github上傳程式碼失敗的應用程式,請用滑鼠點選進去查看細節:

滑鼠點擊左下角的Repository Url,將會在畫面上顯示出AppHarbor自己的Git網址,類似這樣:
https://youraccount@appharbor.com/mvcappharbordemo.git

下一步應該也不用細說,再把程式碼push到AppHarbor的Git網址就可以了

Push到AppHarbor之後,應該就會編譯成功了,畢竟把本機local端可以執行的程式直接上傳,是不會有整合上的錯誤的:
畫面上顯示編譯成功

然後點擊Go to application選項,看看是否能成功打開網站:
(迷之音:如果這麼簡單就成功,也不會有這篇文章做紀錄拉 XD)

當然這就出現了錯誤畫面如下,他的建議可以把<customErrors mode="Off"/>加入到web.config裡面,比較可以看到完整的錯誤訊息,不過我是懶的加所以先不理他,因為AppHarbor有提供基本的除錯機制可用,還沒必要加這個,請看下一步

回到上一頁,點擊Error選項,出現剛剛發行的錯誤:
從下面看起來,九成八是跟資料庫無法連線有關,有興趣的可以自己點進去看細節的錯誤訊息再google,不過其實沒必要看就知道

哪個網站現在不會用到資料庫呢?請於畫面上選擇Add-on,這樣就可以進去幫這個應用程式加上資料庫的功能:

測試階段,使用SQLServer的Free solution就可以了:

接著滑鼠點選SQLServer圖樣,在點擊按鈕Go to SQLServer,就可以設定connection string相關資訊:


可以看到畫面上有有db連線資訊,請利用SSMS連線進去,將應用程式要用到的資料表建一建:



這一步驟一樣在官網的同一個畫面,第一個區塊我叫他做"尚未完成的聰明區塊"就是"Edit Database configuration",第二個區塊是"已完成的笨笨區塊",就是"Connection Options"下方的相關連線資訊。聰明區塊裡面的Alias以及metadata若是能設定成功的話,AppHarbor就能自動的將web.config裡面的連線字串改成雲端db的Hostname, Username, Password,省下我們要手動改連線字串的功夫,殘念的是試了一個多小時都不成功,也許是我太笨?於是乎我改用笨笨區塊的方法:直接改AppHarbor的Git空間的Web.config的連線字串。下面直接提供我這邊改出來的連線字串給各位參考(當然帳號密碼部分有改掉)(我的程式碼是用EF連線DB):
改完之後請直接push上去AppHarbor

<add name="MyDBEntities" connectionString="metadata=res://*/Models.MyDB.csdl|res://*/Models.MyDB.ssdl|res://*/Models.MyDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=f3002996-4eaa-4e93-bb31-a97400d50045.sqlserver.sequelizer.com;Database=dbf30029964eaa4e93bb31a97400d50045;User Id=iamsuperman;Password=iamsuperman;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />


回到官網的應用程式設定頁面,因為剛剛有重新commit一個版本上去,因此AppHarbor有自動重新編譯一次,也因此多了一個commit的紀錄,請選擇這筆最新的紀錄的右邊的"Deploy"按鈕,改採用剛剛commit上去最新版本的程式碼(其實只有改web.config):

大概過個30秒左右,AppHarbor就會Deploy成功了,重新整理網頁之後就可以發現,目前Active的程式碼,就是剛剛最新commit上去的:

滑鼠再次點擊畫面上的Go to Application,這次終於成功發行到雲端上去了!


Done! 上面這邊卡了我兩個多小時,寫下來希望對於後面的人有幫助,下台一鞠躬。
說實在這個沒有很好搞,有問題請盡量問,能力所及就回答!能力不及就…… @@"

ps.如果照上面步驟執行還是有錯誤的話,試試看切換到舊的版本的程式碼,然後再切回來最新的,也許就OK了,因為我也碰到過,這樣子就解決了!


參考資料:
[AppHarbor]發佈一個網站至網站空間
https://dotblogs.com.tw/rexhuang/2017/06/29/113911
免費的 .Net 雲端運算服務 - AppHarbor
http://coding.anyun.tw/2012/03/19/free-net-cloud-computing-service-appharbor/
How to deploy asp.net MVC Application on AppHarbor
https://www.youtube.com/watch?v=uXHE46TqRCw
DEPLOY YOUR FIRST ASP.NET MVC APP TO APPHARBOR
https://mjawaid.wordpress.com/2016/01/20/deploy-your-first-asp-net-mvc-app-to-appharbor/