从uwsgi、nginx、静态文件三个方面处理

1.服务器环境配置

在本地的虚拟环境中,项目根目录下,执行命令收集所有包

pip freeze > plist.txt

2.安装并创建虚拟环境(通过ftp软件将开发好的项目上传到此服务器的某个目录)

1.sudo apt-get install python-virtualenv

2.sudo easy_install virtualenvwrapper

3.mkvirtualenv [虚拟环境名称]

3.在虚拟环境上工作,安装所有需要的包

1.workon [虚拟环境名称]

pip install -r plist.txt

2.更改settings.py文件

DEBUG = False

ALLOW_HOSTS=['*',]表示可以访问服务器的ip

启动服务器,运行正常,但是静态文件无法加载

WSGI:Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口

1.python manage.py runserver:这是一款适合开发阶段使用的服务器,不适合运行在真实的生产环境中,在生产环境中使用WSGI

WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行

2.命令django-admin startproject会生成一个简单的wsgi.py文件,确定了settings、application对象

1.application对象:在Python模块中使用application对象与应用服务器交互

2.settings模块:Django需要导入settings模块,这里是应用定义的地方

此处的服务器是一个软件,可以监听网卡端口、遵从网络层传输协议,收发http协议级别的数据

uWSGI:实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器(C编写)

1.安装uWSGI

pip install uwsgi

2.配置uWSGI,在项目中新建文件uwsgi.ini,编写如下配置

[uwsgi]

socket=外网ip:端口(使用nginx连接时,使用socket)

http=外网ip:端口(直接做web服务器,使用http)

chdir=项目根目录

wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录

processes=4

threads=2

master=True

pidfile=uwsgi.pid

daemonize=uswgi.log

启动:uwsgi --ini uwsgi.ini

停止:uwsgi --stop uwsgi.pid

重启:uwsgi --reload uwsgi.pid

使用http协议查看网站运行情况,运行正常,但是静态文件无法加载

nginx:

1.优势:

1.负载均衡:多台服务器轮流处理请求

2.反射代理:隐藏真实服务器

3.实现构架:客户端请求nginx,再由nginx请求uwsgi,运行django框架下的python代码

2.安装:或

1.通过命令安装:sudo apt-get nginx

2.到官网下载nginx压缩文件---解压缩:tar zxvf nginx-1.6.3.tar.gz

默认安装到/usr/local/nginx目录,进入此目录执行命令

查看版本:sudo sbin/nginx -v

启动:sudo sbin/nginx

停止:sudo sbin/nginx -s stop

重启:sudo sbin/nginx -s reload

通过浏览器查看nginx运行结果

指向uwsgi项目:编辑conf/nginx.conf文件

sudo conf/nginx.conf

在server下添加新的location项,指向uwsgi的ip与端口

location / {

include uwsgi_params;将所有的参数转到uwsgi下

uwsgi_pass uwsgi的ip与端口;

}

修改uwsgi.ini文件,启动socket,禁用http

重启nginx、uwsgi

在浏览器中查看项目,发现静态文件加载不正常,接下来解决静态文件的问题

静态文件

静态文件一直都找不到,现在终于可以解决了

所有的静态文件都会由nginx处理,不会将请求转到uwsgi

配置nginx的静态项,打开conf/nginx.conf文件,找到server,添加新location

location /static {

alias /var/www/test5/static/;

}

在服务器上创建目录结构“/var/www/test5/”

修改目录权限

sudo chmod 777 /var/www/test5

创建static目录,注意顺序是先分配权限,再创建目录

mkdir static

最终目录结构如下图:

static

修改settings.py文件

STATIC_ROOT='/var/www/test5/static/'

STATIC_URL='/static/'

收集所有静态文件到static_root指定目录:python manage.py collectstatic

重启nginx、uwsgi

转载于:https://www.cnblogs.com/tony-xu999/p/8580687.html

Django---部署相关推荐

  1. python之Django部署

    Django部署: 1. 租云服务器 2. 买服务器 租:公网IP,111.13.101.208 租域名:www.pythonav.com <-> 111.13.101.208 3. 编写 ...

  2. Django 部署基础【使用 Nginx + uWSGI 的方式来部署来 Django】

    本文主要讲解在 Linux 平台下,使用 Nginx + uWSGI 的方式来部署来 Django,这是目前比较主流的方式.当然你也可以使用 Gunicorn 代替 uWSGI,不过原理都是类似的,弄 ...

  3. nginx+uWSGI + django部署项目

    项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...

  4. django 部署_狂野的Django:部署生存的技巧

    django 部署 by Ali Alavi 通过Ali Alavi 狂野的Django:部署生存的技巧 (Django in the wild: tips for deployment surviv ...

  5. nginx uwsgi django部署

    虽然网上有很多这方面部署材料,但很多材料内容并不完善.即便搜索网上大量的部署材料,还是花了我好几天的时间才搞出来.部署步骤太复杂了,尤其uwsgi,感觉是反人类的设计. 言归正传,我的部署版本分别如下 ...

  6. Uwsgi+Nginx+Django部署

    Django+Uwsgi+Nginx部署 这几天一直在捣腾Django部署,一只菜鸡的上山路 如果什么不对,还请多多指教. 参考:如何使用Django与uWSGI,Uwsgi文档 Linux使用的是u ...

  7. django部署iiswin10_基于Windows平台的Django在本地部署和腾讯云服务器上部署的方法教程(一)...

    环境: VS2015 IIS python3.6.1 django 1.11.14 打开VS2015,新建一个django项目. 这里注意一点:确保python的安装路径中没有中文,没有空格. 我的安 ...

  8. django修改服务器名称,django部署和服务器配置教程

    本文讲述django 详细的部署教程,本机选择的是ubuntu系统,相对于比较简单,也比较详细,我也是新手,希望大家有好的意见或者建议可以多多提出了,大家一起进步! 第一步 你本地的项目完成后,选择上 ...

  9. python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue

    简介 * 1.两年前接触docker是因为要部署selenium_gird,后来呢发现zalenium可以录制ui自动化视频的工具,都是直接pull镜像,启动容器.所以一直以来就只用到了pull. r ...

  10. python django部署docker_如何Docker化Python Django应用程序

    Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. Django 是一个用 ...

最新文章

  1. 告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性
  2. Note6:batch file programming
  3. in作为介词的用法_英文论文写作:极易混淆的短语用法汇总如下
  4. Android AsyncTask用法介绍
  5. gradle之gradlew最全指令攻略
  6. 我的技术回顾那些与ABP框架有关的故事-2018年
  7. 计算机专业教学工作小结,计算机专业教学的工作总结
  8. freecodecamp_freeCodeCamp.org隐私权政策:问题与解答
  9. Android nfc编译,【Android编译】各个模块编译方法
  10. iis7.5 php7.0,Win2008R2 IIS7.5 PHP7.3 配置ImageMagick及PHP-Imagick扩展
  11. Spring RCE 漏洞 CVE-2022-22965 的终极解决方案
  12. MySQL建表时Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP
  13. Eureka的元数据
  14. 自己写的配筋的Android应用——RCHelper,依据SL191-2008
  15. 【AutoCAD】04.直线类命令
  16. UOJ#198 [CTSC2016]时空旅行
  17. leetcode 剑指 Offer 03. 数组中重复的数字 抽屉原理 一个萝卜一个坑
  18. 2021-2027全球与中国信用证服务市场现状及未来发展趋势
  19. 深入探索 Kdump,第 3 部分: Kdump 原理探秘
  20. 线性蒙皮(Linear blend skinning)相关知识

热门文章

  1. redis expire超时操作
  2. 从今天开始 好好规划自己
  3. hibernate中查询方式(二):常用查询
  4. HDU 2087 剪花布条 KMP入门
  5. 常见HTTP状态(304,200等)转
  6. js tooltip之wz_tooltip使用方法和参数备忘
  7. JavaScript正则表达式使用详解
  8. JS的正则表达式 举例
  9. linux之--install超时
  10. 大学四年规划英语计算机专业课,大学四年考证规划你get了吗?