網站架設-使用AWS雲端主機

目錄

-->

關於EC2

什麼是AWS?

Amazon Web Services ( 簡稱:AWS) ,主要特色是依照需求彈性提供雲端的計 算資源和服務,並採用即付即用的計價方式,與台灣各大提供原端主機的公司 比起來,費用相對便宜且穩定。在 AWS 上建立、配置、保護和執行伺服器, 就像坐在伺服器前面操作一樣。使用 AWS 這個雲端計算,我們就可以不需要自己準備電腦來架設主機,讓我們開發的伺服器可以更快上線。

AWS 提供的眾多服務,可以做到快速遷移,降低成本和擴展應用程式,提供的 服務如下:
  • 計算與聯網服務
  • 儲存和內容傳輸服務
  • 安全和身份服務
  • 資料庫服務
  • 分析服務
  • 應用程式服務
  • 管理工具

AWS 提供的多種計算與網路服務主要可以讓我們配置虛擬伺服器、設定防火 牆、配置 Internet 存取、分配和路由 IP 位址(也有提供固定 IP 服務),當你 的需求增加時(如 CPU 運算速度、硬碟容量、網路流量等等),可以彈性的不 斷擴充這些需求。

AWS 提供的計算、網路服務、儲存、資料庫和應用程式服務可以互相結合使用, 用來符合在不同的情況下建立我們需要的雲端服務。

AWS 的服務,列出部分如下:
Amazon EC2在 AWS 雲中提供虛擬伺服器。
Amazon VPC提供針對虛擬伺服器的獨立虛擬網絡。
Elastic Load Balancing在一組虛擬伺服器之間分配網路流量。
Auto Scaling根據需求的變化自動擴展虛擬伺服器組。
Amazon Route 53將流量路由到資源(如虛擬伺服器或負載均衡器)的域名。
AWS Lambda在Amazon EC2的虛擬伺服器上運作代碼以響應事件。
Amazon ECS在Amazon EC2 的虛擬伺服器上提供 Docker 容器。

AWS 可以用來做什麼?

AWS 號稱可以讓我們更輕鬆的建構和管理網站和應用程式,以下是一些常見 AWS 用途:
  • 儲存公有或私有資料。
  • 託管靜態網站。
  • 託管動態網站或 Web 應用程式。為學生或線上培訓計劃提供支援。 ƒ 處理業務和科學資料。
  • 即時處理高峰負載。

備註:
靜態網站意指:純使用客戶端技術(例如 HTML、CSS 和 JavaScript)來建立不經常更 改的資料內容。也沒有用到任何伺服器端技術(如 PHP 和 ASP.NET)。

「地區」和「可用區域」

Amazon 在全世界不同的地區都有資料中心(例如,北美、歐洲和亞洲)。透 過將資源放置在不同區域,可以將網站或應用程式設計的更接近特定客戶、滿 足該地方的法律或其他要求。

備註:

AWS 的使用費的定價因區域而異,例如以相同 EC2 來說,美國西部的奧勒岡州 (Oregon)資料中心使用費會比亞洲東京(Tokyo)便宜。

Amazon EC2 定價網頁:https://aws.amazon.com/tw/ec2/pricing/

AWS 除了有多個區域的資料中心外,每個區域還分成多個不同的「可用區 (Availability Zones)」。每個可用區都被設計成不受其他可用區故障的影響, 並提供低價、低延遲的網絡連接,讓同一個區域的可用區之間可以互相連接。 透過將網站資源放在不同的可用區,可以保護網站或應用程式不會受到單一位 置故障的影響。

各AWS 區域資料中心列表:
區域名稱城市區域代碼
亞洲東京(Tokyo)ap-northeast-1
亞洲首爾(Seoul)ap-northeast-2
亞洲新加坡(Singapore)ap-southeast-1
亞洲悉尼(Sydney)ap-southeast-2
歐洲法蘭克福(Frankfurt)eu-central-1
歐洲愛爾蘭(Irelend)eu-west-1
南美洲聖保羅(São Paulo)sa-east-1
美國東部維吉尼亞北部(N. Virginia)us-east-1
美國西部加利福尼亞北部(N. Califronia)us-west-1
美國西部奧勒岡(Oregon)us-west-2

AWS的安全性

AWS 提供了安全的全球基礎設施以及大量可用於保護雲中資料安全的功能,特色如下:
  • 嚴密控制、監視和審核對 AWS 資料中心的物理訪問。
  • 嚴密控制、監視和審核對 AWS 網絡的訪問。
  • 透過 AWS Identity and Access Management(IAM)管理用戶用以訪問AWS帳戶的安全證書。
  • 可以對資料應用 ACL 類型的權限,也可以使用靜態資料加密。
  • 可以設定 Virtual Private Cloud (VPC),它是一種在邏輯上與 AWS 雲端中的其他虛擬網路隔離的虛擬網路,並可以控制網路是否能直接路由到 Internet。
  • 控制並配置虛擬伺服器上的作業系統。
  • 設定防火牆的安全群組,用來控制虛擬伺服器的入站和出站流量。 ƒ可以在啟動虛擬伺服器時指定密鑰對(Key Pair),用來對登入訊息進行加密。(也就是當登入虛擬伺服器時,必須提供密鑰對(Key Pari)的私有密 鑰來解密登入訊息)。

什麼是EC2?

我們主要會使用 EC2 來當我們的雲端主機,Amazon Elastic Compute Cloud (Amazon EC2) 是一種類似於虛擬主機的服務,可以使需求彈性的調整運算能 力、記憶體、硬碟容量、網路速度等等。

直接使用 EC2 這種虛擬主機,就可以不需要自行架設、管理實體伺服器,也可 以省下電費。一切都是按使用量付費,用得少就付得少,需求量高,又可以彈 性的增加規模,且系統穩定,讓經濟規模較小的個人工作室或是小型公司可以 省下非常多的 IT 負擔。

EC2 實例(Instance)

實例(Instance)是 EC2 中每一個虛擬主機的名詞,我們可以把一個實例 (Instance)當成一個虛擬主機,在本章中,只要提到實例,讀者可以將它想 像成就是虛擬主機的意思。

什麼是AMI?

Amazon 系統映像(AMI)是一種包含軟體配 置(例如:作業系統、應用程式伺服器和應 用程式)的模板(Template)。我們可以將已 經安裝好的作業系統儲存成一個 AMI 映像, 之後便可以從這個映像快速的啟動一個新的 實例(也可以說成用 AMI 映像建立一個新的 虛擬主機),如下圖所示:

啟動一個新的實例(Launch Instance)時,需要選擇實例類型(也就是主機的 類型),實例類型決定了相應實例的主機的硬體能力(如記憶體、CPU 和儲 存)。也可以幫實例分配的公有 DNS 名稱(Public DNS)或公有 IP(Public IP)位址。

補充:

我們甚至可以跟 EC2 申請免費的固定 IP,固定 IP 在 EC2 內稱為 Elastic IP,並關聯 (Associate)給實例用,但要注意,當你申請了固定 IP 但是沒有拿來使用的話,會被收取費用。

Public DNS 看起來大概會像這個樣子: ec2-52-33-226-134.us-west-2.compute.amazonaws.com

實例會保持著 24 小時運作,直到你主動停止或終止運作,或實例在某種情況毀 損而執行失敗。如果實例失敗了,可以再從 AMI 啟動一個新實例,但當然,原 來實例內的資料就遺失了。

一開始,我們可以直接從 AWS Marketplace 內選擇最接近你需求 AMI 來啟動 一個新的實例(Launch Instance),當你把整個系統環境都安裝或設定好後, 把這個實例存成一個新的 AMI,這樣以後要在新增實例時,就可以直接從這個 AMI 來啟動,節省從新設定整個系統環境的時間。

申請AWS帳號

Amazon Web Service(AWS)的網址:https://aws.amazon.com/tw/",要使用AWS的服務之前,必須先註冊一個帳號,註冊帳號是免費的,但是當你要開始使用EC2時,必須準備好信用卡,AWS為了確認你的信用卡是有效的,會在你輸入信用卡號碼後刷一筆美金一塊錢的費用。

註冊的步驟如下:

步驟一

準備一個 email 帳號,你必須要用 email 來接收 AWS 的通知信以及作為AWS帳號。

步驟二

從AWS 首頁或是 AWS 管理主控台點擊右上方註冊按鈕,進入註冊畫面。

AWS 首頁:https://aws.amazon.com/tw/?nc2=h_lg

AWS首頁

AWS管理主控台:https://aws.amazon.com/tw/console/

AWS管理主控台

步驟三

輸入要用來當AWS帳號的email 信箱,並點選「我是一個新用戶」後,點擊「使用我們的安全伺服器登入」按鈕。


步驟四

輸入你的姓名和 email 信箱,並設定你的密碼。


步驟五

選擇「個人帳戶」後輸入你的基本資料,除了「國家」選擇台灣之外,其他資料請以英文來輸入,勾選AWS客戶端協議後按下「建立帳戶並繼續」按鈕。

注意
這裡輸入的電話號碼稍後會用來驗證身份用,所以請輸入你現在手上可以接到電話的電話號碼,AWS 會用自動撥號系統,直接撥到你的手機來確認。

步驟六

輸入付款用的信用卡,要使用AWS必須要事先輸入信用卡資料,且輸入之後,AWS會刷一筆一塊錢美金的消費,用來確認你的信用卡是有效的。

備註
AWS 可以使用 VISA、Master、American Express、大陸的銀聯卡、 JCB 等等主流的信用卡,如圖所示。

步驟七

驗證身份:這裡會帶入你剛剛填寫基本資料時輸入的電話號碼,如果你 打算用別的電話號碼來做身份驗證,可以修改它,按下「立刻打電話給我」之後大約5秒內就會接到來自AWS的電話了。

注意
AWS 的認證電話是英文發音的,沒有中文,但如果對英文不擅長的讀者也不用擔心, 只要一聽到語音,直接使用電話的按鍵,輸入下個步驟的四個數字的 PIN 碼,最後等待 掛斷就可以了。

步驟八

至此步驟你應該已經接到電話了,請輸入畫面上的四個 PIN 碼;完成後 點擊「繼續選擇支援方案」按鈕,如下面圖案所示。


步驟九

你需要AWS怎樣的支援,這裡我們選擇免費的「基本」即可,如果個人有需要,也可以選擇付費的方案。


步驟十

完成,現在我們可以點擊左邊的「登入主控台」按鈕來登入 AWS 了。

開始EC2實例

在這一節,我們要來啟動一個新的實例(Launch Instance),這個動作其實就 相當於在雲端建立一個新的虛擬主機,這個主機我們可以有完全的自由用來安 裝需要的作業系統以及軟體,就相當於擁有自己的個人主機,只是它是在雲端, 一切的動作都必須透過網路,雖然是透過網路,但一切的操作就像你人在主機 前一樣。

備註
為了保持一致,在提到這個「虛擬主機」的時候,仍會依照 AWS 的說法,以「實例」 來表示。

步驟一

從上方選單選擇「Service」->「EC2」來進入EC2服務。


步驟二

選擇我們要將實例啟動在哪個資料中心,因為沒有其他特定需求,所以這裡我們選擇收費較低的奧勒岡(Oregon)資料中心來啟動實例,也就是說我們的實例會存放在這個資料中心,如下圖所示。


步驟三

點選「Launch Instance」按鈕來開始啟動新的實例,如圖 5-17 所示。


步驟四

選擇 AMI,因為我們並沒有建立自己的 AMI 映像檔,所以一開始會從 AWS Marketplace 來挑選最接近我們需要的系統 AMI 來直接使用它。這些事先 建立好的 AMI 有些是要收費的,有些則是免費。

請從畫面左邊選擇「AWS Marketplace」後,在搜尋框裡輸入「CentOS 7」 來當作過濾條件,接著選擇「CentOS 7 (x86_64) with Updates HVM」這個 AMI,這個 AMI是 CentOS官方建立的,並且是免費的。


步驟五

選擇實例的類型,也就是硬體的效能,這裡我們選擇可以免費使用一年的t2.micro類型,它可以使用一個 vCPU來運作以及1GB的記憶體,再來請點擊「Next: Configure Instance Details」進入下一步。


步驟六

接下來是設定實例的其他設定,如網域、位址以及其他等等,這裡我們保持預設就好,請再點擊「Next: Add Storage」進入下一步。


步驟七

新增儲存空間,預設是8GB的空間,在Size這個欄位可以視需求30GB以內都是免費的,Volume Type請選擇「General Purpose」,接著再點擊「Next: Tag Instance」進入下一步。


步驟八

Tag Instance用來幫這個實例設定一個標籤,用來讓你自己識別用,留空或是輸入一個名字都可以,接著再點擊「Next: Configure Security Group」進入下一步。


步驟九

Configure Security Group,其實就是設定防火牆,AWS 直接提供了圖形介面的防火牆服務,讓我們可以省去在實例內的系統自行設定防火牆的麻煩。

請選擇「Create a new security group」來建立一個新的防火牆規則,Type 選擇「SSH」,Protocol會自動帶出「TCP」,Port Range會自動帶出「22」,然後Source欄位請務必選擇「My IP」讓EC2自動抓取你的IP位址,讓只有你位址的電腦可以透過SSH協定來連接實例。

接著,請點選左下的「Add Rule」來新增一條防火牆規則:Type 為「HTTP」,Protocol 會自動帶出「TCP」,Port Range為「80」,這是我們的網站要被連線需要打開的通訊埠,Source 則選擇「Anywhere」表示公開到網路上。

最後,請點選「Review and Launch」按鈕。

注意
為了安全,請不要將 SSH 協定公開到網路上。

步驟十

這裡會再一次列出我們剛剛的設定,如果沒有問題,請點選「Launch」 來啟動我們剛剛設定的實例。

步驟十一

建立登入用的密鑰對,密鑰對是以非對稱的加密方式,EC2 上會保留公 鑰,而我們保存私鑰,我們要連接這個實例的話都必須透過這個私鑰。密鑰對 的名稱(Key pair name)可以自行命名。然後請按「Download Key Pair」來 下載私鑰,請好好保存,我們稍後連接實例時會用到,如圖 5-26 所示。

提示
後面章節會提到,如何不透過私鑰,改成帳號密碼的方式來連接實例。

完成

最後,你應該會看到這個畫面,表示我們已經完成啟動實例的工作,EC2 正在幫我們做實例的初始化以及檢查工作。

登入EC2實例

確認實例已經在運作中

啟動實例之後,大約需要 5 分鐘左右的時間做初始化以及檢查狀態才會完成。 我們可以透過上方工作列選擇「Services」->「EC2」回到 EC2 服務頁面當中, 然後從左邊的選項中選擇「Instance」,選擇右邊我們剛剛建立的實例,當右 邊面板上的「Instance State」亮綠燈並顯示「running」時,就表示剛剛啟動的 實例已經完成了。

實例啟動完成,我們便可以連接到實例;這個實例內已經有安裝好的CentOS 7了,如果讀者有操作過Linux終端機經驗的話,接下來就可以像操作 Linux 終端機的方式來使用它,如圖所示。


要在 Windows 作業系統下連接到 EC2 實例(Instance),步驟如下:

步驟一


步驟二

獲得實例的 ID、Public IP(或 Public DNS)

提示

取得方式請參考下圖。

步驟三

確認Security Group已經開放目前自己的 IP 位址使用 SSH 存取實例確保與實例關聯的安全組允許來自你的 IP 位址的傳入 SSH 流量。

步驟四

將 .pem 密鑰檔案轉換成 PuTTY 使用的 .ppk 格式執行 PuTTYgen,在 「Type of key to generate(要生成的密鑰類型)」下,選擇「RSA」。


點擊「Load」按鈕。在預設情況下,PuTTYgen 僅顯示副檔名為 .ppk 的檔案,請把它改為顯示所有類型的檔案的選項。

File name 請選取在啟動實例(Launch Instance)時下載的 .pem 密鑰檔案後,再點 選「 Save private key ( 保存私有密鑰 )」,以 PuTTY 的格式保存密鑰。PuTTYgen 會顯示一條關於在沒有口令的情況下保存密鑰的警告,點選「 Yes ( 是 )」。

備註

私有密鑰的口令是一層額外保護,就像是在密鑰上面再加一層密碼保護,因此,即使你 的私有密鑰被洩露,在沒有口令的情況下,也沒有辦法使用這個密鑰。 建議幫這個密鑰指定與原本密鑰對相同的名稱。PuTTY 自動幫轉換過的密鑰加上 .ppk 副檔名。

PuTTY 用的密鑰格式已經建立完成。

步驟五

執行 PuTTY,通過以下過程使用 PuTTY 連接到你的 Linux 實例。你將需要已為私鑰建立的 .ppk 檔案。如果在嘗試連接到實例時收到錯誤消息,請參閱排查實例的連接問題。

在左邊視窗格中,選擇 Session(會話)並設定下面欄位。
  • Host Name(主機名):輸入 centos@public_ip 或 centos@public_dns_name。
    例如:如果你的 Public IP 為「52.33.226.134」則應該輸入:「centos@52.33.226.134」,或是 如果你的 Public DNS 為「ec2-52-33-226-134.us-west-2.compute.amazonaws.com」,則 輸入:「centos@ec2-52-33-226-134.us-west-2.compute.amazonaws.com」。
  • Connection type(連線類型):選擇 SSH。
  • Port(埠):22。

步驟六:設定密鑰

在左邊視窗格中,展開 Connection(連接),再展開 SSH,然後選擇 Auth(身份驗證),完成以下操作:
  • 單擊 Browse ( 瀏覽 )。
  • 選擇你為密鑰對生成的 .ppk 檔案,然後單擊 Open ( 打開 ),如圖 5-33 所示。

補充

如果之後打算用相同的設定來連接實例,則可以保存目前的設定以便之後使用,不需要 再從頭設定。
方法為:再次在左邊視窗中選擇 Session(會話),在 Saved Sessions(已存會話)的輸 入框中輸入一個名稱,然後點擊「Save(保存)」。

點擊右下方的 Open(打開)按鈕後,開始連接到 EC2 實例。

備註

如果這是你第一次連接到此實例,PuTTY 會顯示安全警告對話框,詢問你是否信任目前 要連接的主機。 再次點擊「Yes(是)」,此時就會打開一個視窗並連接到你的 EC2 實例。

備註

如果你在將私有密鑰轉換成 PuTTY 格式時有設定了口令,則每次當你登入到實例時,都 必須輸入該口令。

取回root帳號與打開使用密碼登入功能

當你建立完 EC2 主機後,預設你只能使用金鑰檔(.pem 檔案)必且以 centos(或 是 ec2-user)這個帳號來做登入,而這個帳號只有使用者權限,雖然我們可以 透過間接的方式來取得 root(系統管理者)權限,但有時卻稍嫌麻煩,尤其對 熟悉 Linux 環境的使用者來說。

步驟一:將自己的權限從一般使用者提升到root

$ sudo su

現在我們已經擁有修改 root 密碼以及做所有 root 才能做的事情;可以發現命令 提示字元由原本的「$」字號變更為「#」字號了,「#」字號代表的也是系統 的最高權限 root 才有的提示字元。

步驟二:修改 ssh 設定檔,允許使用 root 帳號透過 ssh 連線到主機 使用 vi 編輯器來編輯 /etc/ssh 目錄下的 sshd_config 檔案。

# vi /etc/ssh/sshd_config
打開 sshd_config 檔案後請按下i按鈕進入「編輯模式」,並找到「PermitRootLogin」這行,將後面的「no」改成「yes」。
PermitRootLogin yes

提示

進入編輯模式後,會看到畫面左下角出現 -- INSERT -- 的字樣,如圖 5-37 所示:

步驟三:修改 ssh 設定檔,允許使用輸入密碼的方式來登入

接續步驟二的修改 sshd_config 檔案,找到「PasswordAuthentication」該行後, 將後面改為「yes」。
PasswordAuthentication yes

接著,請依序按下「ESC」、「:」、「w」、「q」、「Enter」來儲存並離開 編輯。

步驟四:修改 /root/.ssh/authorized_keys 檔案來允許 root 可以透過 pem 金鑰檔案 來登入。

跟剛剛修改 sshd_config 檔案一樣,使用 vi 編輯器來打開 /root/.ssh 目錄下的 authorized_keys 檔案(如下面使令)
# vi /root/.ssh/authorized_keys
搜尋下面字串並刪除它:
command="echo 'Please login as the ec2-user user rather than root user.';echo;sleep 10"

步驟五:重新啟動 ssh 服務

# systemctl restart sshd.service

現在,我們已經取回了 root 帳號,也同時透過密碼或是 pem 金鑰檔來登入主機。

注意

雖然直接使用密碼來登入較有彈性且方便,但其實也間接的提升了被入侵的機會,如果 設定了太簡單的密碼且沒有將 ssh 協定使用的 port 保護好,很容易被駭客破解,而取得 root 權限,該主機就會被駭客控制,進而利用來作為網路攻擊的主機等等的非法行為, 慎之。

補充

透過passwd指令可以修改root密碼。 例如:
# passwd root
輸入兩次新密碼後完成密碼修改。

安裝主機環境

使用root帳號登入

必須要有 root 權限才能進行接下來的環境安裝,如果讀者有安全上的考量,而 沒有照 5-4-3 節取得 root 帳號的話,也可以在使用 centos 帳號登入後,輸入下 面指令來暫時取得 root 權限:

# sudo su

當你看到終端機的提示符號由「$」變為「#」就表示已經取得 root 權限了,如 下圖圓圈處,如圖 5-38 所示:


直接設定到目前的終端機中:
# export LC_ALL="en_US.UTF-8"
# export LC_CTYPE="en_US.UTF-8" 
# export LANG="en_US.UTF-8"

將上面三個設定寫到 /etc/environment 中,這樣下次登入主機就不需要再重新設定:

# vi /etc/environment
請按下i按鈕進入「編輯模式」,然後加入下面三行:


安裝基本套件

因為我們選擇的 CentOS 7 作業系統預設是最小安裝,也就是幾乎什麼都沒有, 所以需要自行安裝需要的軟體套件,好處是,不會有我們用不到的套件來消耗 效能及儲存空間。

在CentOS 下,我們會使用 yum 這個指令來安裝需要的軟體套件,yum(全名為: Yellowdog Updater Modified),是 Linux 用來管理軟體套件非常好用的指令,它大幅簡化了過去直接使用rpm指令來安裝、移除、以及更新軟體套件等等的複雜度,也解決了許多在過程當中會遇到狀況與問題。

尤其是在軟體套件時,最常遇到的「套件相依性」問題,也就是現在要安裝的 套件需要系統存在某個套件才能運作,這時,yum 會自動下載各個相依的套件 並安裝,讓系統管理者不需要再自行下載每個相依的軟體套件並且一個一個手 動安裝這樣的瑣碎又複雜的工作。

檢查目前已經安裝的軟體套件是否有新版本並更新:
# yum update -y
安裝 wget 套件:
# yum install wget -y
安裝 EPEL repository 套件庫:
# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm
# rpm -Uvh epel-release-7*.rpm

備註

因為 EPEL repository 套件庫會隨著時間更新版本,所以在本書出版時有可能已經不是 epel-release-7-10.noarch.rpm 了,如果該網址已經失效(通常是檔名內代表版本的數字會 改變),讀者可以上:「https://dl.fedoraproject.org/pub/epel/7/x86_64/e/」查看最新版本 後再做下載。
安裝常用的軟體套件:
# yum install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 libX11-devel glib2-devel libgdi* libexif glibc-devel urw-fonts unzip gcc gcc-c++ automake autoconf libtoo make bzip2 vim -y

提示

yum update出現問題時可以全部清除再重來:
# yum clean all

設定時區

安裝 NTP 網路對時服務:
# yum install ntp -y
設定為台灣時區:
# yes | cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
同步網路時間:
# ntpdate clock.stdtime.gov.tw
查詢時間:
# date
Thu May 12 15:01:14 UTC 2016

安裝Nginx

安裝Nginx套件

# yum install nginx -y

啟動Nginx

# systemctl enable nginx.service
# systemctl start nginx.service

網站的根路徑為:/usr/share/nginx/html

設定防火牆

因為 AWS EC2 服務提供了 Security Group 的服務,這個服務就相當於防火牆, 所以我們並不需要在 Linux 主機內另外設定防火牆,直接使用 Security Group 來控制網路的安全就可以了。

檔案的上傳

Windows下可以透過WinSCP軟體,下載:https://winscp.net/download/WinSCP-5.9.6-Portable.zip

最後,我們就可以透過瀏覽器透過IP連上該主機瀏覽自己的網頁了。

React、Babel與Bootstrap的安裝

# yum install nodejs -y
# mkdir project
# cd project
# npm init
# npm install --save react react-dom
# npm install --save-dev babel-cli babel-preset-react
# npm install bootstrap@3