自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AWS寶典:如何在亞馬遜EC2上部署API?

譯文
開(kāi)發(fā) 前端 Linux
對(duì)于剛接觸AWS(亞馬遜網(wǎng)絡(luò)服務(wù))的人來(lái)說(shuō),學(xué)習(xí)起來(lái)難度相當(dāng)大。于是我們?yōu)樽x者整理出了若干條最佳實(shí)踐,做成這篇簡(jiǎn)短教程。除了亞馬遜EC2(彈性計(jì)算云)外,我們還會(huì)使用Ruby Grape這種微型框架來(lái)構(gòu)建API接口,并使用Nginx代理系統(tǒng)來(lái)處理訪問(wèn)控制。

【51CTO精選譯文】我們覺(jué)得亞馬遜是一種用來(lái)運(yùn)行API(應(yīng)用編程接口)的出色平臺(tái),因?yàn)槟憧梢匀婵刂茟?yīng)用程序堆棧。對(duì)于剛接觸AWS(亞馬遜網(wǎng)絡(luò)服務(wù))的人來(lái)說(shuō),學(xué)習(xí)起來(lái)難度相當(dāng)大。于是我們?yōu)樽x者整理出了若干條***實(shí)踐,做成這篇簡(jiǎn)短教程。除了亞馬遜EC2(彈性計(jì)算云)外,我們還會(huì)使用Ruby Grape這種微型框架來(lái)構(gòu)建API接口,并使用Nginx代理系統(tǒng)來(lái)處理訪問(wèn)控制。最棒的是,本教程中提到的所有一切都是完全免費(fèi)的!

就該教程而言,你需要基于Ruby的運(yùn)行中API和Thin服務(wù)器。要是沒(méi)有這樣一個(gè)API,你只要克隆示例軟件庫(kù),如下所述(參閱“部署應(yīng)用程序”部分)。

現(xiàn)在,我們將開(kāi)始構(gòu)建和配置亞馬遜EC2實(shí)例。要是你已經(jīng)有了EC2實(shí)例(無(wú)論是不是微型實(shí)例),就可以直接跳到下一步:準(zhǔn)備部署的實(shí)例。

構(gòu)建和配置EC2實(shí)例

首先不妨注冊(cè)亞馬遜彈性計(jì)算云(Amazon EC2)。就我們的要求而言,免費(fèi)服務(wù)http://aws.amazon.com/free/就夠用了,它可以滿(mǎn)足所有的基本要求。一旦設(shè)立好了帳戶(hù),進(jìn)入到AWS管理控制臺(tái)下面的EC2儀表板,點(diǎn)擊Launch Instance(啟動(dòng)實(shí)例)按鈕。這會(huì)讓你進(jìn)入到一個(gè)彈出窗口,你可以在里面繼續(xù)下一步:

•選擇經(jīng)典向?qū)А?/p>

•選擇AMI(Ubuntu Server 12.04.1 LTS 32位和微型實(shí)例),Instance Details(實(shí)例細(xì)節(jié))的其他所有設(shè)置都不用改動(dòng),隨它保持默認(rèn)值。

•創(chuàng)建密鑰對(duì),并下載密鑰對(duì)――這將是你用來(lái)與服務(wù)器之間建立SSH連接的密鑰對(duì),密鑰對(duì)非常重要!

•為防火墻添加入站規(guī)則,源地址始終是0.0.0.0/0(HTTP、HTTPS、ALL ICMP和Ruby Thin服務(wù)器使用的TCP端口3000)。

準(zhǔn)備部署的實(shí)例

現(xiàn)在,我們已讓實(shí)例構(gòu)建并運(yùn)行起來(lái),我們可以直接通過(guò)控制臺(tái)來(lái)連接(Windows用戶(hù)可以通過(guò)PuTTY來(lái)連接)。鼠標(biāo)右擊實(shí)例,連接實(shí)例,并選擇Connect with a standalone SSH Client(使用獨(dú)立的SSH客戶(hù)端來(lái)連接)。

 

 

逐步完成下列步驟,在給出的實(shí)例中將用戶(hù)名改成ubuntu(而不是root)。

 

 

完成這一步后,你就連接到了實(shí)例。我們還需要安裝新的軟件包。一些軟件包需要root登錄資料(憑證),所以你需要設(shè)置一個(gè)新的root密碼:sudo passwd root。然后以root用戶(hù)身份登錄:su root。

現(xiàn)在已有了root登錄資料,執(zhí)行:

sudo apt-get update

使用exit命令切換回到普通用戶(hù),并安裝所有的必需軟件包:

•安裝rvm、ruby和git需要的一些庫(kù):

sudo apt-get install build-essential git zlib1g-dev libssl-dev libreadline-gplv2-dev

imagemagick libxml2-dev libxslt1-dev openssl zlib1g libyaml-dev libxslt-dev autoconf libc6-

dev ncurses-dev automake libtool bison libpq-dev libpq5 libeditline-dev

sudo apt-get install libreadline6 libreadline6-dev

•安裝git(在Linux上,而不是來(lái)自源文件):http://www.git-scm.com/book/en/Getting-Started-Installing-Git

•安裝rvm:https://rvm.io/rvm/install/

•安裝ruby

•rvm install 1.9.3

•rvm use 1.9.3 --default

部署應(yīng)用程序

我們的示例Sentiment API位于Github上。試著克隆軟件庫(kù):

git clone git@github.com:jerzyn/api-demo.git

你可以在這里再次審查構(gòu)建和部署該應(yīng)用程序方面的代碼及教程:

http://www.3scale.net/2012/06/the-10-minute-api-up-running-3scale-grape-heroku-api-10-minutes/

還有這里:

http://www.3scale.net/2012/07/how-to-out-of-the-box-api-analytics/

要注意其中的變化(我們使用的只是v1,因?yàn)榇硐到y(tǒng)需要完成驗(yàn)證)。

現(xiàn)在你可以部署應(yīng)用程序,只要運(yùn)行命令:bundle install.

現(xiàn)在你可以開(kāi)啟Thin服務(wù)器:thin start.

想直接訪問(wèn)API(即沒(méi)有任何安全或訪問(wèn)控制):your-public-dns:3000/v1/words/awesome.json(你可以在實(shí)例細(xì)節(jié)窗口中的AWS EC2儀表板>實(shí)例中找到你的公共DNS)。

 

 

如果還想使用Nginx,你需要?jiǎng)?chuàng)建一個(gè)彈性IP地址。在AWS EC2儀表板里面,在與實(shí)例相同的區(qū)域里面創(chuàng)建彈性IP,并將該IP與它關(guān)聯(lián)起來(lái)(你沒(méi)必要為彈性IP花一分錢(qián),只要它與你同一區(qū)域里面的實(shí)例關(guān)聯(lián)起來(lái))。

 

 

選項(xiàng):如果你想為亞馬遜實(shí)例分配自定義域,就要做一件事:

•將A記錄添加到域的DNS記錄,以便將該域與你之前創(chuàng)建的那個(gè)彈性IP地址對(duì)應(yīng)起來(lái)。你的域提供商應(yīng)該會(huì)為你提供設(shè)置A記錄(IPv4地址)的某種方式,或者它會(huì)為你提供編輯域名稱(chēng)服務(wù)器的方式。如果提供商不允許你直接設(shè)置A記錄,找到一項(xiàng)DNS管理服務(wù),在上面將你的域注冊(cè)為一個(gè)區(qū)(zone),該服務(wù)就會(huì)在域提供商的管理面板你提供需要輸入的名稱(chēng)服務(wù)器。然后,你可以為域添加A記錄。一些可能的DNS管理服務(wù)包括ZoneEdit(基礎(chǔ)版免費(fèi))和亞馬遜route 53等。

至此,你的API已向世人開(kāi)放。這既是好事又是壞事――說(shuō)它是好事,是因?yàn)榭梢耘c人共享API;說(shuō)它是壞事,是因?yàn)橐遣粚?shí)行速率限制(rate limit),幾個(gè)應(yīng)用程序就會(huì)耗盡你服務(wù)器的資源,而且你也不知道誰(shuí)在使用你的API、API在如何使用。解決辦法就是,為你的API添加一些管理功能。

借助3scale啟用API管理功能

我們將充分利用使用方便的3scale API管理服務(wù),而不是從事重復(fù)性工作,從頭開(kāi)始實(shí)行速率限制、訪問(wèn)控制和分析。注冊(cè)獲得免費(fèi)的3scale帳戶(hù)(http://www.3scale.net/),通過(guò)幾個(gè)提供的鏈接,激活并登錄進(jìn)入到新實(shí)例。你***次登錄時(shí),可以選擇這個(gè)選項(xiàng):創(chuàng)建一些示例數(shù)據(jù),那樣你擁有之后用到的一些API密鑰。下一步,你可能要瀏覽一下系統(tǒng)功能(可選),然后開(kāi)始實(shí)施工作。

想立即獲得一些結(jié)果,我們就要從開(kāi)發(fā)過(guò)程中用到的沙盒代理系統(tǒng)開(kāi)始入手。然后,我們還將配置Nginx代理系統(tǒng),它可以擴(kuò)展規(guī)模,以適應(yīng)標(biāo)準(zhǔn)的生產(chǎn)部署環(huán)境。API代理系統(tǒng)的配置方面有一些說(shuō)明文檔,詳見(jiàn):https://support.3scale.net/howtos/api-configuration/nginx-proxy。想了解更高級(jí)的配置選項(xiàng),可以參閱:https://support.3scale.net/howtos/api-configuration/nginx-proxy-advanced。

一旦你進(jìn)入到了3scale帳戶(hù),在主儀表板屏幕上啟動(dòng)你的API,或者進(jìn)入到API->選擇Service ‘API’(服務(wù)API)->側(cè)欄中的Integration(集成)->Proxy(代理)。

 

 

設(shè)好API后端部分的地址――這必須是個(gè)彈性IP地址,除非自定義域已設(shè)置好,包括http協(xié)議和端口3000?,F(xiàn)在,你可以保存并啟動(dòng)沙盒代理系統(tǒng),通過(guò)訪問(wèn)沙盒端點(diǎn)來(lái)測(cè)試API(在創(chuàng)建了一些應(yīng)用程序登錄資料后): http://sandbox-endpoint/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY。其中,APP_ID和APP_KEY是你在***登錄到3scale帳戶(hù)后創(chuàng)建的其中一個(gè)示例應(yīng)用程序的ID和密鑰(如果你錯(cuò)過(guò)了帳戶(hù)創(chuàng)建這一步,只要?jiǎng)?chuàng)建開(kāi)發(fā)者帳戶(hù)以及該帳戶(hù)里面的應(yīng)用程序)。

不用應(yīng)用程序登錄資料試一下,接下來(lái)使用不正確的登錄資料試一下;然后一旦通過(guò)驗(yàn)證,在你定義的任何速率限制范圍之內(nèi)和之外再試一下。只有其表現(xiàn)讓你滿(mǎn)意,你才需要為Nginx下載配置文件。

注意:一旦遇到錯(cuò)誤,就要檢查你是否能直接訪問(wèn)API:your-public-dns:3000/v1/words/awesome.json。要是該API不可用,那么你就要檢查AWS實(shí)例是否在運(yùn)行、Thin服務(wù)器是否在該實(shí)例上運(yùn)行。

部署Nginx代理系統(tǒng)以實(shí)現(xiàn)訪問(wèn)控制

為了簡(jiǎn)化這一步,我們建議你安裝出色的OpenResty Web應(yīng)用程序,它基本上捆綁了標(biāo)準(zhǔn)的Nginx核心以及幾乎所有必要的第三方Nginx內(nèi)置模塊。

安裝依賴(lài)項(xiàng):sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev perl

編譯和安裝Nginx:

•cd ~

•sudo wget http://agentzh.org/misc/nginx/ngx_openresty-1.2.3.8.tar.gz

•sudo tar -zxvf ngx_openresty-1.2.3.8.tar.gz

•cd ngx_openresty-1.2.3.8/

•./configure --prefix=/opt/openresty --with-luajit --with-http_iconv_module -j2

•make

•sudo make install

現(xiàn)在,你可以從3scale代理頁(yè)面下載Nginx配置文件了;在配置文件中,進(jìn)行下列更改:

•編輯來(lái)自nginx下載的配置文件

•在第28行(上一行是更改服務(wù)器名稱(chēng)的信息),輸入正確的域(你的彈性IP或自定義域名)

•在第78行,將路徑改為指向與配置文件一同下載的.lua文件。

我們幾乎大功告成了!***一個(gè)步驟是開(kāi)啟NGINX代理系統(tǒng),讓一些流量通過(guò)它。要是它還沒(méi)有運(yùn)行(切記:首先得開(kāi)啟那臺(tái)Thin服務(wù)器),務(wù)必進(jìn)入到EC2實(shí)例終端(你之前通過(guò)SSH連接的那個(gè)終端),然后現(xiàn)在開(kāi)啟它:

sudo /opt/openresty/nginx/sbin/nginx -p /opt/openresty/nginx/ -c /opt/openresty/nginx/conf/YOUR-CONFIG-FILE.conf

***一步將是驗(yàn)證流量正常通過(guò),并通過(guò)了應(yīng)有的驗(yàn)證。為此,訪問(wèn):

http://your-public-dns/v1/words/awesome.json?app_id=APP_ID&app_key=APP_KEY

其中,APP_ID和APP_KEY是你想通過(guò)API調(diào)用來(lái)訪問(wèn)的那個(gè)應(yīng)用程序的密鑰和ID。一旦證實(shí)一切都正常運(yùn)行,你就需要阻止公眾通過(guò)端口3000對(duì)API后端部分進(jìn)行訪問(wèn),端口3000繞過(guò)了任何訪問(wèn)控制機(jī)制。

要是Nginx配置方面遇到了一些問(wèn)題,或者需要介紹更詳細(xì)的指南,我鼓勵(lì)你閱讀配置Nginx代理系統(tǒng)方面的這篇指南文章: https://support.3scale.net/howtos/api-configuration/nginx-proxy。你完全可以對(duì)你的API網(wǎng)關(guān)進(jìn)行定制。如果你想深入探究3scale的系統(tǒng)配置(比如用法和API流量的監(jiān)控),歡迎瀏覽“快速入門(mén)”指南(https://support.3scale.net/get-started/fast-track-integration)和實(shí)用指導(dǎo)(https://support.3scale.net/howtos/basics#manage-admins)。
 

英文:http://www.3scale.net/2013/02/quickstart-tutorial-on-how-to-deploy-an-api-on-amazon-ec2-for-amazon-web-services-aws-rookies/?utm_source=Outbrain&utm_campaign=AWS-Q3

責(zé)任編輯:林師授 來(lái)源: 51CTO
相關(guān)推薦

2014-08-26 11:07:15

技術(shù)周刊

2014-11-14 10:06:06

AWSEC2 Contain亞馬遜

2013-06-03 09:24:34

公有云計(jì)算亞馬遜EC2API

2018-02-23 15:15:31

UbuntuAnsibleAmazon EC2

2014-08-18 11:17:03

AWS EC2Salt Cloud

2017-12-02 12:42:57

AWSEC2

2012-03-09 15:30:26

亞馬遜EC2云計(jì)算

2012-06-20 15:26:40

亞馬遜EC2云計(jì)算

2012-11-15 09:30:59

亞馬遜EC2云計(jì)算

2009-03-30 17:25:17

Amazon亞馬遜Eclipse

2014-07-02 21:24:09

AWSAmazon EC2

2017-04-20 19:15:32

Linux服務(wù)器AWS EC2

2020-12-01 15:47:49

AWSEC2macOS

2018-05-17 22:16:07

Amazon EC2Web服務(wù)

2011-04-25 09:06:55

亞馬遜EC2

2009-12-14 15:34:53

2015-08-21 17:47:38

Docker安全EC2容器服務(wù)

2011-05-04 15:36:01

亞馬遜EC2

2009-07-02 19:28:00

云計(jì)算紅帽Linux

2012-10-17 13:41:02

亞馬遜EC2OpenStackNimbula Dir
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)