迁移完成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