遷移完成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())
libraries:
- name: django
version: "1.4"
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