Django电商网站项目(7)-部署与总结

将前述4个模块完成后项目的全部功能就完成了,在本地已经可以实现网站的基本功能(从用户注册到订单评论),但开启服务器时使用的是Django自带的测试用服务器,因此仍需要将其部署到真正的可用于工程的服务器上,即uWSGI,具体的部署架构与网站访问流程如下:
在这里插入图片描述
该项目完全基于Django框架实现,属于前后端不分离的开发方式,在其基础上采用了一些专用于优化网站性能的方法或工具(即Django本身提供了服务,但为了并发/减轻服务器压力,对一些相关的服务进行了优化):

①数据库设计时的空间换时间,在一些表中专门添加了图片字段;
②FDFS图片存储,而非在项目中存储大量图片,此处也可以使用第三方的服务;
③celery异步发送邮件,其本身也是使用了Django内置的邮件功能,但改为采用消息队列异步发送,提升了用户体验并降低了服务器压力;
④celery生成静态页面,对一些变化并不频繁的页面(项目中只生成了首页的静态页面)生成固定的静态页面,减少数据库的查询压力;
⑤使用redis存储特定的页面缓存,其思想与④相同,减少数据库的查询压力,将变化不频繁的部分内容存到缓存中,复用时直接从缓存中取出,较少对数据库的查询;
⑥使用全文检索框架,此为优化用户体验的功能;
⑦使用redis存储购物车、历史浏览记录,而非MySQL;
⑧使用乐观锁与悲观锁处理订单并发,应用数据库事务,减少订单出错的可能性;
⑨按照如图所示的方式进行部署,使用nginx负载均衡服务器处理分发动态请求给uWSGI服务器(其与Django服务器使用WSGI交互),使用nginx处理图片/静态页面/静态文件(即/static路径下的所有文件);
⑩可以补充的服务有redis集群,MySQL主从,优化celery消息队列,增加uWSGI服务器数量,优化nginx负载均衡算法等。

注:④⑤中静态页面与缓存的更新时间,一般在后台数据更新时重新生成,关于uWSGI/WSGI/uwsgi的区分请看前文。

以上即Django电商网站项目的全部内容,关于其中一些组件的具体配置皆搜索可得,此处不再赘述,完整代码见https://github.com/Icemelon99/test_project

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值