如今,关于PaaS 的信息很多,关于云服务的信息也很多。
相信很多人对 google app 和 sina app 都有所耳闻,对于其中的服务托管也有理解。
今天,我这里要说的是 使用 stackato 进行服务托管。 简单的来说,通过它,你可以将一个自己的服务(或者应用,app)放到互联网上,只要是有网络的地方都可以使用。
part 1:先看几个使用 stackato 发布的服务!
# 一个网友发布的服务,首页有比较全面的 stackato 的使用。
http://www.bigfastblog.com/deploy-the-tornado-chat-demo-on-the-stackato-paas-sandbox
# 自己的一个使用stack 源码中提供的tornado-chat-mono 发布的服务。下文的安装也都是基于这个服务
http://jia-tornado-chat.sandbox.activestate.com/
part 2: stackato 介绍
简单来说, stackato 是ActiveState 发布的 PaaS(Platform-as-a-Service).
# stackato 的官方网址:
http://community.activestate.com/stackato
# stackato 的安装文档
http://docs.stackato.com/quick-start.html
# ActiveState 的官网
http://community.activestate.com/
part 3: 安装步骤
stackato 本身提供完整的 server 端和 client 端。本文只介绍 client 的使用,server 端使用 官方提供的公共server.
1: 在 ActiveState “http://community.activestate.com/” 上通过邮箱申请一个账号
2: 进行步骤1之后, 就可以在 ActiveState 上自由访问。 这时,在 “http://community.activestate.com/stackato” 上申请一个 Stackato Sandbox 账号。
密码申请成功后,在ActiveState 中的账号信息”https://account.activestate.com/“中可以看到。
3: 在 “http://community.activestate.com/stackato/download” 上下载一个 Stackato Client 版本。我的服务器是 Ubuntu 10.0.4 LTS, 我选择了 ”Linux i686“ 下载。
4: 下载 “stackato-0.3.13.0.18-linux-glibc2.3-ix86.zip” 之后, unzip 进行解压:
$ unzipstackato-0.3.13.0.18-linux-glibc2.3-ix86.zip
5: 赋予 它执行的权限:
$ chmod +xstackato-0.3.13.0.18-linux-glibc2.3-ix86
6: 将该文件修改名字,并移动到 bin目录下。
$ mv stackato-0.3.13.0.18-linux-glibc2.3-ix86 /usr/local/bin/stackato
这时,在命令行输入 stackato, 如果出现如下信息,说明stackato 安装成功:
$ stackato
Usage: stackato [options] command [<args>] [command_options]
Try 'stackato help [command]' or 'stackato help options' for more information.
7: 使用步骤2 申请的 standbox 密码,登陆Stackato 服务端。
$ stackato login
Attempting login to [https://api.stackato.local]
Email: jiaxiaolei19871112@gmail.com
Password: ****************
Cannot access target (couldn't open socket: host is unreachable (Name or service not known))
这里默认连接的server 端时本地服务,所以如果我们连接 ActiveState 公共sandbox, 需要主动修改一下 url.
$ stackato target https://api.sandbox.activestate.com
Successfully targeted to [https://api.sandbox.activestate.com]
修改 url 之后在进行一次login:
$ stackato login
Attempting login to [https://api.sandbox.activestate.com]
Email: jiaxiaolei19871112@gmail.com
Password: ****************
Successfully logged into [https://api.sandbox.activestate.com]
#NOTE: login, target 的使用方法可以通过 stackato help [command] 的方法进行查看.
8: 登录到 server 端之后,我们可以发布一个demo 进行测试。
在本地目录建立一个 src 文件夹,当然了,你也可以使用别的目录。
$ mkdir ~/src
在 src 目录下, 从 github 上下载一份demos
$ cd ~/src
$ git clone https://github.com/ActiveState/stackato-samples
$ cd stackato-samples/
$ ls
clojure java node perl php python README.md ruby
$ cd python/tornado-chat-mongo/
$ ls
app.py README.md README.txt requirements.pip requirements.txt stackato.yml static templates
#NOTE: 试着将项目执行一下:
$ python app.py --port=6304
此时,通过 6304 端口就可以访问这个服务了。
9: 将这个服务发布到Stackato。
第一次测试,可以使用默认的选项。直接按回车就可以。
$ stackato push tornado-chat
Would you like to deploy from the current directory ? [Yn]: y
Application Deployed URL [tornado-chat.sandbox.activestate.com]:
Application Url: tornado-chat.sandbox.activestate.com
Detected a Python Application, is this correct ? [Yn]: y
Memory Reservation [64M]:
Creating Application [tornado-chat]: Error 701: The URI: 'tornado-chat.sandbox.activestate.com' has already b
een taken or reserved
这里提示 Deployed URL不可用。我们该用一个未被使用的url
$ stackato push tornado-chat
Would you like to deploy from the current directory ? [Yn]: y
Application Deployed URL [tornado-chat.sandbox.activestate.com]: jia-tornado-chat.sandbox.activestate.com
Application Url: jia-tornado-chat.sandbox.activestate.com
Detected a Python Application, is this correct ? [Yn]: y
Memory Reservation [64M]:
Creating Application [tornado-chat]: OK
Creating mongodb Service [mongo-chat]: OK
Binding Service [mongo-chat]: OK
Uploading Application [tornado-chat]:
Checking for available resources: OK
Packing application: OK
Uploading (7K): 100% OK
Push Status: OK
Staging Application [tornado-chat]:
Staging Application [tornado-chat]: OK
Starting Application [tornado-chat]: OK
查看 服务的状态:
$ stackato apps
+--------------+---+---------+------------------------------------------+------------+
| Application | # | Health | URLS | Services |
+--------------+---+---------+------------------------------------------+------------+
| tornado-chat | 1 | RUNNING | jia-tornado-chat.sandbox.activestate.com | mongo-chat |
+--------------+---+---------+------------------------------------------+------------+
10: 在浏览器中输入 ”http://jia-tornado-chat.sandbox.activestate.com“ 就可以访问服务了。
扩展阅读:
云平台服务一览:
http://www.ruanyifeng.com/blog/2011/08/list_of_cloud_platforms.html
http://blog.csdn.net/bpy/article/details/6705391
#NOTE: 如果对于stackato 的安装有任何疑问,欢迎交流!
# 这里只是用 python -tornado 举例,当然了,你可以发布别的代码。 如果发布成功或失败,都可以给我回复。:D