今天我們要來介紹如何在 GCP 上建立 VM 並佈署我們的 API 程式。
首先點選功能選的 Compute Engine -> VM 執行個體。第一次進到這個頁面會詢問我們是否要啟用這個 API,點選啟用,之後之後進到 Compute Engine 的主頁。(啟用 API 會花一點時間,啟用完畢之後就很快了)
接著在 "VM 執行個體" 分頁下點選 "建立執行個體"
接著要設定我們的 VM。以下列出不是使用預設設定的區塊。
設定完之後,點選建立,再等它跑一下,我們的 VM 就建好了。GCP 會把我們導向 VM 列表的頁面,我們可以在這邊看到所有 VM 的資訊。
點選 "連線" 底下的 SSH 下拉選單,可以直接用瀏覽器開一個 SSH terminal 操作 VM
當然也可以用第三方軟體搭配剛剛設定的 SSH key 連到這個 VM
GCP 的 VM 預設會使用浮動的外部 IP,可以參考這篇文章把 VM 的 IP 設為固定。
如果之後沒有要用了,記得把這個固定 IP 釋放掉,否則會持續扣錢喔~
佈署程式常見的方法有
筆者這裡選擇最簡單的方法 3。
首先,我們必須在 VM 上安裝需要的軟體
sudo yum install git
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-5.0
接著,建立一個放我們 API 專案的資料夾sudo mkdir /ironman
sudo mkdir /ironman/dotnet_api
再從 git 上 clone 原始碼 cd /ironman/dotnet_api # 跳到 dotnet_api 資料夾
sudo git clone https://github.com/eric-yijuin-lin/IThomeIronman.git
在 build 專案之前,我們先把之前的 UserServiceWithFile 還原成 UserService(寫死的 List)省去處理檔案路徑的麻煩。可以在程式進版控之前先改,或者 clone 下來之後在 VM 上改,如果要在 VM 上改可以參考以下步驟:
sudo vi /ironman/dotnet_api/IThomeIronman/Ithome_2021_API/Startup.cs
i
進入編輯模式(底下會出現 -- INSERT -- 字樣)services.AddScoped<IUserCRUD, UserService>();
Esc
離開編輯模式,然後輸入 :wq
+ Enter
完成編輯Esc
離開編輯模式,然後輸入 :q!
+ Enter
放棄編輯最後,輸入下面這 「一行」 指令,就能看到我們的 API 程式跑起來了。
sudo dotnet run --urls="https://0.0.0.0:443" --project /ironman/dotnet_api/IThomeIronman/Ithome_2021_API/Ithome_2021_API.csproj
上面指令中 --url 參數指定監聽 443 port 的 https 連線, --project 參數告訴 .NET SDK 要 build + 執行哪個專案。這個指令不是很好的做法,它只是暫時測試用,之後我們會再修改佈署相關的工作。
回到 GCP 的 VM 列表,複製外部 IP
然後到瀏覽器輸入 https://外部IP/api/User 就能看到我們的 API Server 已經可以讓外部連線!
不過由於 dotnet 內建的 SSL 憑證是開發者憑證,瀏覽器不會信任它所以會跳出警告。程式自己寫的,可以安心的點選進階 -> 仍要前往。
今天我們用了滿多偷懶的方式,目的是用最簡單的方法把 API 程式跑起來,明天我們將用比較正式的方法對這個流程做修改