建立 Amazon EC2 免費主機
Amazon Web Service 提供的許多服務項目,都包含了一年期的免費試用,實在是相當的慷慨。
反而向來很大方的 Google 在 Google Cloud Platform 所提供的免費試用卻僅有 60 天。
這篇要講的是 Amazon Elastic Compute Cloud (Amazon EC2)
以下來示範如何建立 EC2 的免費實例:
申請帳號
當然要開始免費試用亞馬遜雲端服務之前,必須要有一個 Amazon 的帳號。
可以到以下 AWS 免費方案的頁面,並「建立免費帳戶」
註冊流程大概是:
- Login Credentials 註冊確認(先填寫電郵、姓名與設定密碼)
- Contact Information 基本資料(填寫比較詳細的個人資訊)
- Payment Method 付款方式(必須綁定信用卡但暫時不會扣款)
- Identity Verification 身分認證(電話語音認證碼的驗證)
- Confirmation 完成驗證(到電子郵件收取確認信件)
這樣就完成帳號註冊了,登入準備進行下一個步驟。
0. 新增實例
首先從以下網址連結到 AWS 主控台,並且選擇 EC2 服務。
我們要新增一台虛擬主機,因此點選「Launch Instance」
其實不是很瞭解亞馬遜用的 Instance 實例 這個字,聽起來是有點深奧。
但是別怕,這個部落格就是喜歡看圖說故事:
1. Choose AMI 選擇亞馬遜系統映像
亞馬遜提供了許多選擇,包括自家的 Amazon Linux AMI
選定了系統映像,之後開機之後,就會預先包含了選定的作業系統
當然也還有許多選擇,如:
- Red Hat Enterprise Linux
- SUSE Linux Enterprise Server
- Ubuntu Server LTS
- Microsoft Windows Server
可以依照自己習慣選擇作業系統的版本
我這邊選擇了 Ubuntu 的映像
寫這篇文章的時候版本是
另外在網頁右上角還可以選擇伺服器的區域
整個 AWS 服務在世界各地有許多據點
本篇選定的主機是亞太區的東京主機
2. Choose Instance Type 選擇實例類別
這裡就是虛擬主機的效能大比拼了!
Amazon 提供了相當多不同用途、效能的選擇
並且搭配可以彈性擴充的特色讓客戶可以靈活運用
目前適用一年期免費方案的實例是 t2.micro
3. Configure Instance 設定安裝實例
設定新增實例的數量以及一些設定細節
這部份可以用預設值,直接進入下一步
4. Add Storage 配置儲存空間
系統預設提供了 8GB 的 Amazon Elastic Block Store (Amazon EBS)
提供用於 Amazon EC2 執行個體的持久性資料區塊級儲存磁碟區
免費試用的方案可以選擇 30GB 的 SSD 或磁帶儲存
5. Tag Instance 實例標籤
這邊也可以使用預設留空,跳過。
6. Configure Security Group 安全模組設定
在 EC2 中對於不同的實例可以搭配不同的安全設定
在這邊預設有用來連線到主機的 SSH 22 Port
如果要架設網站則會需要用到 HTTP 80 Port
在新增實例的步驟中,可以選擇「Create a new security group」
由「Add Rule」來新增所需要用到的 Port
或是也可以在完成新增實例後,到管理控制台編輯 Security Group
例如事後發現需要使用 Gmail 寄信的功能
就必須再新增一個 SMTPS 465 Port,Source 選 Anywhere
7. Review 檢查設定
到這邊 EC2 已經完成設定了
可以檢查一下剛剛設的參數
若沒問題就可以按下「Launch」開機
8. Key Pair 連線密鑰
Amazon EC2 主機必須要用特製的 Key Pair 來登入
上個步驟按下「Launch」後,如果是第一次新增實例
則會跳出 Create a new key pair 的視窗
此時為 key pair 取一個簡單的名字
按下「Download Key Pair」後則會自動下載一個 .pem
檔
9. Launching 正式啟動
到這邊就完成新增實例的設定精靈
不過還必須替虛擬機器指定一個位址
10. Allocate New Address
雖然前一陣子新聞報導 IPv4 的位址已經用光光
但是看來亞馬遜這個電商龍頭還是留了一手
我們從 AWS EC2 的控制台來取得 IP 位置
按下「Allocate New Address」
還是取得了一個 IPv4 的 IP 位址
11. Associate Address
取得了 IP 位址後還得要指定給虛擬主機
選擇剛取得的 IP 位址按「Actions」
選擇「Associate Address」(請見上圖)
按一下「Instance」的欄位讓它讀取(請見下圖)
接著會列出帳戶中所有 Instance
如果是第一次建立應該就只會有一個
選擇完畢後按下「Associate」就完成了
使用 SSH 連線到主機
完成 EC2 新增實例,將虛擬機器開機後
接下來則要使用 SSH 連線到主機進行後續安裝
本篇以 Mac 內建的終端機來示範:
使用 Mac 內建的終端機進行連線
打開 Mac 內建的終端機(Terminal)後
應該會是這樣的畫面 電腦名稱:~ 使用者名稱$
與一般 Linux 系統一樣在 後面輸入以下指令:
如果使用 Mac 將密鑰儲存在某個資料夾
並不是很確定該怎麼打路徑的時候
可以把密鑰檔「拖曳」到終端機的輸入位置放開
就會自動輸入包含檔名的整個路徑了
如若是放在 Mac 桌面就是 ~/Desktop/密鑰名稱.pem
跟在密鑰路徑後面的使用者名稱不是電腦的使用者名稱喔
而是當初所選的 Amazon AMI 的使用者名稱,如:
若選擇 Amazon Linux AMI
使用者名稱則是 ec2-user
若選擇 Ubuntu Server LTS
使用者名稱則是 ubuntu
如果不是很確定也沒有關係,這邊告訴大家怎麼查詢
我們先到 AWS EC2 的主控台,選擇「Instances」
在 Instances 選定主機後按「Connect」
這邊出現的訊息就會直接設定好使用這名稱與 IP 位址
只要複製貼上再修改密鑰檔的路徑即可
UNPROTECTED PRIVATE KEY FILE 問題
The authenticity of host ‘●●●.●●●.●●●.●●● (●●●.●●●.●●●.●●●)’ can’t be established.
ECDSA key fingerprint is SHA256:●●●●●●●●●●●●.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘●●●.●●●.●●●.●●●’ (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for ‘/Users/●●●/Desktop/●●●.pem’ are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key “/Users/●●●/Desktop/●●●.pem”: bad permissions
Permission denied (publickey).
初次使用 Key Pair 登入 EC2 可能會遇到這個警告
通常是因為這個鑰匙檔的權限太過於公開
不過其實剛剛上圖「Connect」訊息中就有提示
我們也可以直接使用終端機來處理這個問題
由上述指令將 .pem
檔改成只有使用者可以讀取的權限
應該就可以正常登入了,顯示畫面如下:
緊接著,就可以安裝 Apache、PHP、MySQL 等套件了。
使用的系統版本是位於 EC2 t2.micro 的虛擬主機下的 Ubuntu 14.04.2 LTS。成功連上線,就可以接著來安裝 Apache、PHP、MySQL 這個經典的 LAMP 開源架站組合包啦。
Step 1
由於系統剛安裝好,因此在安裝套件前,先更新最新的套件資訊。
Reading package lists… Done
Step 2
安裝 Apache 伺服器軟體
…
Do you want to continue? [Y/n] y
…
Starting web server apache2
Step 3
安裝 MySQL
…
Do you want to continue? [Y/n] y
設定安全性
Step 4
安裝 PHP
Step 5
修改路徑設定檔的內容,改變 index.php 的執行優先權。
將 index.php 順序往前移
Step 6
修改 Apache 設定檔
找到以下這段,並將內容修改如下:
重新啟動 Apache
到這邊 LAMP 開源架站組合包基本上已經安裝完成了。在下一個步驟會指定網頁資料夾,這邊可以先用 ftp 軟體或是用指令 mkdir
在 /home/ubuntu/ 路徑下的使用者資料夾中,建立一個網頁資料夾。由於筆者本身有使用 Virtual Hosts 的需求,並沒有將網頁資料夾放置於 /home/ubuntu/ 使用者目錄下,並保留預設的網頁目錄 /var/www/html 作為跳轉網頁,也就不需要繼續以下步驟了。
Step 7
將 Apache2 設為網頁資料夾 Owner 與 Group Owner 權限,這邊的「網頁資料夾」可以命名為自訂的名稱。
增加 www-data 的次要群組權限
將 www-data 設為最高的群組權限
更改資料夾權限
Step 8
修改 Apache 設定檔,指定伺服器網頁目錄
將 DocumentRoot 的預設網頁路徑
改成
重新啟動 Apache
完成
如果都準備好了,就可以開始安裝 WordPress 啦!
Step 1
首先可以到 WordPress 台灣正體中文網站 下載最新版本的 WordPress 安裝包,這邊建議下載 .tar.gz 的格式,之後可以透過終端機指令來解壓縮。
Step 2
使用 FTP 將剛剛下載的 WordPress 安裝包上傳至 EC2 的網頁資料夾(您要用 wget
也行),預設路徑應該是 /var/www/
這裡。
Step 3
使用終端機 SSH 連線到 EC2,切換 cd
至網頁資料夾路徑,輸入指令解壓縮 WordPress 安裝包:
本文撰寫時最新版本的 WordPress 為 4.6,若讀者下載不同版本,請自行修改 .tar.gz 前的檔名,也可以使用 Linux 的自動補齊(Completion)功能,先輸入指令或檔案的前幾個字母,然後按下 Tab 鍵後 Shell 就會自動把指令或是檔案名稱剩餘的部份補齊。
Step 4
解壓縮完成後,名為「wordpress」的資料夾就是整個 WordPress 的主目錄,在開始設定之前,我們必須先為 WordPress 建立一個資料庫,登入 phpMyAdmin 點選左側「新增」並且建立一個新的資料庫,可以隨意命名,如:wordpress。
Step 4
資料庫建立完成之後,開啟瀏覽器並連上 WordPress 的主目錄,網址應該就是:
請記得把 ipaddress 換成自己 EC2 的 IP 位址
Step 5
如果一切正常,就會看到 WordPress 的歡迎畫面, 點「衝吧!」開始初始化設定。
接下來要填寫基本的資料庫帳號資訊,資料庫名稱就是剛剛從 phpMyAdmin 建立的資料庫名稱,使用者名稱及密碼則是 phpMyAdmin 的帳密(如果您是用 phpMyAdmin 沒錯的話)
接下來應該會遇到無法寫入 wp-config.php 的錯誤,因為預設用 ubuntu 登入 FTP 的關係,整個主目錄資料夾的權限應該是屬於 ubuntu:ubuntu
,若是要從網頁端寫入則要改成 www-data:www-data
。不過這邊不用急著修改權限,只要用終端機編輯 vi
或是直接從 FTP 軟體上編輯 wp-config.php 這個檔案,把網頁上整段文字複製貼上即可。
Step 6
接著就要設定網站名稱以及後台的帳號密碼,也就是建立網站管理員的帳號,這些資料之後都還可以修改,也可以再新增其他的編輯帳號或是管理員帳號。
Step 7
完成。
使用剛剛設定的帳號密碼登入 WordPress
進入 WordPress 後台
Amazon EC2 Ubuntu 設定 Apache Virtual Hosts
對於架站者來說,如果只擁有一台主機但需要架設兩個以上的網站,那麼如何在同一個 IP(伺服器)上用不同的 Domain Name(網域名稱)架設多個網站?網路上某些教學是設定同 IP 但不同 Port,不過這是蠻爛的方法。因此本篇設定的重點就是以 Apache Virtual Host 的方式來對應多筆網域名稱,依照不同的網域名,提供不同的網頁內容。
*前情提要:本篇使用 EC2 虛擬主機以及 Ubuntu 作業系統,若使用不同配置可參考相關教學來修改對應的設定。
首先,要設定 Apache 的 Virtual Hosts 之前,當然伺服器要有安裝 Apache,如果沒有的話可以用 apt-get
指令來安裝:
第一步|建立網頁根目錄
由於目的是要在同個伺服器提供多個網頁,因此為不同的網域名稱建立個別的網頁資料夾。為了方便說明多個網域名稱的設定,這邊假設兩個網域名稱 aaa.com
以及 bbb.com
作為教學範例,而 Ubuntu 預設的網頁根目錄路徑為 /var/www/
,因此我們在這個目錄下建立兩個網頁資料夾:
第二步|設定根目錄權限
建立完資料夾後,預設擁有者就是 root 使用者(Ubuntu 預設的 root 使用者名稱就是 ubuntu),如果要使用不同的系統使用者來管理,可以透過以下的指令來變更權限,記得將 user
更換成自己的使用這名稱。
接著設定檔案的讀寫權限,確保網頁伺服器能正常讀寫網頁資料夾以及子目錄下的所有檔案。
第三步|建立 Virtual Host 檔案
我們使用 Apache 預設的 Virtual Hosts 設定檔來修改,將預設設定檔複製到相同資料夾並重新命名成目標網域名稱,這邊先以剛剛假設的 aaa.com 來示範:
接著使用 root 權限編輯新的設定檔:
設定檔原始的內容應該包含這段文字:
首先先在 ServerAdmin 後面填寫伺服器管理員的 Email 以免哪天收到信(本人註冊網域那麼久從來沒收過):
接著更改 DocumentRoot 後面的網頁根目錄路徑:
最後在 <VirtualHost *:80>
下方加入網域名稱設定,在 ServerName
後方填入原始的網域名稱,而 ServerAlias
則可以設定同網域的其他名稱,如加上 www 的版本:
修改完成後設定檔中的 VirtualHost 設定應該會是這樣:
儲存並關閉設定檔。
重複上述的步驟,複製第一個網域的設定檔來建立第二個網域的設定檔:
複製完成後同樣進入編輯模式:
依照上面的模式修改第二個設定檔:
儲存並關閉,兩個網域都設定完成了。
第四步|啟用 Virtual Host 檔案
使用 a2ensite
指令來啟用設定檔:
完成後重新啟動 Apache 服務,設定才會生效:
第五步|置入網頁檔案
完成網域設定後,可以將網頁檔案(如果已經做好了)放入第一步建立的網頁資料夾裡面。比如說在這個範例就是 /var/www/aaa.com/public_html
跟 /var/www/bbb.com/public_html
這兩個資料夾。
網頁檔案放置完成後,就打開瀏覽器上去測試看看吧!如果上述步驟都設定成功,伺服器應該就可以依不同的網域名稱進入的連線,指派對應的網頁資料夾。