`
thirdson
  • 浏览: 4923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

百e购开发日记(一)

阅读更多

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 将会是一个健壮成功的项目必要组成。

 

0
0
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    NC开发日记(2010)

    这是我的原创资源,是我三年的NC开发的心得,

    一个嵌入式工程师的stm32开发日记

    从日记中可以看出,作者袁崟作为一个嵌入式工程师,对于嵌入式系统开发抱有浓厚的兴趣和热情。他通过个人经验的分享,为读者展示了一个嵌入式工程师在STM32开发过程中的学习路径、技术要点和心得体会。以下是根据...

    MOSS 2007开发日记

    在Microsoft Office SharePoint Server (MOSS) 2007中进行开发是一项复杂而充满挑战的任务。MOSS 2007是微软推出的企业级协作平台,它提供了多种功能,包括文档管理、工作流、网站创建、搜索以及企业应用程序集成。...

    SAP 开发日记 SAP 开发日记SAP 开发日记

    SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记

    前端开发-日记.rar

    前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记...

    深入体验Java+Web项目开发(开发日记)2

    本开发日记将分为几个部分,逐一解析这些技术要点。 首先,Java作为后端开发的主要语言,其面向对象的特性使得它在处理复杂业务逻辑时具有优势。理解Java的基础语法、类与对象、接口、继承和多态性是必不可少的。...

    windows mobile 开发日记+视频

    Windows Mobile是一款由微软公司开发的面向移动设备的操作系统,它为智能手机和平板电脑提供了丰富的功能和应用程序接口(API)。在Windows Mobile的开发过程中,开发者可以利用Microsoft Visual Studio和.NET ...

    社交网站后端项目开发日记(一)(csdn)————程序.pdf

    "社交网站后端项目开发日记(一)" 本文主要介绍了社交网站后端项目的开发日记,涵盖了项目的基本概念、技术栈选型、项目搭建、依赖管理、SpringBoot基础知识等方面。 一、项目概述 社交网站后端项目旨在开发一个...

    深入体验Java+Web项目开发(开发日记)1

    深入体验Java+Web项目开发(开发日记)的源码和第一,二章内容和课件!

    网站开发日记(11)

    博文链接:https://dodomail.iteye.com/blog/245758

    Android代码-移动日记本功能包含传统的日记本和音频日记视频日记实现私密日记和普通日记。.zip

    在Android平台上,开发一款移动日记本应用是一种常见的实践,它为用户提供了一种便捷的方式来记录他们的日常生活,情感体验,以及重要事件。这款名为"Diary"的应用不仅包含了传统的文本日记功能,还创新性地集成了...

    安卓超级日记本

    在当今数字化时代,个人记录的重要性日益凸显,而“安卓超级日记本”作为一个集成了科大讯飞语音识别和分享功能的日记应用,无疑为用户提供了全新的日记体验。这款应用不仅具备传统日记的私密性和表达自由,更借助...

    一个 C# 做的日记本

    【标题】"一个 C# 做的日记本"揭示了这个项目是使用C#编程语言开发的一个应用程序,主要用于创建和管理个人日记。C#是一种面向对象的、现代的编程语言,由微软公司开发,广泛应用于Windows平台上的软件开发,包括...

    VB.NET 开发的一个日记本

    标题 "VB.NET 开发的一个日记本" 描述了一个使用VB.NET编程语言开发的应用程序,它具有用户友好的界面和安全特性。VB.NET是Microsoft .NET框架的一部分,是一种面向对象的编程语言,适合创建Windows桌面应用。这个...

    旅游日记APP的设计与开发.pdf

    本资源摘要信息主要介绍了旅游日记APP的设计与开发,旨在为旅游周边服务提供一款功能强大、实用的旅游日记APP。该APP具有旅程记录、兴趣推荐、多媒体日记分享、旅程规划等功能,可以满足用户的不同需求。 一、旅游...

    应用SQLite开发简易心语日记源码

    本项目"应用SQLite开发简易心语日记源码"旨在教你如何利用SQLite创建一个简单的日记应用,实现日记的添加、删除、修改和查询功能。这对于理解和实践Android中的本地数据存储至关重要。 SQLite是一个轻量级的、开源...

    安卓开发实习日记参考.doc

    安卓开发实习日记参考.doc

    软件开发人员一周实习日记.docx

    软件开发人员一周实习日记 软件开发人员一周实习日记是软件开发人员的一周实习经历的记录,记录了作者在一周内的实习经历,包括实习的内容、遇到的问题、解决问题的方法等。通过这份实习日记,我们可以了解到作者在...

Global site tag (gtag.js) - Google Analytics