在OpenShift上託管web.py應用

1、背景html

最近在學習web.py,跟隨官網的cookbookcode examples一路敲敲打打,在本地訪問了無數遍http://0.0.0.0:8080/,也算是對web.py有了基本的認識。爲了增強動手實踐,我決定本身寫一個簡單的web.py應用;爲了讓這個web.py應用可以真正運行在互聯網上,我決定將其託管到一個AppEngine(應用引擎)中去。python

目前可供選擇的AppEngine有不少,國內的有:百度的BAE、新浪的SAE、阿里的ACE,國外的有:Google的GAE、Redhat的OpenShift,等等。這些AppEngine我都沒有用過,天然無權評價它們孰優孰劣,網上關於這些AppEngine的比較有很多。目前爲止,這些AppEngine都要收費,雖然SAE申請開發者認證後能夠勉強使用,可是申請步驟我的以爲很繁瑣。git

我選擇OpenShift的理由很直接:它在提供收費業務的同時,也支持無償使用(儘管免費服務有一些限制:只能建立三個 app,提供 1.5G 內存和 3G 存儲空間,但徹底知足我當前的需求),而且操做簡單github

2、註冊賬號web

進入OpenShift註冊頁面,填寫郵箱和密碼完成註冊,收到郵件後點擊連接激活賬號便可。數據庫

3、建立應用express

OpenShift提供了「Web控制檯」和「命令行」兩種方式來建立應用。編程

一、Web控制檯(web console)ruby

進入管理後臺,按照界面提示操做便可,主要有如下幾步:app

  • 點擊「建立應用(Create Application)」屬性頁
  • 選擇應用的Web編程語言(Choose a type of application)
  • 填寫「Public URL」中的應用名(Application name)和域名(Domain name)
  • 使用附加功能(數據庫、持續構建等)

具體操做在Redhat OpenShift 雲計算平臺試用小記中有很好的講解,推薦參考。

二、命令行(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.7.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

4、提交應用

在OpenShift中提交應用的通常方法能夠參考Deploying and Building Applications,具體到openshiftwebpy應用能夠參考README.md

一、安裝Git

$ sudo apt-get install git

二、提交代碼

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

5、訪問應用

訪問應用主頁http://openshiftwebpy-russellluo.rhcloud.com/(若是被GFW了,能夠嘗試https://openshiftwebpy-russellluo.rhcloud.com/)

 

關於在OpenShift上託管web.py應用,本文只介紹了最基本的操做,諸如數據庫、調試、構建等高級主題能夠進一步參考Python Application Hosting或者Developer Center

相關文章
相關標籤/搜索