Django開源項目mezzanine遷移SAE分享

遷移完成Deml: http://mezzanine.sinaapp.com/



經歷了長達兩個多月的排隊之後,終於審批通過,確實激動了一把。(兩個月太長了........)

不知咋的想搞個blog試試,但是糾結於自個審美不行,前端搞不定,哎,找個現成的

然後就開始在網上尋找

期間找到很多很酷的項目,不過大都是php的,有些基於python的 web框架的,也是很長一段時間沒人維護了...........

終於,在google大神幫助下,找到一個很給力的作品


官方網址:http://mezzanine.jupo.org/

Demo:http://mezzanine.jupo.org/blog/?device-time=133873453433

文檔:http://mezzanine.jupo.org/docs/

github:https://github.com/stephenmcd/mezzanine


昨天搞了一個下午

.....這個,都是我一個人點的.....囧

本地調試環境沒有,只能通過調線上的了.....




水土不服,雖不需要大改,但是其中要注意的地方還是很多的

分享下過程和感受:

建議:一上來不要急着做,先把項目和sae的文檔讀下,吐槽下,sae文檔也太"簡潔"了.....

1. 確認並統一環境

首先,確認你要遷移項目所依賴各個包的版本,列出來

然後,看看SAE提供版本是否符合



Then,統一你的開發環境版本和將遷移項目依賴環境版本

這個我比較喫虧,我python裝2.7,3.0    django1.3  遷移之前沒統一,導致項目搞下來一堆環境導致的問題

無法運行,最後索性,清了原有的環境,重裝了一套,直接pass了

環境很重要!很多莫名其妙的錯誤,哎,傷不起呀


2.確認項目在本地環境可以運行

本地跑不通,就不要指望到SAE能跑通了.......

這個依賴於你要遷移的項目,起碼文檔要去看一下的,瞭解安裝過程,注意事項,如何配置等等

只要本地起來了,且沒有問題了,便成功了一半

注意,此時數據庫也建完了


3.遷移前處理:

因爲遷移後,很多依賴的包在SAE下並沒有,所以,你必須把依賴的模塊包整個文件夾複製到你的項目目錄下

找到包路徑,一般是:C:\Python27\Lib\site-packages

尋找路勁的方法:

import module

print module.__path__

把需要模塊複製到項目目錄下,並刪除這個位置的模塊文件(我直接重命名),以保證依賴包用的是項目中的,而非默認安裝路徑的

你可以一個個確認,我一般是根據項目列的依賴一個個遷移,漏了報錯了再回來補(一般不會)

搞完之後,你在本地就有了一個可以獨立運行成功的版本


4.上傳svn到SAE

上傳之前,要改的幾個地方  config.yaml  index.wsgi 自己創建

目錄結構剛開始會是

project_dir_name

     -1

          -project_dir_name

          -config.yaml

          -index.wsgi

A.index.wsgi 

import os
import django.core.handlers.wsgi

import sae

os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project_name.settings'

application = sae.create_wsgi_app(django.core.handlers.wsgi.WSGIHandler())


B. config.yaml  這裏配置你使用的非默認包版本,例如我這裏使用時django1.4

libraries:
- name: django
  version: "1.4"
  


C.修改數據庫配置:

sae上需要開通應用的mysql,所以配置上會有不一致,修改settings.py

from os import environ
debug = not environ.get("APP_NAME", "") 
if debug:
    #LOCAL 
    db_name = "blog1"
    name = "root"
    pwd = "123456"
    host = "127.0.0.1"
    port = "3306"
else: 
    #SAE 
    import sae.const
    db_name = sae.const.MYSQL_DB     
    name = sae.const.MYSQL_USER   
    pwd = sae.const.MYSQL_PASS   
    host = sae.const.MYSQL_HOST    
    port = sae.const.MYSQL_PORT   
    host_s = sae.const.MYSQL_HOST_S 
  
DATABASES = {
    "default": {
        # Add "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
        "ENGINE": "django.db.backends.mysql",
        # DB name or path to database file if using sqlite3.
        "NAME": db_name,
        # Not used with sqlite3.
        "USER": name,
        # Not used with sqlite3.
        "PASSWORD": pwd,
        # Set to empty string for localhost. Not used with sqlite3.
        "HOST": host,
        # Set to empty string for default. Not used with sqlite3.
        "PORT": port,
    }
}

D.把你的數據庫導入到sae

這裏,只需要導出建表語句和數據語句,存到*.sql文件就成

其他庫相關,drop table,lock等不要導出來,會造成導入錯誤的


好了,到這裏,傳上去再說,遇到問題再處理!!!


5.問題:

A.找不到第三方依賴模塊:

蛋碎的問題,命名第三方的包就在那個地方,就是報找不到。。。。囧

解決方法,在settings.py  最後加入:

import os,sys
project_path = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_path)
把當前路徑加入sys.path


B。無法訪問到css,js等靜態資源

這是另外一個問題,解決方法:把static往外挪一層目錄

結構是




---------------------------------------------------------------------------------------------------

就這些,希望有幫助

整個歷時近7個小時,打開網頁2000+,網頁自個點了500+,一路幹掉問題無數,哎,最近google大神不給力啊,老抽風,百度又一如既往,湊合學着用bing了


項目遷移訪問Demo地址:http://mezzanine.sinaapp.com/

目前啥都沒有,純原版結構(默認bootstrap的....),內容,佈局,主題什麼的都沒搞

後續,沒空的話,就整整搞個blog出來

有空給的話,就爭取搞個類似sae上wordpress一鍵部署的東西。。。。話說裝了wp試用了下,又卸掉了。。。。


The End!

2012-06-03














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章