Django+uWSGI+Nginx 部署网站
Django 1.11设置
保证Django在本地调试没有问题;
当然这是前提^_^
收集静态文件至指定文件夹
Django静态文件设置具体参考:https://docs.djangoproject.com/en/1.11/ref/contrib/staticfiles/
- 在
myproject/settings.py
中设置静态文件STATIC_URL和STATIC_ROOT设置;
如:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static') #此文件夹需为空
- 在
myproject/urls.py
中添加static文件URL配置;
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
- 运行
python3 manage.py collectstatic
将静态文件收集到指定文件夹;
python3 manage.py collectstatic #处于Django虚拟环境下
本地调试测试,网站是否正常;
注:
STATIC_ROOT
不可与STATICFILES_DIRS
目录一致。
uWSGI设置
参考文档:
- https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/
- https://www.cnblogs.com/chenice/p/6921727.html
安装uwsgi
- 如果使用虚拟环境,请在Django虚拟环境下运行;
pip3 install uwsgi
- 编写测试文件test.py进行测试,验证uwsgi是否正常安装;
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
运行:
uwsgi --http :8000 --wsgi-file test.py
访问验证是否正常。
- 利用uwsgi启动myproject进行验证是否正常工作;
uwsgi --chdir=/path/to/myproject(此为manage.py文件所在父目录) --module=myproject.wsgi:application --http=127.0.0.1:8000 --processes=2 --vacuum
uwsgi后面具体参数,请自行百度。
- 如果无异常,编写uwsgi配置文件代替命令行形式;
[uwsgi]
# http = :8000 #直接提供http访问,配置为http模式,端口自定(下同)
socket = :8001 #和nginx进行通信,配置为socket模式
chdir = /path/to/myproject
module = myproject.wsgi:application
env = DJANGO_SETTINGS_MODULE=website.settings
master = true
processes = 4
vacuum = true
max-requests = 5000
home = /path/to/django/python/virtual_env #(如/path/venv)
daemonize = /var/log/uwsgi/website.log #后台运行
使用配置文件启动:
uwsgi --ini /path/to/uwsgi.ini
停止uwsgi,请使用kill 进程,优化请自己写脚本进行控制。
Nginx配置
安装nginx,可选择nginx官方源
修改nginx配置文件,本配置以Debian9系统下Nginx=1.12版为例
- nginx默认配置位置
/etc/nginx
; - 进行
/etc/nginx/conf.d/
添加自己的网站文件或者修改default.conf,nginx默认会对所有下面的配置文件进行读取和设置,配置文件以.conf结尾。
注:default.conf文件默认端口为80,如使用80端口,请修改或删除default.conf或者在此基础进行设置配置文件; - 配置文件示例:
server {
listen 80;
server_name debian;
charset utf-8;
client_max_body_size 10M;
location /media {
alias /path/to/myproject/media;
}
location /static {
alias /path/to/myproject/static;
}
location / {
\# 此处记得和uwsgi里的socket配置保持一致,另记得uwsgi里启用socket而不是http
uwsgi_pass 127.0.0.1:8001;
include uwsgi_params;
}
}
- 测试nginx配置文件是否正确;
nginx -t
- 启动nginx服务,访问进行验证是否正常工作;
至此,Django + uWSGI + Nginx部署完成。
Django+uWSGI+Nginx 部署网站的更多相关文章
- virtualvenv+django+uWSGI+nginx 部署
原创博文 转载请注明出处! 1. virtualvenv 2. django 3. uWSGI 4. nginx 5. 踩坑记录 1. virtualvenv virtualvenv install ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- django+uwsgi+nginx部署(非常详细)
django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...
- 「Linux+Django」Django+CentOs7+uwsgi+nginx部署网站记录
转自:http://www.usday.cn/blog/51 部署前的准备: 1. 在本地可以运行的django项目 2. 一台云服务器,这里选用Centos系统 开始部署: 首先在本地导出项目需要的 ...
- Ubuntu下Django+uWSGI+nginx部署
本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...
- Django+Uwsgi+Nginx部署
一 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi, http等协议. Nginx中HttpUwsgiMoule的作用是与uWSGI服务器进行交换 1 WSGI是一种W ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- virtualvenv+django+uWSGI+nginx 部署 踩坑记录
原创博文 转载请注明出处! uwsgi: unrecognized option '--http:8089' uwsgi: unrecognized option '--http' uwsgi trk ...
- django+uwsgi+nginx 部署生产环境
一.Uwsgi安装 python3 -m pip install uwsgi cp /usr/local/python3/bin/uwsgi /usr/bin/ 测试 在django项目主目录下cre ...
随机推荐
- 基于opencv+python的二维码识别
花了2天时间终于把二维码识别做出来了,不过效果一般,后面会应用在ROS辅助定位上,废话少说先上图: 具体过程参考了这位大神的博客:http://blog.csdn.net/qq_25491201/ar ...
- python爬取电影网站信息
一.爬取前提1)本地安装了mysql数据库 5.6版本2)安装了Python 2.7 二.爬取内容 电影名称.电影简介.电影图片.电影下载链接 三.爬取逻辑1)进入电影网列表页, 针对列表的html内 ...
- Kubernetes管理GPU应用
目录 简介 GPU驱动 Nvidia-docker Nvidia-device-plugin 在Kubernetes上运行GPU应用 附录 简介 伴随着人工智能技术的发展,机器学习的应用场景越来越广泛 ...
- vue-v-xxx基于 Vue拓展的 v-xxx 库
君问归期未有期,巴山夜雨涨秋池. 何当共剪西窗烛,却话巴山夜雨时. 作为vue轻车熟路的老司机,经常会用到一些指令,vue官方提供的指令又太少,无法满足旺盛的欲望,而每次要写一遍,终日郁郁寡欢,从小就 ...
- 【模板】KD-tree
核心思想: 将空间内的点进行合理划分,以支持有关高维点的操作. 其实就是将线段树搬到了二维及更高维度上. 注意$KD-tree$虽然很像线段树,但其实是一棵二叉搜索树,空间复杂度是$O(n)$的. 查 ...
- JS操作摄像头
<script src="javascript/jquery-1.9.1.min.js"></script> <fieldset> <le ...
- table布局 常见问题总结
table实用属性: 属性 值 作用 描述 table-layout auto 自动计算列宽 对table和td.th指定的宽度无效 浏览器会计算所有单元格的内容宽度才能得出一列宽度 (默认值) fi ...
- VS报错,Metadata file 'xxx.dll' could not be found
错误提示“Metadata file 'xxx.dll' could not be found”步骤如下:1.右键单击解决方案,然后单击“属性”.2.单击左侧的配置.3.确保选中了它找不到的项目的“生 ...
- Using hints for Postgresql
本文转自:http://pghintplan.osdn.jp/pg_hint_plan.html pg_hint_plan 1.1 pg_hint_plan Name Synopsis Descrip ...
- Django框架(十三)--Django分页组件
一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要是都在一个页面中渲染出来,会影响页面美观,所以就要用分页器分页渲染 二.分页器的使用 基本写法 基本写法: 后端: ...