2019/01/17 对django项目部署的学习

前记:最近在学习django项目的部署。

开发环境:windows10,使用pycharm,python2.7.15,django1.11。本地测试使用nginx和前端交互。

生产环境:centos7,linux中centos版本比较流行,因为centos7对主流软件更新得比较快,版本维护时间长,相对于ubuntu更适合用于生产环境。

项目可以通过文件拷贝,脚本上传,镜像转移放去服务器。我使用得是fabric脚本远程同步,其中脚本可以选择将gitlab的项目放到服务器,或者将本地压缩后传送到服务器解压,主要是要控制settings等涉及数据库不完全一致文件就不要覆盖。

dajngo项目在开发环境使用pip模块gunicorn来控制进程,实现多进程,在gunicorn启动后使用supervisor实现进程守护,记得在/etc下配置好对应文件配置,gunicorn的配置文件在项目根目录下修改配置(手动添加),最后使用nginx操作负载平衡,如果是假的域名,要自己修改使用测试客户机本地的hosts文件来进行域名访问,一般nginx都要限制ip直接访问,防止别人把无效域名挂靠在自己ip上,导致访问激增,服务器压力增大。

使用七牛的时候,服务器文件删除了,所以按照员工查询就不能下载,提示文件不存在,并不是生成的token过期秒有效链接,再次申请新的token链接未生成造成的。

使用xshell检查nginx,supervisor,gunicorn发现school_salary和自己创建的school_salary_2通过supervisorctl restart all不能跑起来8083,只跑起来了8093,以为是权限造成,其实是项目下的同名文件夹被我在/etc/nginx/conf.d/school_salary.conf修改时,不小心把school_salary的school_salary_2修改成了school_salary造成的,那个是wsgi的存放位置,不是项目名(项目名可能被修改)。

关于查询/打印薪水记录,不能直接遍历条目和员工,因为两个模型对象的有效性在当前可能已经发生改变,可以使用order_by(*args,**kwargs)实现双重排序,orm的方法

xshell远程连接终端很好用,pycharm的git也很好用,django官方文档很实用。

总结:

Fabric 是一个 Python (2.5-2.7) 的库和命令行工具,用来提高基于 SSH 的应用部署和系统管理效率。Tarfile是python自带的压缩模块,同款还有Zipfile。

开发机器上开发完的项目,有很多.idea,.git,*.pyc等无用文件,需要手动去除,我们可以选择性git到gitlab或者github,然后本地通过fabric脚本将git上的项目同步到服务器,需要修改settings等ip配置再去服务器修改,或者直接在本地项目,利用压缩,然后直接脚本发送到服务器,解压,再在服务器修改settings等配置即可。

遇到问题:os操作细节,tarfile筛选文件,我匹配*.pyc利用字符串的endswith()方法就行了,但是用字符串的startswith()方法不行,估计是因为在用tarfile模块的add()方法时加入文件和文件夹时,文件和文件夹是一样的,都由绝对路径表示,就好像"Linux下一切皆文件"。

上一篇:FasterRCNN目标检测实践纪实


下一篇:【原】iOS开发进阶(唐巧)读书笔记(二)