在OpenShift上托管web.py应用
一、背景
最近在学习web.py,跟随官网的cookbook和code 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有关,解决方法如下:
- Connection timed out:反复重建应用,直到ssh可用(即git clone成功)为止,重复次数要看运气了(参考Openshift was blocked by GFW in China)
- $ rhc app delete openshiftwebppy # 慎用此命令:它会删除与应用相关的所有内容,注意备份
- $ rhc app create openshiftwebppy python-2.6
- Permission denied:重新创建ssh key后,分别更新到本地和OpenShift(综合参考erro in creating an application on jbossas-7.0和Error: Agent admitted failure to sign)
- $ 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应用的更多相关文章
- windows下如何快速搭建web.py开发框架
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...
- 在windows下如何快速搭建web.py开发框架
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...
- 【Python】web.py初识学习
简单而直接的Python web 框架:web.py 2016年11月03日 14:09:08 擒贼先擒王 阅读数:35157更多 个人分类: Web From:https://www.oschi ...
- 简单而直接的Python web 框架:web.py
web.py 是一个Python 的web 框架,它简单而且功能强大.web.py 是公开的,无论用于什么用途都是没有限制的. 先让大家感受一下web.py 的简单而强大: import web ur ...
- Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区
Kindeditor+web.py+SAE Storage 实现文件上传 - 开源中国社区 Kindeditor+web.py+SAE Storage 实现文件上传
- jQuery Ajax使用FormData上传文件和其他数据,后端web.py获取
参考博文: 通过jQuery Ajax使用FormData对象上传文件 方法一:使用<form>表单初始化FormData对象方式上传文件 前端(JQuery): <form enc ...
- 【Python】【web.py】python web py入门-4-请求处理(上)
python web py入门-4-请求处理(上) 2017年09月05日 23:07:24 Anthony_tester 阅读数:2907 标签: webpy入门请求处理 更多 个人分类: Pyth ...
- web.py上传文件并解压
有个需求是从php端上传zip文件到python端并且解压到指定目录,以下是解决方法 1.python端,使用的web.py def POST(self): post_data = web.input ...
- python 3.x上安裝web.py
python 3.x上安裝web.py 查询之后,安装时使用pip3 install web.py==0.40.dev0 最終可以运行 app.py import weburls=( '/',' ...
随机推荐
- oozie-ext
安装oozie的时候需要ext的包支持,网站上找了一遍不是没有就是这个csdn下载还需要币,麻蛋...下面给出这个链接,在百度云上,如果失效了,在评论区或者给我留言,再发,一下是ext2.2.zip ...
- php 常用英语小汇
bstract抽象的 -挨伯丝拽克特 access存取.访问 -挨克色丝 account账户 -厄靠恩特 action动作 -爱克身 activate激活 -爱克特维特 active活动的 -爱克得 ...
- TeamWork#3,Week5,Scrum Meeting 11.15
经过最近一段时间的努力,我们调整了爬虫结构,并在继续进行爬虫开发,马上可以进行新爬虫与服务器连接的测试. 成员 已完成 待完成 彭林江 基本完成爬虫结构调整 新爬虫与服务器连接 郝倩 基本完成爬虫结构 ...
- 2-Sixth Scrum Meeting20151206
任务分配 闫昊: 今日完成:请假.(最近代码写得多……很累……) 明日任务:完成数据库设计. 唐彬: 今日完成:ios客户端代码的深度学习. 明日任务:读IOS讨论区后台接口. 史烨轩: 今日完成:请 ...
- 20135231 JAVA实验报告三:敏捷开发与XP实践
---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...
- 仿ArrayList功能的bag类
仿ArrayList功能的bag类 要想做到能够实现ArrayList功能,首先要有一个能往里填任何类型元素的的空间,但是不能用ArrayList来创建空间,这样这个项目就没有意义,因此,我创建了一个 ...
- 关于Target=" "的一些属性
总结目前所知的Target=""的几个属性,对其它博客进行整理和归纳. Target="_blank":浏览器总在一个新打开.未命名的窗口中载入目标文档. 说通 ...
- Full GC
1,新生代:(1)所有对象创建在新生代的Eden区,当Eden区满后触发新生代的Minor GC,将Eden区和非空闲Survivor区存活的对象复制到另外一个空闲的Survivor区中.(2)保证一 ...
- 【CS231N】1、图像分类
一.知识点 1. 计算机识别物体面临的困难 视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现. 大小变化(Scale variation):物体可视的大小通常 ...
- DPDK实例程序:testpmd
用户手册:https://doc.dpdk.org/guides/testpmd_app_ug/index.html 还不错的入门:http://syswift.com/188.html 我的运行情况 ...