基於Django框架開發的個人博客近乎完工,就缺關鍵字索引功能和些許頁面的設計,結果BAE停掉了域名綁定服務(不能只使用BAE提供的二級域名訪問吧)。於是,折騰了一些於BAE類似的服務。
目標:*找個支持Python(Django)的平台,開發一款自己的Blog。 *
當然,儘量免費。學生黨,未工作,沒有依賴自己的資金來源——只能需求那些免費的雲服務了。 ##嘗試的雲服務平台 ###Google的GAE Google的GAE貌似對Django的支持不好,沒有嘗試。之前通過GAE搭建過自己的服務,但是在國內無法正常訪問。不過,如果綁定域名之後即可通過域名進行訪問。 如果不是生存在中國大陸,Google的GAE絕對是第一選擇。問題主要出在域名綁定。- 不支持.cn域名綁定。
- Google Apps for Business要花費。一年貌似300RMB左右。想嘗試,但是不支持.cn域名綁定。 在環境許可的條件下,還是優先選擇Google的,不過可惜了。
###HeroKU 之前想學習Node.JS的時候,折騰過。默認也支持Django,本來是準備使用HeroKu的,但是問題在於訪問實在是太慢,官網都得等許久才能顯示。
因為速度慢,調試等操作節奏就很慢——無奈放棄掉了。(應該是校園網絡環境得缺陷吧)。###SEA、TAE, etc. 相信和BAE一個德行,沒有深入嘗試。進入官網後看看說明介紹,就直接放棄。SAE要什麼豆(變相收費),沒時間折騰;TAE試用,註冊就一堆事項,亦不折騰。
###OPENSHIFT 最終選擇的,可以搭建三個應用,支持域名綁定。速度和HeroKu類似,也很慢。不過文檔支持很好,自動提供的二級域名只能通過https來訪問。
有一點強悍的是支持Django,本地開發調試和上傳等操作真的很方便。唯一難以讓自己接受的是通過git進行代碼update的時候,操作比較多,速度很慢。 還有支持SSH登錄。(雖然執行操作的權限不多,但是真的很好玩)。最後,文檔支持也是很重要的。GAE、HeroKu和openshift的文檔很豐富;嗯,都是看得明白的英文。
##創建項目 這個就直接查看OpenShift上面的說明文檔。很詳細,只要耐心看下去。
只要能夠安裝和學會rhc即可。 相關鏈接:#創建項目$ rhc app create MyApp python-2.7#添加服務$ rhc cartridge add mysql-5.1 -a MyApp
此時自己的Web App地址是 (其中MyDomain即是你的OpenShift帳號名)。可以通過https訪問,在國內吧。
##搭建本地調試環境 創建好App之後,即可開始進行自己項目的開發編輯。注意的點是Django版本是1.4。
配置文件setting.py數據庫配置方面有個條件句。內容如下:if ON_OPENSHIFT: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': DB_NAME, 'USER': DB_USER, 'PASSWORD': DB_PASSWD, 'HOST': DB_HOST, 'PORT': DB_PORT, } }else: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
具體操作為:先判斷是否為OpenShift平台,如果是,則配置上面的那個數據庫;否則,即配置下面的數據庫(作為本地開發調試使用)。這樣本地環境和OpenShift環境僅僅在數據庫方面的區別,其它相同,這樣就不必像我之前那樣,在本地開發好後在上傳。
##發佈自己的項目 ###數據庫配置 數據庫地址等等操作都是根據 來設置的。結果悲劇問題來了。if os.environ.has_key('OPENSHIFT_APP_NAME'): DB_NAME = os.environ['OPENSHIFT_APP_NAME']if os.environ.has_key('OPENSHIFT_DB_USERNAME'): DB_USER = os.environ['OPENSHIFT_DB_USERNAME']if os.environ.has_key('OPENSHIFT_DB_PASSWORD'): DB_PASSWD = os.environ['OPENSHIFT_DB_PASSWORD']if os.environ.has_key('OPENSHIFT_DB_HOST'): DB_HOST = os.environ['OPENSHIFT_DB_HOST']if os.environ.has_key('OPENSHIFT_DB_PORT'): DB_PORT = os.environ['OPENSHIFT_DB_PORT']
根本得不到數據方面的信息,必須得在_DB_前添加MYSQL才會有意義。如OPENSHIFT_DB_HOST必須用OPENSHIFT_MYSQL_DB_HOST來替換。這樣才能正常訪問數據庫。 ###域名綁定 直接通過OpenShift官網。登錄後,選中自己的域名,添加alias即可。這也是我選擇OpenShift作為自己的博客開發服務的最直接原因。 ###SSH登錄查看 OpenShift還有個功能就是可以通過SSH登錄到遠程服務。 在終端輸入rhc app show -a App_name
後會獲取到該App的所有信息。其中有一相就是SSH地址。
##總結
通過OpenShift開發的Web App的訪問依舊很慢(而且我還大量依賴JS),不過已經滿足了。現在,自己的博客網站 終於可以正常訪問。而且成本花費不高——零投資吧!