前记:最近在学习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下一切皆文件"。

2019/01/17 对django项目部署的学习的更多相关文章

  1. 2019/01/17 基于windows使用fabric将gitlab的文件远程同步到服务器(git)

    觉得django项目把本地更新push到gitlab,再执行fabric脚本从gitlab更新服务器项目挺方便的,当然从本地直接到服务器就比较灵活. 2019/01/17 基于windows使用fab ...

  2. Django项目部署在Linux下以进程方式启动

    Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...

  3. 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

    生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...

  4. Django项目部署(django+guncorn+virtualenv+nginx)

    一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...

  5. django项目部署过程

    django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...

  6. Windows下django项目部署 通过Apache2.4+mod_wsgi

    经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...

  7. 学习VirtualEnv和Nginx+uwsgi用于django项目部署

    以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...

  8. django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)

    上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...

  9. Django项目部署到Apache服务器

    本文讲述的是在阿里云服务器(ECS)上部署Django项目于Apache,服务器操作系统为ubuntu,公网Ip地址为123.56.30.151. 将Django部署到Apache服务器的原因 Dja ...

随机推荐

  1. 向eclipse的JavaWeb项目中导入jar包

    一:      在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ...

  2. 网络存储结构简明分析—DAS、NAS和SAN 三者区别

    存储的总体分类     主流存储结构   网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage).存储区域网络(SAN:Storage Area Network ...

  3. tp剩余未验证内容-2

    如何设置一个 "资源" (文件/图片/zip/视频等)在点击时, 自动开始下载? 通常只要在这些地方, 设置 一个链接a, 让href等于这个资源就行了. 这样当点击这个资源时, ...

  4. 【安装】Matlab7.0简介及安装

    一.简介 Matlab下载官方版是美国MathWorks公司出品的商业数学软件,Matlab7.0下载官方版用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MAT ...

  5. 【C#】神奇的yeild

    直接出栗子: class Program { static void Main(string[] args) { foreach (var item in FilterWithoutYield) { ...

  6. 基于OAuth2.0的第三方认证

    浅显易懂的解释 来源 yahoo OAuth认证 原理 理解OAuth 2.0:原理.分类 一张图搞定OAuth2.0:是什么,怎么用 应用自身,完成用户认证: 缺点: 1.不同的访问Web应用提供不 ...

  7. 4、lvs nat和dr类型演示

    实战操作 LVS-NAT  (应用场景:VIP是公网地址,DIP和RIP一般使用私网地址,NAT的主要目的是为了隐藏服务器) 核心要点: 1.DIP与各real server的RIP必须在同一个网段中 ...

  8. python接口测试模版

    """Test case implementation""" import sys import functools import diff ...

  9. 进度条的制作-python

    import time,sys def view_bar(num, total): rate = float(num) / float(total) rate_num = int(rate * 100 ...

  10. 【Python】【进程&线程】

    #[[进程 和 线程 ]] """ # [多进程]'''import os print ('Process (%s) start...' % os.getpid()) # ...