Django---部署
从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---部署相关推荐
- python之Django部署
Django部署: 1. 租云服务器 2. 买服务器 租:公网IP,111.13.101.208 租域名:www.pythonav.com <-> 111.13.101.208 3. 编写 ...
- Django 部署基础【使用 Nginx + uWSGI 的方式来部署来 Django】
本文主要讲解在 Linux 平台下,使用 Nginx + uWSGI 的方式来部署来 Django,这是目前比较主流的方式.当然你也可以使用 Gunicorn 代替 uWSGI,不过原理都是类似的,弄 ...
- nginx+uWSGI + django部署项目
项目部署 nginx+uWSGI + django 1. WSGI WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器(返回静态资源的就是web服务器,Nginx)如何与Web应用程序( ...
- django 部署_狂野的Django:部署生存的技巧
django 部署 by Ali Alavi 通过Ali Alavi 狂野的Django:部署生存的技巧 (Django in the wild: tips for deployment surviv ...
- nginx uwsgi django部署
虽然网上有很多这方面部署材料,但很多材料内容并不完善.即便搜索网上大量的部署材料,还是花了我好几天的时间才搞出来.部署步骤太复杂了,尤其uwsgi,感觉是反人类的设计. 言归正传,我的部署版本分别如下 ...
- Uwsgi+Nginx+Django部署
Django+Uwsgi+Nginx部署 这几天一直在捣腾Django部署,一只菜鸡的上山路 如果什么不对,还请多多指教. 参考:如何使用Django与uWSGI,Uwsgi文档 Linux使用的是u ...
- django部署iiswin10_基于Windows平台的Django在本地部署和腾讯云服务器上部署的方法教程(一)...
环境: VS2015 IIS python3.6.1 django 1.11.14 打开VS2015,新建一个django项目. 这里注意一点:确保python的安装路径中没有中文,没有空格. 我的安 ...
- django修改服务器名称,django部署和服务器配置教程
本文讲述django 详细的部署教程,本机选择的是ubuntu系统,相对于比较简单,也比较详细,我也是新手,希望大家有好的意见或者建议可以多多提出了,大家一起进步! 第一步 你本地的项目完成后,选择上 ...
- python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue
简介 * 1.两年前接触docker是因为要部署selenium_gird,后来呢发现zalenium可以录制ui自动化视频的工具,都是直接pull镜像,启动容器.所以一直以来就只用到了pull. r ...
- python django部署docker_如何Docker化Python Django应用程序
Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建.打包为一个轻量级容器,并在任何地方运行.Docker 会在软件容器中自动部署应用程序. Django 是一个用 ...
最新文章
- 告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性
- Note6:batch file programming
- in作为介词的用法_英文论文写作:极易混淆的短语用法汇总如下
- Android AsyncTask用法介绍
- gradle之gradlew最全指令攻略
- 我的技术回顾那些与ABP框架有关的故事-2018年
- 计算机专业教学工作小结,计算机专业教学的工作总结
- freecodecamp_freeCodeCamp.org隐私权政策:问题与解答
- Android nfc编译,【Android编译】各个模块编译方法
- iis7.5 php7.0,Win2008R2 IIS7.5 PHP7.3 配置ImageMagick及PHP-Imagick扩展
- Spring RCE 漏洞 CVE-2022-22965 的终极解决方案
- MySQL建表时Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP
- Eureka的元数据
- 自己写的配筋的Android应用——RCHelper,依据SL191-2008
- 【AutoCAD】04.直线类命令
- UOJ#198 [CTSC2016]时空旅行
- leetcode 剑指 Offer 03. 数组中重复的数字 抽屉原理 一个萝卜一个坑
- 2021-2027全球与中国信用证服务市场现状及未来发展趋势
- 深入探索 Kdump,第 3 部分: Kdump 原理探秘
- 线性蒙皮(Linear blend skinning)相关知识