只需10分鐘 在云中打造一個免費的Gemstone服務(wù)器
原創(chuàng)Amazon提供的一個免費一年的微型實例產(chǎn)品,引起了我的注意:
為了幫助AWS(Amazon Web Services)的新客戶在云中入門,AWS引入了一個全新的,可以免費使用的等級。11月1日開始,新的AWS客戶可以免費使用Amazon EC2 Micro Instance一年......
但是,要在Gemstone中運行一個Seaside應(yīng)用程序,一個微型的實例已經(jīng)足夠了嗎?答案是:YES。實際上,我已經(jīng)試著創(chuàng)建了一個已經(jīng)配置好的Gemstone EC2 Linux AMI (Amazon Machine Image)。在本文中,我將會為您講述如何使用這個已經(jīng)配置好的映像把Seaside應(yīng)用程序快速而免費地部署到EC2(Elastic Compute Cloud)上。
(關(guān)于Gemstone EC2 Linux AMI的創(chuàng)建過程,可以參考這篇博文:http://www.nickager.com/nasite/blog/Installing-Gemstone-on-an-Amazon-EC2-Linux-instance)
注意:這些說明都是基于從一個MacOS客戶端連接到一個Amazon EC2實例的;對于其他Unix客戶端來說,這些說明也同樣適用。對于一個Windows客戶端來說,你可能需要下載:
并相應(yīng)地修改這些說明。
創(chuàng)建一個EC2實例
首先到http://aws.amazon.com注冊。登陸以后你就可以導(dǎo)航到下面這個界面了:
*在“Region”組合框上下拉,選擇離你最近的區(qū)域。
*點擊“Launch Instance”按鈕來打開Request Instance Wizard
選擇“Community AMI”標(biāo)簽,然后在搜索框中輸入“ami-7f9bae0b”,這是已經(jīng)配置好的Gemstone/Seaside實例的AMI(Amazon Machine Image) ID。在以前的一篇博文中,我已經(jīng)記錄下這個映像的配置過程了,關(guān)于這篇博文,可以參考本文前面給出的鏈接。
注意:在記錄下這個截屏以后,我才認(rèn)識到,“ami-7f9bae0b”只能用于“EU-WEST”區(qū)域,Amazon沒有直接把它拷貝到其他區(qū)域。在接下來的幾天里,我會試著讓它可以在“US”區(qū)域中使用的,在此之前,只有把你的區(qū)域設(shè)置成“EU-WEST”,你才可以找到這個AMI。
如果你想使用Amazon提供的這個免費產(chǎn)品,可以選擇“Micro”。Amazon對微型實例的描述如下:
這個系列的實例可以持續(xù)不斷地給你提供少量的CPU資源,當(dāng)其他周期可用的時候,你也可以增加CPU資源。它們比較適合那些低吞吐量的應(yīng)用程序,以及那些周期性地消耗掉計算周期的Web站點。
接下來,我們給這個EC2實例輸入一個RSA公鑰,讓它支持SSH訪問。密鑰是使用“ssh-keygen”命令生成的:
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/nickager/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/nickager/.ssh/id_rsa. Your public key has been saved in /Users/nickager/.ssh/id_rsa.pub. |
然后,使用“~/.ssh/id_rsa.pub”命令提取出你的公鑰,用下面這種格式,把它輸入到到這個實例的“User Data”域中
#cloud-config ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1y........ disable_ec2_metadata: true |
不需要輸入任何鍵/值對
因為我們在上面那個步驟中,已經(jīng)把一個SSH密鑰輸入到“User Data”域中了,所以,無需再指定一個密鑰對了:
對防火墻進(jìn)行配置,打開22端口(SSH)和80端口(HTTP):
最后,點擊“Launch”按鈕,等待這個實例啟動:
如果這個實例啟動了,把這個實例的URL(Public DNS)拷貝下來:
把你的瀏覽器指向你的服務(wù)器的公用的DNS地址(例如:http://ec2-46-51-165-46.eu-west-1.compute.amazonaws.com),然后,你應(yīng)該可以看到熟悉的Seaside歡迎屏:
恭喜你!你已經(jīng)讓屬于你自己的,免費的Seaside服務(wù)器運行在Amazon EC2中了。
#p#
關(guān)于配置
你應(yīng)該已經(jīng)發(fā)現(xiàn)這個問題了,雖然計數(shù)器,任務(wù)和“create a component”樣例都和預(yù)期的一樣,在正常地運作,但是“/browse”命令, “/config”命令和指向JQuery樣例的鏈接卻返回403錯誤(unauthorised)和404錯誤(not found)。此外,底部的Seaside工具欄也消失了。這樣設(shè)計主要是為了讓這個環(huán)境更加安全——你的實例現(xiàn)在依賴于互聯(lián)網(wǎng)了。下面幾個小節(jié)將會為您講述如何把你自己的代碼載入到你的遠(yuǎn)程實例中,以及如何訪問“/config”。
不止是一個歡迎屏,通過“/pier”命令,你還可以使用默認(rèn)安裝的Pier(關(guān)于Pier,具體可以參考:http://www.piercms.com/)。Pier是一個構(gòu)建在Seaside之上的,強(qiáng)大而靈活的內(nèi)容管理系統(tǒng),因為它支持Blog,所以它是這種站點的理想選擇。
訪問“/config”命令
使用上面提到的那個公用的DNS地址,使用用戶“seasideuser”ssh到新創(chuàng)建的實例:
ssh -L 8888:127.0.0.1:80 seasideuser@ec2-46-51-165-46.eu-west-1.compute.amazonaws.com |
你應(yīng)該會看到一些類似于這樣的東西:
$ ssh -L 8888:127.0.0.1:80 seasideuser@ec2-46-51-165-46.eu-west-1.compute.amazonaws.com The authenticity of host 'ec2-46-51-165-46.eu-west-1.compute.amazonaws.com (79.125.98.212)' can't be established. RSA key fingerprint is de:96:12:b7:d0:9e:63:69:37:5a:4b:08:20:68:45:b6. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added 'ec2-46-51-165-46.eu-west-1.compute.amazonaws.com,79.125.74.150' (RSA) to the list of known hosts. Last login: Wed Dec 29 18:25:11 2010 from 93-96-148-251.zone4.bethere.co.uk
See /etc/image-release-notes for latest release notes. :-) |
現(xiàn)在,你應(yīng)該可以瀏覽“http://localhost:8888/config”,訪問相應(yīng)的配置了。參數(shù)“-L 8888:127.0.0.1:80”表示服務(wù)端的localhost上的數(shù)據(jù)應(yīng)該傳送到客戶端的localhost:8888上,同時,Web服務(wù)器會被配置成只能通過localhost來訪問“/config”命令。
還有一個日志界面,也被配置成只能通過localhost來訪問;瀏覽/tools/objectlog(用戶名: admin, 密碼: tool)可以訪問這個界面。
#p#
把你自己的代碼載入到你的Gemstone實例中
如果你已經(jīng)登錄到你的遠(yuǎn)程實例了,那么先“exit”這個實例,然后用下面的命令行ssh回來:
$ ssh -X -C seasideuser@ec2-46-51-165-46.eu-west-1.compute.amazonaws.com |
這應(yīng)該會產(chǎn)生一些類似于這樣的東西:
$ ssh -X -C seasideuser@ec2-46-51-165-46.eu-west-1.compute.amazonaws.com Warning: untrusted X11 forwarding setup failed: xauth key data not generated Warning: No xauth data; using fake authentication data for X11 forwarding. __| __|_ ) Amazon Linux AMI See /etc/image-release-notes for latest release notes. :-) |
“-x”參數(shù)支持X11傳送,“-C”壓縮。這可以讓你在你的遠(yuǎn)程實例上打開GemTools,但是那個窗口會傳送(X11)到你本地計算機(jī)的顯示屏上。
GemTools是一個Pharo環(huán)境,它可以讓你連接到Gemstone,載入和修改代碼,以及通過一個GUI環(huán)境來執(zhí)行一些管理操作(例如啟動和關(guān)閉服務(wù)器,備份和恢復(fù)數(shù)據(jù)庫等等)。
啟動Gemtools:
$ ~/gemtools.sh |
然后,按“Login”按鈕連接到運行在你的實例中的Gemstone服務(wù)器:
你現(xiàn)在應(yīng)該已經(jīng)登錄到你的Gemstone服務(wù)器了:
現(xiàn)在,你可以使用Monticello把你的代碼載入到你的遠(yuǎn)程實例中。點擊“Tools”按鈕,然后選擇“Monticello”。添加包含你的代碼的代碼庫,然后正常載入。你還可以使用Metacello 和 Gofer來載入代碼。
使用GemTools
雖然當(dāng)GemTools運程運行在你的實例中的時候,在GemTools中,你也可以高效率地完成一些工作,但是,你可能會發(fā)現(xiàn),使用VMWare GLASS virtual appliance,或者把Gemstone安裝到你的本地機(jī)器上,在一個Pharo映像中完成這些工作,效率會更高一些。
如果你是通過一個MacOS客戶端來連接的,那么你可能會發(fā)現(xiàn)映射Ctrl和CMD鍵是很有幫助的,具體可以參考:
#p#
有待改進(jìn)
1,我尚未配置任何監(jiān)控軟件
2,如果他們崩潰了,沒有辦法重新啟動Gems
3,沒有提供數(shù)據(jù)庫備份機(jī)制。
4,我還沒有配置郵件服務(wù)器。
《Glass Daemon Tools》這篇文檔詳細(xì)地講述實現(xiàn)其中一些改進(jìn)的方法。
為了改進(jìn)你自己的配置,你可以使用這個配置作為基礎(chǔ),然后,在社區(qū)中分享你自己的配置。創(chuàng)建和分享一個經(jīng)過修改的配置都是十分簡單的。
讓你的實例更加安全
有很多種方法可以讓你的實例更加安全,這是其中的三種方法(注意:這并不是一個完整的列表):
1,讓你的系統(tǒng)軟件處于最新狀態(tài)
2,要求提供一個sudo密碼
3,改變SSH的端口
1,讓你的系統(tǒng)軟件處于最新狀態(tài)
定期地運行:
sudo yum update |
2,要求提供一個sudo密碼
首先,你必須為seasideuser設(shè)置一個密碼:
$ passwd Changing password for user seasideuser. New password: |
然后編輯/etc/sudoers:
sudo vim /etc/sudoers |
把這一行:
seasideuser ALL = NOPASSWD: ALL |
改成:
seasideuser ALL = (ALL) ALL |
現(xiàn)在,當(dāng)你執(zhí)行使用sudo的命令的時候,你必須要提供一個密碼。
3,改變SSH的端口
默認(rèn)的SSH端口是22端口,許多人都會攻擊這個端口。這就是說,ssh到這個實例的唯一方法是使用RSA密鑰。此外,root訪問也應(yīng)該禁用(這是一種常見的攻擊方法)。但是,如果你想更謹(jǐn)慎一些,你可以改變SSH的端口(但是,我懷疑這種方法提供的保護(hù)對確定性的攻擊是無效的)。
首先,你應(yīng)該在你的防火墻上打開新的端口。從“Amazon AWS EC2”標(biāo)簽中選擇“Security Groups”,然后選擇和你的實例相關(guān)的安全組。添加新的端口。
接下來編輯/etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config |
然后把這一行:
Port 22 |
改成你的新端口,比如說20001:
Port 20001 |
重新啟動ssh daemon:
sudo /etc/init.d/sshd restart |
接下來“exit”你的實例,然后使用你的新端口來登錄:
ssh -p 20001 seasideuser@ec2-46-51-165-46.eu-west-1.compute.amazonaws.com |
最后,你可以重新編輯你的防火墻,移除對22端口的訪問。
補(bǔ)充資料
這個實例的配置已經(jīng)記錄到以前的一篇博文中了:
《Installing Gemstone on an Amazon EC2 Linux instance》:Installing Gemstone on an Amazon EC2 Linux instance
此外,還有很多和Gemstone有關(guān)的優(yōu)秀資料:
* James Foster's blog
* Dale Henrick's blog
GLASS郵件列表也有很大的參考價值。
原文名:Create a free Gemstone server in the cloud in 10 minutes 作者:Nick Ager
【編輯推薦】