只需10分钟 在云中打造一个免费的Gemstone服务器

只需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的创建过程,可以参考这篇博文:http://www.nickager.com/nasite/blog/Installing-Gemstone-on-an-Amazon-EC2-Linux-instance)

注意:这些说明都是基于从一个MacOS客户端连接到一个Amazon EC2实例的;对于其他Unix客户端来说,这些说明也同样适用。对于一个Windows客户端来说,你可能需要下载:

PuTTY

Cygwin

并相应地修改这些说明。

创建一个EC2实例

首先到http://aws.amazon.com注册。登陆以后你就可以导航到下面这个界面了:

*在“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 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

格式:CloudInit(syntax)

不需要输入任何键/值对

因为我们在上面那个步骤中,已经把一个SSH密钥输入到“User Data”域中了,所以,无需再指定一个密钥对了:

对防火墙进行配置,打开22端口(SSH)和80端口(HTTP):

最后,点击“Launch”按钮,等待这个实例启动:

如果这个实例启动了,把这个实例的URL(Public DNS)拷贝下来:

把你的浏览器指向你的服务器的公用的DNS地址(例如:http://ec2-46-51-165-46.eu-west-1.compute.amazonaws.com),然后,你应该可以看到熟悉的Seaside欢迎屏:

恭喜你!你已经让属于你自己的,免费的Seaside服务器运行在Amazon EC2中了。

#p#

关于配置

你应该已经发现这个问题了,虽然计数器,任务和“create a component”样例都和预期的一样,在正常地运作,但是“/browse”命令, “/config”命令和指向JQuery样例的链接却返回403错误(unauthorised)和404错误(not found)。此外,底部的Seaside工具栏也消失了。这样设计主要是为了让这个环境更加安全——你的实例现在依赖于互联网了。下面几个小节将会为您讲述如何把你自己的代码载入到你的远程实例中,以及如何访问“/config”。

不止是一个欢迎屏,通过“/pier”命令,你还可以使用默认安装的Pier(关于Pier,具体可以参考:http://www.piercms.com/)。Pier是一个构建在Seaside之上的,强大而灵活的内容管理系统,因为它支持Blog,所以它是这种站点的理想选择。

访问“/config”命令

使用上面提到的那个公用的DNS地址,使用用户“seasideuser”ssh到新创建的实例:

 ssh -L 8888:127.0.0.1:80 [email protected]

你应该会看到一些类似于这样的东西:

 $ ssh -L 8888:127.0.0.1:80 [email protected]
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


__| __|_ ) Amazon Linux AMI
_| ( / Beta
___|___|\___|

See /etc/image-release-notes for latest release notes. 🙂
[seasideuser@ip-10-234-159-73 ~]$

现在,你应该可以浏览“http://localhost:8888/config”,访问相应的配置了。参数“-L 8888:127.0.0.1:80”表示服务端的localhost上的数据应该传送到客户端的localhost:8888上,同时,Web服务器会被配置成只能通过localhost来访问“/config”命令。

还有一个日志界面,也被配置成只能通过localhost来访问;浏览/tools/objectlog(用户名: admin, 密码: tool)可以访问这个界面。

#p#

把你自己的代码载入到你的Gemstone实例中

如果你已经登录到你的远程实例了,那么先“exit”这个实例,然后用下面的命令行ssh回来:

 $ ssh -X -C [email protected]

这应该会产生一些类似于这样的东西:

 $ ssh -X -C [email protected]
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
_| ( / 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:

 $ ~/gemtools.sh

然后,按“Login”按钮连接到运行在你的实例中的Gemstone服务器:

你现在应该已经登录到你的Gemstone服务器了:

现在,你可以使用Monticello把你的代码载入到你的远程实例中。点击“Tools”按钮,然后选择“Monticello”。添加包含你的代码的代码库,然后正常载入。你还可以使用Metacello 和 Gofer来载入代码。

使用GemTools

虽然当GemTools运程运行在你的实例中的时候,在GemTools中,你也可以高效率地完成一些工作,但是,你可能会发现,使用VMWare GLASS virtual appliance,或者把Gemstone安装到你的本地机器上,在一个Pharo映像中完成这些工作,效率会更高一些。

如果你是通过一个MacOS客户端来连接的,那么你可能会发现映射Ctrl和CMD键是很有帮助的,具体可以参考:

《MacOS And X11》

#p#

有待改进

1,我尚未配置任何监控软件

2,如果他们崩溃了,没有办法重新启动Gems

3,没有提供数据库备份机制。

4,我还没有配置邮件服务器。

《Glass Daemon Tools》这篇文档详细地讲述实现其中一些改进的方法。

为了改进你自己的配置,你可以使用这个配置作为基础,然后,在社区中分享你自己的配置。创建和分享一个经过修改的配置都是十分简单的。

让你的实例更加安全

有很多种方法可以让你的实例更加安全,这是其中的三种方法(注意:这并不是一个完整的列表):

1,让你的系统软件处于最新状态

2,要求提供一个sudo密码

3,改变SSH的端口

1,让你的系统软件处于最新状态

定期地运行:

 sudo yum update

2,要求提供一个sudo密码

首先,你必须为seasideuser设置一个密码:

 $ passwd
Changing password for user seasideuser.
New password:

然后编辑/etc/sudoers:

 sudo vim /etc/sudoers

把这一行:

 seasideuser ALL = NOPASSWD: ALL

改成:

 seasideuser ALL = (ALL) ALL

现在,当你执行使用sudo的命令的时候,你必须要提供一个密码。

3,改变SSH的端口

默认的SSH端口是22端口,许多人都会攻击这个端口。这就是说,ssh到这个实例的唯一方法是使用RSA密钥。此外,root访问也应该禁用(这是一种常见的攻击方法)。但是,如果你想更谨慎一些,你可以改变SSH的端口(但是,我怀疑这种方法提供的保护对确定性的攻击是无效的)。

首先,你应该在你的防火墙上打开新的端口。从“Amazon AWS EC2”标签中选择“Security Groups”,然后选择和你的实例相关的安全组。添加新的端口。

接下来编辑/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 [email protected]

最后,你可以重新编辑你的防火墙,移除对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 

【编辑推荐】

  1. IBM启动”云引擎” 5分钟搞定一个IaaS云
  2. 技巧经验:搭建私有云要做哪些准备?
  3. 云计算背后的秘密(7)-YunTable的故事

 

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/249680.html<

(0)
运维的头像运维
上一篇2025-04-28 04:05
下一篇 2025-04-28 04:06

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注