MySQL和Ghost可能不會在這個環節裝,這邊只會描述如何做EC2的相關設定

EC2 (Elastic Cloud Computing)是AWS最主要的雲端運算服務,我們可以租一台虛擬機器然後跑我們的Ghost server。

啟一台EC2的第一個步驟自然是先選一個OS,那這邊我們先停一下!!!

我想我們需要考慮幾件事情才能開始啟一台EC2,我先列出以下幾個需要先考慮到的地方,這樣在選擇spec的時候會比較有方向

  • AMI: Ghost要求的作業系統
  • Instance Type: 機器性能(幾顆vCPU、多少記憶體、幾個GPU等設定)
  • EBS: 硬碟大小與性能(SSD或HDD、容量大小等設定)
  • Security Group: 我們要讓哪些traffic可以進出(在設定VPC時可以先做)

當然,百聞不如一見,先看影片有個大致上的了解,肯定會比看文章好上一萬倍。請參考這部影片,大家一定會有一個大概的輪廓。

選擇AMI

根據Ghost的installation guide,我們必須先看Ghost的depedency來安裝相應的OS,所以並不是選自己喜歡的OS以免之後踩坑。那因為我只想讓這一台機器只用來做Ghost的application,也暫時沒有想研究不同的版本,因此先不選用container的方式去安裝,或許以後會研究哪個版本比較穩定。而且我並不是要拿ghost做local的開發,因此也不選用Local Install與Install from Source。那最後我選了一個從Ubuntu安裝的方式,畢竟.........

來源自: https://me.me/i/do-you-know-ec4dfd48c3aa402095fe4bf2689f08e9

上面的梗圖是開玩笑的我沒有想引戰的意思QQ,但是我認為以一個blogging server而言,Ubuntu的性能已經足夠。或許未來流量變多的時候,我可以研究不同的服務跟系統搭配Ghost。

選擇Instance Type

這一個部分是在選擇你的機器需要多少的硬體資源, 那麼在這裡各位不妨先想想看這一個server會要做哪些事情。 如果配置跟我一樣是Database+Web server,那麼我們或許需要比較大的記憶體,給多一點資源讓MySQL做查詢。

當我們興高采烈地選好AMI,進入到選擇Instance Types的時候,可能會被琳瑯滿目的Instance Type震驚到不知道該選哪一種。這個時候我們可以參考AWS的文件,他會告訴我們針對哪一種服務適合使用哪一些Indtance Types。那就我們準備架起來的blog server而言,T2 Class是比較適合的類型,價格便宜,Ghost日常的query查詢簡單,因此也不需要超多記憶體。

這個地方我選擇使用t2.medium,我知道這不是一台效能強勁的機器,但是我想就網站的初期而言這樣子的資源應該是夠的。如果還是不夠,我們還是可以中途更改Instance Type,改成更多記憶體和vCPU的t2.large或是t2.xlarge

但是如果想要中途換Instance Type,就需要先把EC2 Instance先停下來才能改,可能會有一絲絲的不方便。

選擇EBS

EBS(Elastic Block Store)其實就是EC2的硬碟服務。

我們可以選擇某個file system要用哪種硬碟來存,或是某個硬碟需要多大的容量,在EBS中都可以做選擇。EBS基本上分成SSD和HDD,其中兩種class其中又有數個種類,例如HDD中的Throughput Optimized st1或是Cold HDD sc1,SSD中的General Purpose gp2, Provisioned I/O io2。各種適合的任務可以參考文件

但基本上General Idea就是,如果是拿來存放大型資料並且以低價格為前提,HDD較為合適。如果以查詢並且低延遲存取來看,SSD會更合適。

就以目前的情況來看,我們希望在存取網頁時愈快愈好,尤其實在沒有設置CDN(CloudFront)的情況下,因此我選擇gp2容量16G。之所以不選擇效能更好的io2,依然還是以價格做考量,以一個小規模網站而言,我認為gp2是沒問題的。

如果我們還需要增加容量或是更換EBS Types,我們都可以在AWS Console裡面改,甚至不需要把EC2 Instance停下來。這樣子可以輕易做到Vertical Scaling,是很棒的事情。

在EBS Volume下面點選Modify Volume即可做出更動

選擇Security Group與EC2 Key Pair

Security Group如果在VPC的部分就已經先設定好了的話,在創建EC2的環節中,我們就可以在Configure Security Group這邊選擇Select an existing security group,然後選出自己之前創過的Security Group。

創建Security Group的部分,這邊就先不詳細講了,可以參照之前設定VPC的部分。基本上我們希望保留自己的Public IP藉由ssh用的port 22進入EC2,而且讓所有IP都能進入https用的port 443。

接下來是選擇EC2 Key Pair,這是一對機器要使用的公私鑰。如果已經跟機器綁定了EC2 Key Pair,公鑰會在EC2中,私鑰交由user自己保管。請記住這個Key Pair只會被下載一次,如果不小心不見了,只能用EC2 Console右上角的Connect字樣來做連線。

當然也可以用打帳號密碼的方式連線,但也必須在第一次使用Key Pair進去連線時才能改ssh_config,不過這樣可能有安全風險,要考慮過後再使用這種方法。

測試

目前EC2的相關設定也已經完成,接下來就可以用ssh連進去看看。

  1. 首先先把下載下來的key pair保存好
  2. chmod 400 this_is_key_pair.pem只讓他可被下載下來的user可讀(如果是用Windows連進EC2的話則不用做這個步驟)
  3. ssh <ec2_ip> -l<user_name> -i <key_pair_pth>

如果成功進入就算是大功告成,若無法的話,多半問題會出在Security Group或是Network ACL,可以多加檢查這個環節。

我啟了人生中第一台EC2,大概就是這個表情 Thank you Jeff, very cool!!!

Steps


  1. Ghost介紹以及架構解說
  2. 在Route53註冊域名(Domain Name)與架設VPC(Virtual Private Cloud)
  3. 啟EC2
  4. 設定Route 53 Hosted Zone與Elastic IP與安裝Ghost
  5. 用Health Check + SNS建立警告系統與使用Lifecycle Manager定期創造Snapshot

Widget is loading comments...