百
e
购开发日记(一)
历时大概
18
个月的开发,主要是周末和晚上,百
e
购终于蹒跚的来到这个人间,
best100shop
是啥
? 具体查看
。
从开始到现在经历了不少有意思的事情和困难,学到了不少的东西,很多是程序之外的,现把开发中的种种经历总结出来,和大家分享,很多地方还不成熟,主要是初学者避免走弯路。有点乱有的倒叙,先拟定分十二个小章节,根据具体的情况再增加或减少。
1. 部署
2. Logging
3. Job 的定义
4. 图片处理
5. Model(模型)
6. View & Template(视图和模板)
7. Control(控制器)
8. Tips
9. Utility
10. OAuth
11. CSS & Javascript
12. 技术之外
1.部署
感谢好友提供服务器,国内还有一个比较便宜和方便操作的
RubyOnRails
托管商(软广告)。当然我的程序是
Python
的,尚没有人在服务器上面使用过,所以很多环境从头开始操作。
1.1 Django
项目包结构
默认的结构,不多述,官方的是:
mysite/
__init__.py
manage.py
settings.py
urls.py
默认的
Django
的每个子的
application
都是在根目录下,比如:
mysite/
application_one/
但是往往,整个项目包含很多个
application
有自己的也有开源的第三方的,还有很多的
utili
包啊等等,
如果一股脑的放置在项目的根目录下,那会很乱不便于管理。所以一般的,我们会选择在分几个目录,比如:
mysite/
apps/ # 专门我自己的 application
application_one/
extras/ # 第三方 Django application
extend_application/
libs/ # 独立的第三方包
third_parser/
utils/ # 我自己的帮助类
help.py
好了这就是基本的项目包结构,根据你自己的项目的实际需求,你在做调整。
1.2 服务器环境搭建
托管主机当然是使用
Apache
,直截加一个
VirtualHost
。现在是依赖于
modwsgi
,
在配置里面需要加入
WSGIScriptAlias:
WSGIScriptAlias /
/{{YOUR_PROJECT_HOME}} /django.wsgi
这个不要你操心,托管商会自动帮你添加的。到这里你可能也知道你默认的
Django
生成的项目结构里面没有
django.wsgi
,不错,
这个是需要你手动维护的,具体文件的含义参考
官方
,
在你的项目的根目录创建
django.wsgi.
你需要添加下面的东西
#!/usr/bin/python
#-*-coding:UTF-8-*-#
import os, sys
sys.stdout = sys.stderr # 如果你的项目里偶尔带个 print 的话,添加这个 modwsgi 会讨厌这个,严禁的话应该使用 logging ,下面将详细描述
sys.path.append('{{YOUR_PROJECT_HOME_PARENT}}') # 这个是我的托管商这里需要的
sys.path.append('{{YOUR_PROJECT_HOME}}')
os.environ['DJANGO_SETTINGS_MODULE'] = '{{PROJECT_NAME}}.settings'
import django.core.handlers.wsgi
application=django.core.handlers.wsgi.WSGIHandler()
1.3 第三方
Python
包
总是有很多项目需要很多特别的第三方包,
一般管理员不会安你的要求去安装,而其总是有那么几个关键的包有版本冲突。在完善的开发环境中应该有严禁的代码版本管理体系,小回忆一下,在花旗,内部有一个叫
xenv
的系统,管理各种第三方的库,
提供一个控制台,
web
界面让你配置项目需要的第三方库。在发布和开发中,当你配置好后会有一个
ID
,你将此
ID
提交到自动打包系统,他就会将你选择的第三方都检测一遍,打好一个
.destream
文件,发布很轻松。
话又回来。好现在既然管理员不能随叫随到,我们自己来配置,
这里在我们自己的
HOME
目录下我们创建于一个这样的目录:
home/
my_name/
lib/
python*.*/ # Python 的版本 比如 python2.5
site-packages/
很眼熟?
对的就是标准
Python
安装目录下的
site-packages
目录结构,
这里我们是使用是
Python setuptools
来安装的,
下面我们陆续的把我们需要的
pyhton
第三方包下载下来了。准备安装了。
由于我们没有权限往系统的
site-packages
安装包,所以在命令的时候我们需要传入
–prefix
参数:
python setup.py --prefix=/home/MY_NAME
安装完后,
到我们自己的
site-packages
下面瞅瞅看看是不是安装上去了。
1.4 再次调整项目
做了很多的定制,显然默认的种种设置需要调整。
将自己的
site-packages
添加到我们的运行环境中。
在项目的
settings.py
里面我们添加上下面的代码:
sys.path.insert(0, '/{{MY_LIB)}/site-packages/*****.egg')
sys.path.insert(0, '/{{MY_LIB}} /site-packages/')
这样子使自己包的优先级别会比系统的高。
将我们额外添加的目录加入到路径中(在上文配置的):
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'extras'))
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'libs'))
1.5 跑一把看看
首先我们需要吧表都创建好,
这个时候需要
Django admin
命令了,熟悉
django
的人都知道
syncdb
就可以了,
django-admin.py syncdb
报错了:
Error: Settings cannot be imported, because
environment variable DJANGO_SETTINGS_MODULE is undefined.
Django
依赖项目的
settings.py
来启动,
显然系统找不找到这个
settings.py
我们需要显式的
export
这个参数:
export DJANGO_SETTINGS_MODULE={{MY_PROJECT_NAME}}.settings
再跑一把,又一个错误:
Error: Could not import settings '{{YOUR_PROJECT_NAME}}.settings'
(Is it on sys.path? Does it have syntax errors?): No module named
best_v06.settings
还差点点。
我们需要
export
另外一个变量:
export PYTHONPATH={{PROJECT_PARENT_DIR}}
比如我的是:
export
PYTHONPATH=/home/my_name/web
我的项目在
/home/my_name/web/my_project
再跑一下,
终于在创建表了, 这是第一步。
好了,这次就到这里,下面将
Logging
配置,一个成熟的项目
Logging
非常重要,特别是在大型复杂多人开发的系统,没有
Logging
将来的技术支持将会是地狱,这也是为什么千万小心在代码中使用
print
这样的东西,
一个设计优良的结构封面记录详细的
Logging
将会是一个健壮成功的项目必要组成。
分享到:
相关推荐
高效e人是由重庆易飞科技有限公司(简称“易飞科技”)开发的一款功能强大、操作简单、受用户欢迎的办公自动化(OA)软件。高效e人分个人版、企业版和免费版,集通讯录、日程安排、任务计划、事务提醒、万年历、日记...
如是之前平台老用户则不需要重复申请账号,并且打通之前的Android,IOS,等平台数据,本示例整合了常用的功能,开发请按照以下步骤操作。将sdk引入到微信小程序中将utils目录下bmob.js,underscore.js复制至项目中...
Spring框架处理业务逻辑,降低了企业应用开发的复杂性;Struts负责控制流程,使应用程序更易于维护;Hibernate作为对象关系映射工具,简化了数据库操作。 总结,开心网的设计涵盖了社交网络的主要功能,并通过合理...
行业主要由国际知名品牌如Chanel、Dior、MAC和Estée Lauder主导,但国内品牌如完美日记、花西子等新兴品牌亦在市场中崭露头角,通过线上渠道和社交媒体营销快速获得市场份额。 2023年,彩妆市场的消费群体不再局限...
myBase 是一款用于分类管理自由格式资料的数据库软件,对个人用户在微软视窗( Windows )桌面上 实现文档、知识、笔记、日记、图片和网页的分类管理任务相当有帮助。 myBase 7.x 内容格式已由 RTF 升级为 HTML 格式...