一、背景

最近在学习web.py,跟随官网的cookbookcode examples一路敲敲打打,在本地访问了无数遍http://0.0.0.0:8080/,也算是对web.py有了基本的认识。为了加强动手实践,我决定自己写一个简单的web.py应用;为了让这个web.py应用能够真正运行在互联网上,我决定将其托管到一个AppEngine(应用引擎)中去。

目前可供选择的AppEngine有很多,国内的有:百度的BAE、新浪的SAE、阿里的ACE,国外的有:Google的GAE、Redhat的OpenShift,等等。这些AppEngine我都没有用过,自然无权评价它们孰优孰劣,网上关于这些AppEngine的比较有不少。目前为止,这些AppEngine都要收费,虽然SAE申请开发者认证后可以勉强使用,但是申请步骤个人觉得很繁琐。

我选择OpenShift的理由很直接:它在提供收费业务的同时,也支持免费使用(尽管免费服务有一些限制:只能创建三个 app,提供 1.5G 内存和 3G 存储空间,但完全满足我当前的需求),并且操作简单

二、注册帐号

进入OpenShift注册页面,填写邮箱和密码完成注册,收到邮件后点击链接激活帐号即可。

三、创建应用

OpenShift提供了“Web控制台”和“命令行”两种方式来创建应用。

1、Web控制台(web console)

进入管理后台,按照界面提示操作即可,主要有以下几步:

  • 点击“创建应用(Create Application)”属性页
  • 选择应用的Web编程语言(Choose a type of application)
  • 填写“Public URL”中的应用名(Application name)和域名(Domain name)
  • 使用附加功能(数据库、持续构建等)

具体操作在Redhat OpenShift 云计算平台试用小记中有很好的讲解,推荐参考。

2、命令行(command line)

1)安装RHC工具

$ sudo apt-get install ruby rubygems
$ sudo gem install rhc

注意:如果“sudo gem install rhc”命令长时间无响应(可能是自动下载gem包有问题),可以到gems包中心搜索并下载rhc包后,采取本地安装

$ sudo gem install rhc-1.10..gem -l

如果安装过程中有依赖,可以根据错误提示到gems包中心逐一搜索并下载,本地安装依赖包(安装命令同rhc,如果又有依赖,递归处理)完毕后,再安装rhc。

2)初始配置

$ rhc setup

3)创建web.py应用

Python Application Hosting中给出了OpenShift支持的Python应用。如果想创建web.py应用,选择Web2Py,其中的openshiftwebpy应用很好地展示了“OpenShift中web.py应用的基本框架”。这里以openshiftwebpy应用为例给出创建web.py应用的命令:

$ rhc app create -a openshiftwebpy -t python-2.6

四、提交应用

在OpenShift中提交应用的一般方法可以参考Deploying and Building Applications,具体到openshiftwebpy应用可以参考README.md

1、安装Git

$ sudo apt-get install git

2、提交代码

1)git下载

git下载,也就是将git仓库中的应用下载到本地,具体到openshiftwebpy应用,命令如下:

$ git clone ssh://51e76ffce0b8cd263d000024@openshiftwebpy-russellluo.rhcloud.com/~/git/openshiftwebpy.git/ openshiftwebppy

其中,形如“ssh://.../~git/openshiftwebpy.git/”的字符串为“Git URL”,可以通过“rhc app show openshiftwebpy”命令获得。

如果使用“命令行”创建应用,则会自动进行git下载;只有使用“Web控制台”创建应用时,才需要执行上述命令手动进行git下载。

注意:如果“git clone”命令失败,通常跟SSH有关,解决方法如下:

$ rhc app delete openshiftwebppy    # 慎用此命令:它会删除与应用相关的所有内容,注意备份
$ rhc app create openshiftwebppy python-2.6
$ ssh-keygen -f ~/.ssh/id_rsa -t rsa    # 重新创建ssh key
$ ssh-add ~/.ssh/id_rsa  # 更新本地的ssh私钥
$ rhc sshkey remove -i default # 删除OpenShift上名为"default"的key(如果有)
$ rhc sshkey add -i default -k ~/.ssh/id_rsa.pub    # 添加ssh公钥(名为"default")到OpenShift

2)修改代码

$ cd openshiftwebpy
$ git remote add upstream -m master git://github.com/openshift/openshiftwebpy.git
$ git pull -s recursive -X theirs upstream master

3)git提交

$ git push

五、访问应用

访问应用主页http://openshiftwebpy-russellluo.rhcloud.com/(如果被GFW了,可以尝试https://openshiftwebpy-russellluo.rhcloud.com/)

关于在OpenShift上托管web.py应用,本文只介绍了最基本的操作,诸如数据库、调试、构建等高级主题可以进一步参考Python Application Hosting或者Developer Center

在OpenShift上托管web.py应用的更多相关文章

  1. windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  2. 在windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  3. 【Python】web.py初识学习

    简单而直接的Python web 框架:web.py 2016年11月03日 14:09:08 擒贼先擒王 阅读数:35157更多 个人分类: Web   From:https://www.oschi ...

  4. 简单而直接的Python web 框架:web.py

    web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限制的. 先让大家感受一下web.py 的简单而强大: import web ur ...

  5. Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区

    Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区 Kindeditor+web.py+SAE Storage 实现文件上传

  6. jQuery Ajax使用FormData上传文件和其他数据,后端web.py获取

    参考博文: 通过jQuery Ajax使用FormData对象上传文件 方法一:使用<form>表单初始化FormData对象方式上传文件 前端(JQuery): <form enc ...

  7. 【Python】【web.py】python web py入门-4-请求处理(上)

    python web py入门-4-请求处理(上) 2017年09月05日 23:07:24 Anthony_tester 阅读数:2907 标签: webpy入门请求处理 更多 个人分类: Pyth ...

  8. web.py上传文件并解压

    有个需求是从php端上传zip文件到python端并且解压到指定目录,以下是解决方法 1.python端,使用的web.py def POST(self): post_data = web.input ...

  9. python 3.x上安裝web.py

    python 3.x上安裝web.py 查询之后,安装时使用pip3 install web.py==0.40.dev0 最終可以运行 app.py import weburls=(    '/',' ...

随机推荐

  1. gcc 与 g++的区分较

    一:gcc与g++比较 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为 ...

  2. Cocos2dx源码赏析(3)之事件分发

    Cocos2dx源码赏析(3)之事件分发 这篇,继续从源码的角度赏析下Cocos2dx引擎的另一模块事件分发处理机制.引擎的版本是3.14.同时,也是学习总结的过程,希望通过这种方式来加深对Cocos ...

  3. 使用git-premit时的问题

    package.json 相关配置如下 { "scripts": { "lint": "eslint pages/* component/* --fi ...

  4. T&F 圆桌:儿童智能玩具离我们还有多远?

    “女人和孩子的钱是最好挣的”,这句经典的名句被很多商家奉为信条,这在现实生活中也得到了很好的印证. 各种步行街.商业街.Mall 干的做多的事情就是:围绕着女人和孩子打造创造消费点.步行街.商业街上各 ...

  5. 微信公众号开发笔记1(nodejs开发)

    本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...

  6. TeamWork#3,Week5,The First Meeting of Our Team

    sixsix第一次会议记录 [会议时间]2014年10月23日星期四19:00-20:00 [会议形式]小组讨论 [会议地点]5号公寓 [会议主持]高雅智 [会议记录]张志浩 会议整体流程 一.签到 ...

  7. Task 6.2冲刺会议七 /2015-5-20

    今天把主界面改善了一下,主要功能时摄像头的使用以及语音聊天的部分,两个部分的设计原理基本相同,但是可是好几个模块让有点不知道该怎么下手.这时候我感觉到了模块拼接是很困难的,只有十分清楚每个模块才能很好 ...

  8. Task 8 找水王

    任务: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. 如果你 ...

  9. Structs2笔记③--局部类型转换案例

    Structs2的类型转换-局部类型转换 Ognl强大的表达式语言,在导入项目的时候我们导入了ognl.jar包,内有TypeConverter类,struct主要依赖于他进行类型转换. 例子   i ...

  10. 用JAVA制作微型操作系统4月23日情况

    弄好了一个自认为十分精美的界面,但本想着昨天就在开始按钮上先套入控制jp222面板上的jb2标签上的时间更新,这按钮起到开始线程的作用(我认为按钮应该可以通过t.start()来触发线程,结果不知为什 ...