最近在重新複習 Linux 的基礎操作和架站,還有研究 Amazon 的雲端服務 Amazon Web Service(AWS),買了《AWS 雲端企業實戰聖經》這本書來看,雖然有點越級打怪的感覺,不過收穫還是不少,AWS 一開始會讓人感覺門檻高很複雜不好學,不過他的功能不僅很強大也很有彈性,就算只是拿來架架個人的小網站或是測試主機、和傳統的解決方案比起來價錢也還是很划算,而且是以用多少算多少的方式計費。不想用了的話關掉就好,不會多花半毛錢。
藉著這次機會,我把原本要自己購買網域名稱,架設部落格伺服器主機的計畫直接搬上了 AWS,目前正在內部測試中,希望最近就可以公開和大家見面,同樣的,為了方便和大家分享討論,同時也是避免自己忘記,我也決定將一些架設作業的過程和心得簡單整理出來,希望大家會喜歡。
要架網站之前要先申請一個自己的網域名稱、同時也可以申請一個 Google Apps 服務,這樣之後就可以用自己的網域名稱使用多種 Google 的服務,包括不需要再自己架郵件伺服器,也可以透過 Gmail 用自己的網域名稱和自訂的電子郵件帳號地址收發信件。Google Apps 有提供新申請的使用者代辦網域名稱的服務,網域名稱新購和續約的價格目前都是每年 10 美元,有 eNom 和 GoDaddy 兩家代管供應商可以選擇。使用信用卡搭配 Google Checkout 付款,申請 Google Apps 的部份是免費的,另有功能更多更強大的商用方案可以選擇。
▲ 申請 Google Apps 並購買網域名稱。
透過 Google 代辦購買的網域名稱和 Google Apps 各項服務的對應會預先設定好,如果是透過其他管道申請購買或是使用現有的網域名稱,則需要自行設定對應。
如果還不想花錢購買網域名稱,也可以選擇申請使用 co.cc 的免費網域名稱服務。
有了網域名稱和 Google Apps 以後,再來就是到 AWS 的網站申請 Elastic Compute Cloud(EC2)服務了,AWS 的服務必須使用 Amazon 的帳號登入,如果還沒有帳號的話要先申請,另外要使用 AWS 的服務必須提供信用卡資料。
▲ AWS 的首頁。
▲ AWS 的登入畫面,如果已經有 Amazon 帳號的話可以直接登入。
第一次使用 EC2 服務的時候會先進行電話認證,系統會撥打一通語音電話過來,聽完語音說明以後在電話上直接輸入認證網頁畫面上顯示的數字驗證碼,就可以完成驗證程序開始使用,目前 AWS 有提供新客戶第一年可以在一定的限制內免費使用的方案,EC2 的免費方案限制對於一般個人小網站或是測試用途的主機來說還滿夠用的,就算不小心超量,只要不是去開到什麽很貴的功能忘記關掉,用多少算多少的價錢也是很划算的。
早期 AWS 並沒有官方的圖形化介面管理工具,只能用官方的命令列工具或是其他第 3 方工具操作,目前官方已經有提供 AWS Management Console 網頁介面,一般常用的功能都可以很方便的透過瀏覽器使用。
▲ AWS Management Console 的主畫面。
要開一台 EC2 的虛擬機器,首先必須先選擇服務的地區。AWS 的服務大都有分區的概念,不同的地區是不能直接互通的,一般的作法是選擇離自己距離近速度快的地區、地區選好以後再來是選機器映像檔(Amazon Machine Image、AMI),有多種作業系統的公開現成映像檔可以選擇、包括各個發行版的 Linux 和 Windows、有些映像檔需要另外付費才能使用,如果有需要也可以自行包裝製作映像檔再上傳使用,Ubuntu 官方網站已經將所有包裝好的映像檔整理列出,並附上連結,可以很方便的選擇需要的映像檔建立新的虛擬機器。
▲ 虛擬機器的管理設定畫面。
▲ 各式各樣多種不同的映像檔。
▲ Ubuntu 官方網站上整理好的映象檔列表。
選擇映像檔的時候需要注意的是,必須和要建立的機器在同一個地區內,另外也必須要選擇 ebs 類型的映像檔,將資料儲存在搭配 EC2 使用的非揮發性儲存服務 Elastic Block Store(EBS)上,如果是選擇 instance-store 類型的映像檔,資料是揮發性的,只要機器關機那裡面的資料都會消失不見,機器等級的部份,AWS 提供了多種不同的機器可以選擇,如果只想先試試免費方案的話,只能選擇使用入門級的 t1.micro 主機搭配 Linux / Unix 作業系統,如果開了其他等級的機器那還是要收費的,另外 t1.micro 主機只支援 32 位元的作業系統,所以在前面選擇映像檔的時候,不能選擇 64 位元的作業系統,不然會變成不能選擇 t1.micro 主機。
第一次建立虛擬機器的時候,系統會要求產生一組 ssh 登入用的認證金鑰,務必要依照指示產生金鑰並將下載下來的金鑰檔案保管好,檔案只會產生一次也只能下載一次,如果遺失是不能補發的,機器建立後也無法更改對應的金鑰,未來如果開新的機器可以選擇使用原有的金鑰或是產生新的金鑰,為了安全起見很多虛擬機器都必需要用金鑰檔案登入,如果沒有金鑰那就會面臨機器開了卻沒辦法登入的窘境。
因為 AWS 的機器從 DHCP 取得的 IP 是會變動的,如果把網域名稱對應到這個 IP 上並不好用,這個時候就要先向 AWS 索取一組 Elastic IP(EIP),然後把它對應到主機上,之後不管主機上的 IP 怎麼變,透過這個 IP 都能自動的轉過去,EIP 一般來說是免費的,但是注意不要拿了 EIP 卻放著不用不對應到任何主機,不然每滿 1 小時都要額外收費,更改對應的次數太多也會收費,
▲ EIP 的配發和管理設定畫面。
機器開起來以後記得先設定一下機器所在安全群組的防火牆、然後就可以透過 ssh 連線登入了,像在 Ubuntu 要登入 AWS 上的 Ubuntu 主機可以在終端機下這樣的指令:
ssh -i <主機對應的金鑰檔案> ubuntu@<主機的網域名稱或 IP 位址>
登入的時候必須指定使用主機對應的金鑰檔案、使用者名稱和主機的網域名稱或 IP 位址,Ubuntu 的主機必須使用 “ubuntu” 使用者名稱登入,不能使用 “root”。
▲ 安全群組的防火牆設定。
▲ 主機的登入畫面。
登入以後就可以開始安裝想要的軟體和服務了,和操作一般的機器沒什麼不一樣,以 Ubuntu 10.04 LTS Server 架設 WordPress 部落格為例,可以下這樣的指令:
安裝 Apache、PHP 和 MySQL、並設定 MySQL 資料庫 root 帳號的密碼:
sudo tasksel install lamp-server
修改 Apache 網頁伺服器設定檔、完成後重開 Apache 讓設定生效:
sudo vim /etc/apache2/apache2.conf
sudo vim //etc/apache2/sites-available/default
sudo /etc/init.d/apache2 restart
登入 MySQL,建立給 WordPress 使用的資料庫:
mysql -u root -p
CREATE DATABASE <要建立的資料庫名稱>;
GRANT ALL PRIVILEGES ON <剛建立的資料庫名稱>.* TO <建立給WordPresss操作資料庫使用的帳號名稱> IDENTIFIED BY <新帳號的密碼>;
FLUSH PRIVILEGES;
EXIT
下載 WordPress 並解壓縮安裝到網頁伺服器的根目錄,刪除原本預設的測試用首頁:
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
sudo cp ./wordpress/* -r /var/www
sudo rm /var/www/index.html
修改 WordPress 的設定檔、指定資料庫的位置和設定操作資料庫的帳號密碼:
sudo vim /var/www/wp-config.php
全部弄好以後,就可以打開瀏覽器連到主機上看看效果了。
▲ 新家內部測試中 XD
參考資料:
Google Apps
Amazon Web Service(AWS)
Ubuntu
鳥哥的Linux 私房菜
AWS 雲端企業實戰聖經