以初學者的角度,來看待電腦教學這回事。

標籤: udemy

GCP VM執行個體使用PuTTY SSH登入教學

在「如何架出安全性較高的網站?」一文中,我有介紹了一門Udemy的非常讚的架站教學課程「The Perfect Nginx Server – Ubuntu Edition」,在這門課程中,因為作者和我們使用的平台,會有略為不同,所以這部份的門檻,就要靠自己去跨越。

使用SSH登入VPS

這個是第一個門檻,因為作者所示範的VPS環境是「Vultr」,但我使用的是「GCP」,所以首先就要解決使用SSH登入VPS的問題,當然不是說Vultr不好,但如果受眾是台灣人的網站或服務,網站還是架在當地,連接的速度真的差很多,像Vultr的主機,離我們最近的是韓國、日本、新加坡,所以其實也都不怎麼合適。

但你還是可以當成練習來使用,作者也都有提供100美元(好像)的試用額度,

而我為什麼選擇GCP,因為他是Google,而且場地在彰化,最重要的是,大家都跳電斷網時,他們不會跳電,網路也不會中斷。

在GCP的虛擬機器管理頁面中,我們可以透過瀏覽器來開啟SSH連線,如下圖:

這樣雖然可以,但連線的方式太慢,這適合用在最終無法連進虛擬機器時的解決方式,而我們平常最理想的連接方式,還是使用「PuTTY」這個小工具程式來連線,連接速度才快。

現在在網站上找到的相關資訊,因為GCP一直在改版,所以這些文章其實都有點不適用了,不僅畫面不同,連能不能跟著做操作完都有問題。

所以現在2022年,我針對目前可以成功的方式,重新講解一次要怎麼做。

首先,先去下載「PuTTY」,在「PuTTY下載」頁面中,根據自己的作業系統平台,點擊該項目,例如我是使用Windows 11,我就點「64-bit x86」這個。

MSI (‘Windows Installer’) 64-bit x86 – putty-64bit-0.76-installer.msi

下載後再把它安裝好。

PuTTY Key Generator

首先,我們會先使用PuTTY Key Generator,也就是「PtTTYgen」這個工具,來產生金鑰檔案,如下圖:

Step 1. 開啟程式之後,是長這樣,維持預設值之後,請直接點擊〔Generate〕,如下圖:

在產生的這段時間,請使用滑鼠游標在程式視窗範圍內移動,程式應該是利用滑鼠移動的位置,來當做亂數的種子,所以你不動滑鼠的話,是沒辦法運算完的。整個產生的時間大約1、2秒鐘而已,要視自己電腦的配備而定。

Step 2. 產生完了之後,畫面是長這個樣子,如下圖:

Step 3. 在這個畫面中,我們要修正「Key comment」這個資訊,請修改成你使用GCP的帳戶名稱,例如我是用我的Google帳號「changyang319@gmail.com」來使用GCP服務,所以我的「key comment」就是輸入「changyang319@gmail.com」,如下圖:

Step 4. 輸入完畢後,請點擊〔Save private key〕,並在警告對話盒「Are you sure you want to save this key without a passphrase to protect it ?」中點擊〔是〕,然後找個位置存放這個private key的金鑰檔案,如下圖:

Step 5. 最後,把最上方「Key」裡的public key內容,整個複製下來,這個內容有點長,要確實的圈選整段內容,如下圖:

這個Public Key,我們會在下一段內容用到。

Google Cloud Platform (GCP)後台

Step 1. 來到管理後台,請切換到你的「VM執行個體」頁面,並點擊你想要登入的「執行個體」,以我這邊來說,我是想要設定「instance-uwsgi」這部vm,如下圖:

※ 請注意到這個VM項目後方的「外部IP」資訊,這項資訊會在下一段用到。

Step 2. 請確定VM在「停止」的狀態之下,再點擊上方的「編輯」,如下圖:

(這張圖下方的狀態是「執行中」,這樣是不行的,必需是已停止才可以,因為我實在懶的再抓圖了…)

Step 3. 拉動卷軸,移到「安全殼層金鑰」的部份,點擊「+新增項目」,如下圖:

Step 4. 接著在這邊貼上在上一段所複製的Public金鑰,如下圖:

貼上之後,再移至最下方,並點擊〔儲存〕。

儲存完成後,再來到「安全殼層金鑰」來看,就可以看到有一個以你Email名稱的鍵值在這邊,如下圖:

做到這邊,就代表已經完成GCP的設定。請複製好前面提到的「外部IP」位址,我們會在下一段用到。

PuTTY

最後,就要來做個總結了,打開「PuTTY」連線程式,並在左方的「Category」中,點選「Connection \ SSH \ Auth」,並在下方的「Private key file for authentication」中,選取你使用PuTTYgen產生出來的金鑰,並存下來的private key檔案位置,如下圖:

接著點擊「Category」中的「Session」,在「Host Name」中,填入「user_name@外部IP」,以我的例子來說,就是「changyang319@35.194.202.101」,如下圖:

都填好之後,你可以在「Saved Sessions」填入一個名稱,然後點擊右方的〔Save〕,來把設定值存起來,像我就存了一個叫「gcp_uwsgi」的設定檔。

最後點擊下方的〔Open〕,初次打開時,會出現「PuTTY Security Alert」的對話盒,請點擊〔Accept〕,如下圖:

如果設定成功的話,就會直接連接進入GCP的VM裡,如下圖:

整個流程就大概是這樣。

如何架出安全性較高的網站?

架站容易維護難,網路上有非常多什麼10分鐘架站教學、快速架站教學,說真的,那個看看就好,你以為架好之後,就能太平盛事到永久嗎?一知半懂的去架站,真的是一件很危險的事。

我這個業餘研究架站的人,至少超過十年以上,以前都是用一些免費架站工具像「Kloxo」及「ZPanel」,後來這幾個工具也相繼沒有維護了,「免費」就是這樣,沒有營利,怎麼會有人去維護呢?

「免費」的最貴,這個是真理,我用免費的工具全自動架出來的網站,先不論「效率」的問題,最嚴重的是很容易被「駭」,駭客們進出我的網站,根本就跟上廁所一樣簡單,我看大便都還沒出來,就已經把有害程式拉進我的網站了。

每次等你發現了,往往都來不及了,最後都會導致我的網站被Google Chrome當成有害網域。

所以我一直到2019年4月份時,才開始花錢訂閱了「Plesk架站工具」,之後就真的沒再發生過被植入有害程式的事件,下圖可以看到我的訂閱紀錄,我是真的有買,不是來業配的。

就這樣訂閱了快三年的時候,又開始想要省下這筆錢,想要自己架站,所以就趁著特價的時候,花了230元買了Udemy的一個課程「The Perfect Nginx Server – Ubuntu Edition」。

這個我也是真的是有買,但你如果透過這個連結購買的話,我可以賺一點「微薄」的分潤金,而當時空前絕後的特價230元,現在很難再看到了。

沒想到買了之後,就把每個月Plesk的USD$ 11.55給省下來了,跟著教學所架出來的網站,不僅安全性高,效率也高,之前要VM四核才跑的起來的網站,現在只要一核心的CPU就非常足夠了。

我要是早點學會這個課程的知識,我就不會在去年時,又再跟Google續約了3年的「2核心、7.5GB記憶體」的承諾使用折扣。

Nginx Server 課程介紹

在看過課程「The Perfect Nginx Server – Ubuntu Edition」之前的我,原本以為「手動」架站很麻煩,所以我之前才只能一直依賴這些架站工具。

但課程作者一直鼓勵大家要用「手動」的方式來架站,實際跟著操作之後才發現到,就如作者所說,用命令列的方式來架站,真的一點都不難。

實際去操作之後才發現到,我們平常用的架站工具,最終也是用來產生這些設定檔而已。

然後課程使用的Ubuntu來架Nginx Web Server,而VPS是使用國外一家叫「VULTR」來做示範。

雖然跟我在使用的CentOS不同,而且我VPS是使用「Google Cloud Platform (GCP)」,但還好影響不大,我都能順利的舉一反三,轉換過去,相信大家應該也都能轉換到自己的慣用服務。

接著我簡單的介紹一下這個課程所包括的內容。

作者講的是比較慢的英文,我雖然英聽很差,只聽的懂大概,但看著他操作,也大致上知道他在說些什麼,這也是影片教學的好處,並非都只要中文不可。

要不然230元的英文課程,在中文的課程找的到嗎?

Linux Essential Skills

課程一開始,會有一節「Linux Essential Skills」,先教一些之後課程會用到的基本Linux指令。

這節我是直接跳過,因為我Linux之前已經有接觸過,只要你會用 cd、mkdir、rm、mv、cp、chmod、chown,另外再會一種Text Editor,就大致上沒問題了。

Text Editor課程使用的是「nano」,而我慣用的Text Editor是「vi」。

如果你完全沒接觸過Linux,這節就不要跳過,都不會的話,甚至你可能沒辦法架站。

Ubuntu、Nginx、MariaDB及PHP的安裝與設定

安裝Ubuntu都很簡單,難是難在設定,然後要設定哪些東西。這邊會教你設定出一台「安全」的Server,像是Server的更新、防火牆開啟,打開Fail2Ban,然後用SSH Key來做登入。

在進行完作業系統的設定之後,就會開始安裝及最佳化Nginx、MariaDB、PHP7.4。

設定單一及多個網站

接著最核心的架站教學,會教你「手動」的設定nginx的設定檔、新增MariaDB資料庫,了解之後,無論是靜態html,或Wordpress這類的網站,都沒有問題。

也能自己自訂Server Block來自訂多個網站,也會教你用WPCLI這種命令列工具,來安裝Wordpress。

然後會有多個章節,提供多種保護的機制,用來保護我們的網站,只要照著操作,就能架出非常安全的網站。

SSL憑證設定

對於想要架https的網站,在這個章節時,就能很快學會,除了第一次的申請憑證,也包括日後的自動更新憑證,操作都非常的簡單。

WordPress的備份與還原

這個非常有用的章節,他會分別教你用外掛及用命令列的方式,來備份及還原網站或資料庫。

富盈數據「網站代管服務」終止

其實說來真的很巧,我在2021年12月中,學會了這個架站的知識,沒想到在12月底時,在「富盈數據」的「網站代管服務」居然要終止了,想當然爾,我當然是拉回來自己管理了。

之前會讓富盈管理,是因為架站容易管理難,在申請了要自己管理後,富盈數據排定了備份的日期,按約定日把備份好的網站檔案及資料庫檔交給了我。

設定好了DNS、Nginx、匯入DB、SSL憑證,很快的我就把網站給搞定了。

學習程式語言必備的好站Udemy

Udemy 是個線上教學的影音銷售網站,上面有許許多多來自世界各地作者所製作的課程,且大多數的平台都有其對應的App可以使用,內容絕大多數都是以「英文」為主,如果你是想要學習「程式語言」的話,這個網站千萬不錯過。

有人也許會因為「全英文課程」而不想使用Udemy,但我要溝通一個概念,既然你想要學習的是「程式語言」,你就已經逃不了「英文」了,所以不要去畏懼它,實際上也沒那麼可怕,因為你是「看影片」來操作,作者他們只是說一些簡單的「這個要這樣」、「那個要怎樣」…,都是一些簡單的對話,你就是「跟著操作」就好了,並不困難。

我2017年11月時,開始購買「Udemy」的課程,如下圖:

之後,也陸陸續續購買了非常多的課程,如下圖:

因此,由我來推廣Udemy,應該是有那麼一丁點公信力吧。

之所以會陸續購買課程的原因,除了內容很優之外,就是價格公道,而且購買的程式不滿意,30天內可以退款,你可以看到我第一張圖,上面我就曾經退了一門有關「GCP」的課程,當時購買了之後,因為我英文也不是很好,而這位作者的口音很怪,加上他大量的用說話來講解課程的內容,導致我鴨子聽雷,所以把它給退貨了,Udemy也不囉嗦,就直接退費,所以在這邊購買課程,完全沒有風險。

如何選擇課程?

Udemy是個國外的網站,因此裡面的課程絕大部份都是以英文為主,當然也是有台灣人在上面開課程,可能因為受眾較少,所以價格也較高,也很少參加特價的活動。

因此,英文的課程就會比較熱門,所以我們在選擇課程時,通常就是選定一個想要學習的標的,例如 Android、iOS、Java、Python…等等,然後再從條列出來的清單中,選擇評價數量最高最好的前幾名,通常這些課程,都代表了有一定的品質。

而在價格上,因為Udemy經常的在特價,所以價格只要在300~400元之間,都可以直接購買,價格最低不會低過10美元,也就是大約300元台幣,平常一般的特價約會在600~700元台幣左右。

如果一時等不到最便宜的課程,我會建議你先買一門約600左右的課程,其餘想買的課程就等它做特價再買。

朋友啊~作者錄製幾十個小時的課程,製作了大量的簡報,彙整了一堆參考資料,然後賣幾百元,比市面上買書還便宜,真的是佛心來著,要是我的話,一定沒辦法。

另外你想等有沒有低於10美元,我想是不會等的到,我使用這麼多年以來,從來沒看到有這個價格過,但有些課程會用送的,這個可以找看看。

推薦不錯的課程

如果一時之間你不曉得如何選擇,在我所有購買的課程中,裡面雖然也是有不少我不是很滿意的,但我很推薦一位叫「Dr. Angela Yu」所製作的課程,她主要是在教Apple的iOS Programming,你可以看到她這個課程「4.8 顆星 (38081 個評等)、138638 名學生註冊」,就可以知道有多麼暢銷,以及受到多少人的肯定,如下:

iOS 13 & Swift 5 – The Complete iOS App Development Bootcamp

另外,她也有網頁前後端程式開發的課程,如下:

The Complete 2020 Web Development Bootcamp

這位作者講英文的速度適中不會很快,且沒有口音的問題,且有一個工作室在製作這些教學的課程,每一個課程的內容都相當的豐富,以「Web Development」的課程來說,就包括了前後端許許多多的內容,如下圖:

總共53.5小時的課程,你連續聽兩天兩夜都看不完,光這個內容量就可以說是超值。

但光是內容量多還不是我推薦給大家的原因,錄一堆垃圾內容誰不會,最主要的還是「內容品質」。

首先,她在解說一個名詞時,不會一直的說話來講解,她會製作一個專業的簡報檔,一步一步的說明這個技術是什麼,是怎麼運作的,如下圖,她就是在解釋什麼是「Internet」。

光這個絕大多數的作者就辦不到了。

再來,她的課程中,她都會製作我們隨時可以參考的圖文資料pdf檔,可以讓我們印出來貼在牆上,隨時可以參考,像下圖,就是在教「Git」時,告訴我們每個指令在做些什麼事情。

你說是不是太用心了?

只有這樣嗎?還有!

在每個課程中,都會有這樣的資源清單(Course Resources List),每一個章節會用到的網站、工具、圖表參考資料,都會彙整在這邊。

我個人是比較希望她也可以發行Android的相關課程,但很可惜的她並沒有製作Android的課程。

另外,如果想學Java的話,則可以考慮「Tim Buchalka」的這個課程,擁有「4.6顆星 (108479 個評等)、448911 名學生註冊」,更是個狠角色,如下:

Java Programming Masterclass for Software Developers

Powered by WordPress & Theme by Anders Norén