IDE:VS2019
我一定要寫這個牢騷,有一個週末,突然心血來潮想使用GCP的服務,印象中都會用Azure、AWS與GCP做比較,身為.NET開發人員最優先選擇一定是Azure
Azure真的部署很方便,一個網站來說,App Service架上去,下載設定檔,VS發佈選擇此設定檔,就上去了,超簡單且超級快!!!
Azure要拿來給不是自己用當然沒問題(我的心聲&&錢包的心身)
好啦,誰叫GCP提供了12個月以及300美金的試用哩XD....上網查查.Net Core也可以部署在GAE這個服務上(類似簡易版的App Service)
於是就申請入坑看看,結果,雖然GAE上的說明書寫得很清楚,但是,我看得很模糊阿.....我中文跟英文的理解能力太差了QQ....
光是把連接上Cloud Sql就花了我四天的時間,才真的連上去(公用IP的方式),所以我不得不打這邊文章來記錄
如果你剛好跟我遇到一樣的問題,希望你早點看到我這篇文章....
在使用GAE的時候,目前遇到了兩大問題
1. GAE跑Cloud Sql
如果使用Public IP無法正常連上,但是SSMS可以正常連上(應該這時候你會在連線設定=>新增自己的IP了吧)
這時候開始懷疑人生,開啟了Private IP來測試,疑,GAE可以使用資料庫了欸,好吧,能用就好<=我原本的想法
後來,因為問題二的關係,我又開始研究問題一了XD....
Private IP一定比較好,但我就是想要試試看Public IP連線壓,明明就說可以,為什麼連不上~~~
其實還是要用Private IP才是安全的喔!!
2. 使用了Authorize後,很容易驗證失敗,然後導回登入頁面
我在本機測試的時候,明明就很順,但是一放到GAE上後,登入成功=>點一個Authorize的網頁,就導回登入頁面了
如果是因為授權失敗,這樣子我直接輸入網址進去該Authorize的網頁,應該也會失敗才對,但是沒有,多用幾次就進去了...
我把相同的程式放到Azure上,很正常,放到其他Server的IIS,也是正常,就是GAE上不行
因為問題二的關係,不想脫坑,為了逃避現實,我才去繼續用問題一的,哈哈哈哈
牢騷完了,去正題吧!!
首先,在GCP申請帳號...設定專案...<=這邊如果不會....請先去試試看,不難的
申請好後,會有專案名稱,專案ID等等的
1. 建置CloudSql,這個很簡單,應該照著網頁做下去就可以了,想要多好的規格,就選多好的規格吧~~
2. 建置好後,可以先到連線設定,網路,設定你的IP,這樣子可以直接使用ssms連上去建立Database、Table等等的,這樣比較快
3. 啟用 Cloud SQL Admin API 啟用API
4. 總攬=>將連線名稱給記錄下來,這個在之後的app.yaml用的到
5. 將畫面切到VS裡面,在專案新增app.yaml
裡面內容為
runtime: aspnetcore
env: flex
beta_settings:
cloud_sql_instances: "sample-286901:asia-east1:samplesql=tcp:1433"
紅字就是上面的連線名稱
6. appsettings.json裡面
Server=cloudsql;User Id=sqlserver;Password=cJ8lrN9xHftDBux6;Database=Test
紅字的Server請固定為cloudsql,這樣GAE才連線的到
正式環境,這邊建議要加密比較好喔
7. Startup.cs 裡面注入連線字段,不懂得話...請上網查查相依性注入之類的~~
如果是自己用連線字串的話,就不用管這段了
public void ConfigureServices(IServiceCollection services) {
services.AddDbContext<MyContext>(o => o.UseSqlServer(Configuration.GetConnectionString("Database")));
}
8. 將網站傳送到GAE上
這邊就很簡單了,看你要手打指令上傳,或是用VS點點點上傳
我覺得這篇寫得很好
抱怨一下,GAE的部署真的很久很久很久~~~~~~~~~~~~~~~~~
9.試試看
沒意外應該可以把資料存入了
留言列表