在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=( '/',' ...
随机推荐
- 使用maven&&make-distribution.sh编译打包spark源码
1>基础环境准备: jdk1.8.0_101 maven 3.3.9scala2.11.8 安装好上述软件,配置好环境变量,并检查是否生效. 2>配置maven:intellij idea ...
- .NET处理Json的几种方式
序列化里的xml,soap,binary在上一篇文章里面已经说过了,这篇主要说json. json是目前非常流行的一种序列化数据的方式,很多api都采用的是json,结构简洁,容易理解,适用性强,逐渐 ...
- deep learning loss总结
在深度学习中会遇到各种各样的任务,我们期望通过优化最终的loss使网络模型达到期望的效果,因此loss的选择是十分重要的. cross entropy loss cross entropy loss和 ...
- wc命令详解
基础命令学习目录首页 原文链接:http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html Linux系统中的wc(Word Count) ...
- 10款常见MySQL高可用方案选型解读
一.概述 我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. ...
- Data truncation: Truncated incorrect DOUBLE value:
在写sql查询语句queryRunner.update(connection,"update account set balance=? where name=?",account ...
- Daily Scrum6 11.10
今日任务: 徐钧鸿:codingcook的sql相关内容,并在进行复查张艺:继续用户管理部分代码黄可嵩:学习搜索的知识,继续进行搜索的移植和响应徐方宇:动态控件和页面间信息传递以及页面响应事件机制试验 ...
- java的内存管理机制
1.内存区域的分类 栈内存:基本类型变量和对象的引用,优势在于存取速度快 堆内存:new创建的对象和数组以及对象的实例化变量,优势在于动态分配内存,但是存取速度相对较慢 2.不同类型的内存分配 (1) ...
- YQCB冲刺第二周第一天
今天的任务为实现查看消费明细的功能. 遇到的问题是按类别显示. 站立会议为: 任务面板为:
- Jsp----注册登陆
一.需求分析 目前99%的网站都会有用户的登陆注册界面(用户就是一切嘛).其需求可想而知. 二.设计过程及所查寻资料 通过寻找上课老师所给予的课件,搜寻相关内容:目前以获取相关有java web关于w ...