【網站開發】初探Google Cloud Platform

  跟Azure比較起來,Google Cloud Platform的介面實在有夠陽春簡潔,對於工程師來說或許會比較喜歡這種清新的介面,但對初學者來說恐怕會覺得GCP超不友善,有太多必須花一點功夫才能研究透徹的細節。兩年前試用GCP時我便有此感,兩年後的現今……我還是覺得是這樣。唯一好處是,Azure的各項服務若提昇至收費層實在有夠貴,但GCP就比較便宜。當然這還是得看購買了什麼,如果選擇了超豪華虛擬機與超高規格配件的話,價格仍然是會非常嚇人的。

  在GCP上如何新增專案與設定帳單,這我就不多做介紹了,我想應該很簡單,我就從新增虛擬機開始說起。虛擬機是在Compute Engine裡面,不是App Engine裡面喔。

  GCP最大的優勢在於Google有一個資料中心是設在台灣彰化,所以身在台灣的我們若將虛擬機設在台灣,將可體驗遠勝Azure和AWS的速度。虛擬機的區域asia-east1-a、asia-east1-b和asia-east1-c都是台灣。由上圖可知,如果開設一個最低規格的虛擬機,大概要花5塊錢美金,換算至台幣就是150塊錢左右,相當便宜。當然,上面的OS是選擇Linux,若是選擇Windows Server,不僅記憶體要求大增,價格可就不便宜了。

  我以前曾使用過Ubuntu,所以對Ubuntu還算熟悉。但大部份的人大概都跟我一樣,安裝的是有GUI介面的Ubuntu。但虛擬機上的Linux,無論是Debian還是Ubuntu,最初都是純指令碼介面。我雖曾打算在虛擬機上安裝GUI介面,但遠端桌面一直登不進去,最終我還是放棄了……看來虛擬機跟我實際上在一台空電腦安裝Ubuntu還是不一樣。

https://cloud.google.com/free/docs/always-free-usage-limits

  順道一題,今年五月Google宣佈了終身免費方案,如果虛擬機等級f1-micro設在美國,前720小時是免費的。如此好康的事情,馬上令吝嗇的我義不容辭地從台灣跳槽到美國去。雖說虛擬機設在台灣是最快的,但根據我的試用結果,虛擬機設在美國也只是慢個幾毫秒,若非進行大型運算其實根本就沒差。

  當虛擬機架設完成後,使用者第二個步驟當然是想一探虛擬機的內容。在虛擬機管理介面內有個「SSH」按鈕,點了就可以直接打開WEB介面的SSH指令碼編輯畫面,這還真是GCP唯一最方便的功能。理論上有了指令碼介面,要安裝軟體或搬遷檔案,一切都不是問題。但對習慣於GUI介面的我們來說,想必無論如何都希望有個可拖拉的介面來上傳或下載的地方,這時就是用到FTP的時候了。

  提到FTP便會感受到Azure的美好,在Azure建好Web APP後,管理介面就直接告訴你FTP登入帳號與密碼。但在GCP預設只能以更高安全性的SFTP連上檔案系統,使用者可能會翻了管理介面半天還是找不到登入FTP的方法,要不是我翻閱了我以前寫過的文章,我搞不好又要在這裡困上半天了。

https://cloud.google.com/sdk/

  若要使用FileZilla或WinSCP之類軟體來上傳檔案,必須先產生使用者金鑰才能連線。要產生金鑰需先安裝Cloud SDK,安裝好Cloud SDK後打開就是一個黑色的終端機介面。

https://cloud.google.com/sdk/docs/quickstart-windows

  首次執行Cloud SDK需先進行一些初始化的步驟,具體來說便是鍵入gcloud init來設定專案名稱與地區。

https://cloud.google.com/sdk/gcloud/reference/compute/ssh

  再來需使用gcloud compute ssh 虛擬機名稱 –zone 地區,於本機電腦產生金鑰。金鑰預設會產生於「C:\Users\使用者名稱\.ssh」目錄下,如此一來便大功告成了。

  打開FTP軟體,連線類型選擇SFTP,位置輸入虛擬機的對外IP,使用者輸入Windows使用者名稱並導入金鑰檔案,便能連上虛擬機的檔案系統。順道一題,貌似GCP一個區域的對外IP只能兩個,超過就要再申請。對外IP可由GCP管理介面的「網路 > 外部IP」來預約,不過這裡面有個可怕的陷阱,如果對外IP預約但沒使用,就會被徵收費用,所以沒使用的外部IP就早早把它釋放掉,免得不知情的情況下帳單一直噴,實在太可怕了。

  回到FTP本身,當連上檔案系統後,就能對虛擬機內的「\home\使用者名稱」下的內容自由編輯了。欸,那我如果要編輯「\home\使用者名稱」以外目錄的檔案怎麼辦?由於Cloud SDK產生的金鑰只賦予使用者「\home\使用者名稱」下的權限,想編輯其他目錄的檔案就會一直遇到permission denied,看到都抓狂。除非將自身使用者提昇為Super User,否則沒有權限編輯「\home\使用者名稱」以外的檔案。可是我找了半天資料,就是找不到提昇為Super User的方法,最終只好作罷。如果非得要使用本機電腦產生的金鑰上傳檔案,又要將檔案放到「\home\使用者名稱」以外的地方,有個折衷的辦法,那就是先將檔案上傳到「\home\使用者名稱」,再打開GCP的SSH指令碼介面,透過sudo mv的方式搬移檔案。這也太麻煩了吧!

  所以,為了這permission denied的煩人問題,我最終找上bitnami,這就留待下篇文章說明。