只需10分钟 在云中打造一个免费的Gemstone 服务器
原创2011-01-21 10:30:46要在Gemstone中运行一个Seaside应用程序,一个微型的实例已经足够了吗?答案是:YES。实际上,我已经试着创建了一个已经配置好的Gemstone EC2 Linux AMI (Amazon Machine Image)。在本文中,我将会为您讲述如何使用这个已经配置好的映像把Seaside应用程序快速而免费地部署到EC2(Elastic compute CLOUD)上。
Amazon提供的一个免费一年的微型实例产品,引起了我的注意:
为了帮助AWS(Amazon Web Services)的新客户在云中入门,AWS引入了一个全新的,可以免费使用的等级。11月1日开始,新的AWS客户可以免费使用Amazon EC2 Micro Instance一年……
但是,要在Gemstone中运行一个Seaside应用程序,一个微型的实例已经足够了吗?答案是:YES。实际上,我已经试着创建了一个已经配置好的Gemstone EC2 Linux AMI (Amazon Machine Image)。在本文中,我将会为您讲述如何使用这个已经配置好的映像把Seaside应用程序快速而免费地部署到EC2(Elastic Compute Cloud)上。
(关于Gemstone EC2 Linux AMI的创建过程,可以参考这篇博文:)
注意: 这些说明都是基于从一个MacOS客户端连接到一个Amazon EC2实例的;对于其他Unix客户端来说,这些说明也同样适用。对于一个Windows客户端来说,你可能需要下载:
并相应地修改这些说明。
创建一个EC2实例
首先到注册。登陆以后你就可以导航到下面这个界面了:
*在“Region”组合框上下拉,选择离你最近的区域。
*点击“Launch Instance”按钮来打开Request Instance Wizard
选择“Community AMI”标签,然后在搜索框中输入“ami-7f9bae0b”,这是已经配置好的Gemstone/Seaside实例的AMI(Amazon Machine Image) ID。在以前的一篇博文中,我已经记录下这个映像的配置过程了,关于这篇博文,可以参考本文前面给出的链接。
注意: 在记录下这个截屏以后,我才认识到,“ami-7f9bae0b”只能用于“EU-WEST”区域,Amazon没有直接把它拷贝到其他区域。在接下来的几天里,我会试着让它可以在“US”区域中使用的,在此之前,只有把你的区域设置成“EU-WEST”,你才可以找到这个AMI。
如果你想使用Amazon提供的这个免费产品,可以选择“Micro”。Amazon对微型实例的描述如下:
这个系列的实例可以持续不断地给你提供少量的CPU资源,当其他周期可用的时候,你也可以增加CPU资源。它们比较适合那些低吞吐量的应用程序,以及那些周期性地消耗掉计算周期的Web站点。
接下来,我们给这个EC2实例输入一个RSA公钥,让它支持ssh访问。密钥是使用“ssh-keygen”命令生成的:
$ ssh-keygen -t rsaGenerating 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 border="0" cellspacing="0" cellpadding="6">
格式:CloudInit(syntax)
不需要输入任何键/值对
因为我们在上面那个步骤中,已经把一个SSH密钥输入到“User border="0" cellspacing="0" cellpadding="6">
你应该会看到一些类似于这样的东西:
$ ssh -L 8888:127.0.0.1:80[emailprotected]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)?yesWarning: 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
__| __|_ ) Amazon Linux AMI_| ( / Beta___|___|\___| See /etc/image-release-notes for latest release notes. 🙂[seasideuser@ip-10-234-159-73 ~]$ |
现在,你应该可以浏览“”,访问相应的配置了。参数“-L 8888:127.0.0.1:80”表示服务端的localhost上的数据应该传送到客户端的localhost:8888上,同时,Web服务器会被配置成只能通过localhost来访问“/config”命令。
还有一个日志界面,也被配置成只能通过localhost来访问;浏览/tools/objectlog(用户名: admin, 密码: tool)可以访问这个界面。
把你自己的代码载入到你的Gemstone实例中
如果你已经登录到你的远程实例了,那么先“exit”这个实例,然后用下面的命令行ssh回来:
$ ssh -X -C[emailprotected] |
这应该会产生一些类似于这样的东西:
$ ssh -X -C[emailprotected]Warning: untrusted X11 forwarding setup failed: xauth key>__| __|_ ) Amazon Linux AMI_| ( / Beta___|___|\___| |
See /etc/image-release-notes for latest release notes. 🙂[seasideuser@ip-10-234-159-73 ~]$
“-x”参数支持X11传送,“-C”压缩。这可以让你在你的远程实例上打开GemTools,但是那个窗口会传送(X11)到你本地计算机的显示屏上。
GemTools是一个Pharo环境,它可以让你连接到Gemstone,载入和修改代码,以及通过一个GUI环境来执行一些管理操作(例如启动和关闭服务器,备份和恢复数据库等等)。
启动Gemtools:
然后,按“Login”按钮连接到运行在你的实例中的Gemstone服务器:
你现在应该已经登录到你的Gemstone服务器了:
现在,你可以使用Monticello把你的代码载入到你的远程实例中。点击“Tools”按钮,然后选择“Monticello”。添加包含你的代码的代码库,然后正常载入。你还可以使用Metacello 和 Gofer来载入代码。
使用GemTools
虽然当GemTools运程运行在你的实例中的时候,在GemTools中,你也可以高效率地完成一些工作,但是,你可能会发现,使用VMWare GLASS virtual appliance,或者把Gemstone安装到你的本地机器上,在一个Pharo映像中完成这些工作,效率会更高一些。
如果你是通过一个MacOS客户端来连接的,那么你可能会发现映射Ctrl和CMD键是很有帮助的,具体可以参考:
《MacOS And X11》
有待改进
1,我尚未配置任何监控软件
2,如果他们崩溃了,没有办法重新启动Gems
3,没有提供数据库备份机制。
4,我还没有配置邮件服务器。
《Glass Daemon Tools》这篇文档详细地讲述实现其中一些改进的方法。
为了改进你自己的配置,你可以使用这个配置作为基础,然后,在社区中分享你自己的配置。创建和分享一个经过修改的配置都是十分简单的。
让你的实例更加安全
有很多种方法可以让你的实例更加安全,这是其中的三种方法(注意:这并不是一个完整的列表):
1,让你的系统软件处于最新状态
2,要求提供一个sudo密码
3,改变SSH的端口
1,让你的系统软件处于最新状态
定期地运行:
2,要求提供一个sudo密码
首先,你必须为seasideuser设置一个密码:
$ passwdChanging password for user seasideuser.New password: |
然后编辑/etc/sudoers:
把这一行:
改成:
现在,当你执行使用sudo的命令的时候,你必须要提供一个密码。
3,改变SSH的端口
默认的SSH端口是22端口,许多人都会攻击这个端口。这就是说,ssh到这个实例的唯一方法是使用RSA密钥。此外,root访问也应该禁用(这是一种常见的攻击方法)。但是,如果你想更谨慎一些,你可以改变SSH的端口(但是,我怀疑这种方法提供的保护对确定性的攻击是无效的)。
首先,你应该在你的防火墙上打开新的端口。从“Amazon AWS EC2”标签中选择“Security Groups”,然后选择和你的实例相关的安全组。添加新的端口。
接下来编辑/etc/ssh/sshd_config
然后把这一行:
改成你的新端口,比如说20001:
重新启动ssh daemon:
接下来“exit”你的实例,然后使用你的新端口来登录:
ssh -p 20001[emailprotected] |
最后,你可以重新编辑你的防火墙,移除对22端口的访问。
补充资料
这个实例的配置已经记录到以前的一篇博文中了:
《Installing Gemstone on an Amazon EC2 Linux instance》:Installing Gemstone on an Amazon EC2 Linux instance
此外,还有很多和Gemstone有关的优秀资料:
* Glass wiki
* Gemstone manuals
* James Foster’s blog
* Dale Henrick’s blog
GLASS邮件列表也有很大的参考价值。
原文名:Create a free Gemstone server in the cloud in 10 minutes 作者:Nick Ager
【编辑推荐】
力软快速开发平台有什么优势?
跑商2次刷价的时间和具体刷高还是刷低
二次刷价:一个职业商人,必须明白二次刷价,二次刷价是跑好商的关键,掌握了二次刷价的规律就掌握了跑商的精髓。 不懂二刷一样可以跑,但是懂二刷可以让你更精确的判断买货,基本上可以做到只赚不亏。 二刷是指在每个10分钟的刷价周期中,还会有一次变价的时间,这个时间不刷买入价,光刷卖出价。 二次刷价前后的规律是低价货物二刷之后卖出价变高,高价货物二次刷后卖出价变低。 低价货物和高价货物的判断就在于和基准价的比较,比如佛珠7500,扇子3400,武器3500,那么佛珠属于高价,扇子和武器属于低价,其中最低价是武器,二刷之前,佛珠一般是赚钱的,二刷之后佛珠卖出价就会下跌,可能赚,也可能亏,但是扇子和武器卖出价会上升,尤其是武器,肯定能赚不少,这就是所谓低价货有时候赚多,有时候赚少的原因,如果你进了低价货,在二刷之前卖,那么赚不了多少,过了二刷,就可以赚很多,典型的如武器3500,二刷前可能只有4500的卖价,但是二刷后一般都会刷上5000甚至6000。 当几种货物有的高于基准价,有的低于基准价,那么是很好判断的,如果都高于或者都低于,那么就要比较相对价格的高低,如果高的离谱,甚至会出现任何货物都亏的情况(典型的跑CS-AL就有可能),这时候建议换路线跑。 二刷是一个变动的时间,每次维护都会更改,更改之后每天大概推迟10/7分,也就是一分多一点,实际上这个时间是每次刷价都在往后退,比如早上如果是相对时间(相对1次刷价)3分50秒,晚上可能就是4分多,第二天早上就是5分多了。 一般正常情况下一星期一次维护,只要有一天知道了,后面的都可以推,一直到下一次服务器重启维护。 二次刷价的查找:最简单的是买个货物,傻乎乎的隔10秒看一次,一直看到变化为止,最多浪费10分钟,简单不浪费的时间的方法是利用AL-CS的短途来锁定2刷的大致范围,然后在某个时候确定一下。 比如在CS刷完后,看到低价货,买进,去AL,大概2分之前能到,记住价格,如果赚的很多,可以尝试判断2刷已经过了,然后回CS,这中间为了确保不会亏,暂时买低价货,下一次回AL,大概是5-6分了,如果这时候价格变了,就可以确定2刷在5分前,2分后,如果还没变,再跑一次,基本上可以断定2刷在哪个时间段里,基本上这个时间足够判断BJ-DF和CA-CS路线了,在某个时候适当停几分钟确定一下准确时间就够了,同时也可以跑完一票了
自学Linux云计算能学好吗?
作为云计算市场的后来者,腾讯云近期攻势猛烈,从面向企业的云服务,到面向用户的个人云市场全面发力,更将战火蔓延至海外市场。 吸引了越来越多的人开始加入到学习linux云计算的行列,那对于没有基础的同学来讲,linux云计算好学吗?我们首先需要了解一下云计算是干什么的,都学习哪些内容。 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。 学习云计算你需要知道虚拟化,虚拟化目前分为服务器虚拟化(以VMware为代表)、桌面虚拟化、应用虚拟化等。 可以分为以下几个阶段来学习:1. Linux云计算网络管理实战2. Linux系统管理及服务配置实战3. Linux Shell自动化运维编程实战4. 开源数据库SQL/NOSQL运维实战5. 大型网站高并发架构及自动化运维项目6. 网站安全渗透测试及性能调优项目实战7. 公有云运维技术项目实战8. 企业私有云架构及运维实战9. Python自动化运维开发基础10. Python自动化运维开发项目实战11. Python自动化运维开发项目实战12. 搜狐畅游项目实训具体学习目标:1、掌握大型网站架构、网站服务器运维、数据库运维、自动化运维技术;2、能够利用Shell及Python编写自动化运维工具,例如CMDB、自动化运维平台等、公有云管理系统;3、能够解决运维过程中出现的各种问题,例如网站架构问题等;4、具备中小型公司公有云运维的能力。 例如公司使用的是阿里云、亚马逊云;5、掌握中大型公司私有云平台的构建及运维,例如构建及运维京东私有云平台;6、能够利用Python开发运维中的各种工具,以及对现有软件如Zabbix、Ansible进行二次开发;7、具备快速学习及适应新技术迭代的综合能力。 对于初学者学习云计算,给出的建议是:基础是关键,在涉猎技术范围广泛的同时,所学所了解的知识领域一定要成体系,抓住一个方向,作为一技之长。 学以致用是,在学习过程中,重在理解,贵在实践,积极将所学所了解的技术运用于项目实践,成就你的云计算自学梦想。
发表评论