测试环境:linux centos7下

1、安装uwsgi

python3下安装:

pip3 install uwsgi

python2下安装:

pip install uwsgi

如果是系统自带的python2.7环境下安装的话,有可能会出错:

Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-
jjOBXy/uwsgi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-3cX7u0-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-jjOBXy/uwsgi/

这时候需要我们先安装一个python开发包:

yum install -y python-devel

然后就可以安装了

2、测试 uwsgi

#python 3.x
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] #Python 3.x 需要 返回字节字符串 #python 2.x
#def application(env, start_response):
# start_response('200 OK', [('Content-Type','text/html')])
# return ["Hello World"]

test.py

运行:

uwsgi --http :8000 --wsgi-file test.py

3、添加并发和监控

并发:

uWSGI 默认启动一个单独的进程和一个单独的线程

我们可以通过 --processes 选项或者 --threads (或者两个选项都使用)来增加更多的进程或者线程

uwsgi --http :8000 --wsgi-file test.py --master --processes 4 --threads 2

将会产生 4 个进程(每个进程 2 个线程),一个主进程(当你的进程死掉时会重新 spawn 一个新的)以及 HTTP 路由器

 监控:

知道发生了什么在生产环境中是极其重要的。stats 子系统允许你 用 JSON 输出 uWSGI 的内部数据:

uwsgi --http :8000 --wsgi-file test.py  --master --processes 4 --threads 2 --stats 127.0.0.1:8181

用 “uwsgitop”监控应用实例

pip isntall uwsgitop

uwsgitop--uwsgi服务器性能查看工具,用法:

uwsgitop 127.0.0.1:8181

3、连接Django和uwsgi

先测试Django项目本身是可运行的:

python manage.py runserver 0.0.0.0:8001

倘若django 项目没问题,我们就可以把uwsgi与Django连接起来

进入到django项目中,以uwsgi启动django

 uwsgi --http :8001 --module WebSite.wsgi

4、编写uwsgi配置文件[uwsgi]

demo

[uwsgi]

socket = 127.0.0.1:8000

chdir = /home/zhi_hu_04

wsgi-file = zhi_hu/wsgi.py

home = /home/mysite_venv

master = true

processes = 4

threads = 2

vacum = true

daemonize=/var/log/uwsgi.log #使进程在后台运行,并将日志打到指定的日志文件

然后放到django项目中

启动uwsgi:

uwsgi --ini path/to/project/uwsgi.ini

然后成功访问到我们的django项目

39.108.132.2xx:9000

5、安装Nginx

yum -y install nginx

启动Nginx

systemctl start nginx.service

关闭Nginx

systemctl stop nginx.service

重启

systemctl restart nginx.service

设置开机启动

systemctl enable nginx

查看nginx 启动状态

systemctl status nginx

查看是否监听

 ss -tnl | grep 80 

查看nginx进程命令

 ps -ef | grep  nginx

pkill -9 nginx

nginx配置

方法一:直接修改nginx.conf:

 server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
#添加
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001; #要跟uwsgi中的绑定的socket一致
}
#静态文件

location /static {

alias /home/www/library_system/static/;

}

#日志

access_log /var/log/nginx_access.log;

error_log /var/log/nginx_error.log;

#添加

        error_page 404 /404.html;
location = /40x.html {
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

方法二:添加站点配置

在项目中添加website_nginx.conf

demo

server {
#侦听80端口
listen 80;
#网站域名
server_name www.xxx.com xxx.com www.xxx.xyz xxx.xyz;
#rewrite 规则 如可将www.zhihu086.com 请求转发至 www.zhihu086.com/bbb/
# rewrite ^/$ /bbb/ break;
charset utf-8;
#上传最大限制75M
client_max_body_size 75M; #你的Django项目的媒体文件路径
location /media {
alias /home/zhi_hu_04/media;
} # 静态文件路径
location /static {
alias /home/zhi_hu_04/static;
} # 将动态请求转发到uwsgi
location / {
#一定要和uwsgi的对应
uwsgi_pass 127.0.0.1:8000;
# uwsgi_params文件要新建写入配置
include uwsgi_params;
}
}

然后将站点配置软链接到 /etc/nginx/conf.d 目录下

或者,直接 放到/etc/nginx/conf.d

ln -s /root/workplace/WebSite/website_nginx.conf /etc/nginx/conf.d/website_nginx.conf

最后:

 copy  /etc/nginx下的uwsgi_params 文件 到项目中 

重启nginx  

启动uwsgi.ini

6、Django静态文件收集

把Django所有静态文件收集到同一个static中,不然访问Django的admin页面会找不到静态文件。在django的setting文件中添加:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

然后运行:

python manage.py collectstatic

django生产环境部署的更多相关文章

  1. django 生产环境部署建议

    参考django官方建议 一种优秀的作法是使用前缀/ws/来区分WebSocket连接和普通HTTP连接,以便修改配置后,使Channels更容易部署到生产环境中. 特别是对于大型站点,可以配置像ng ...

  2. django 生产环境部署手册

    Django 是 python 的 web 框架,以下是其部署到生产环境的详细步骤,包含 Apache 和 nginx 版本. 部署环境 操作系统:centeros7.3 数据库:MySQL5.6.5 ...

  3. 【Python之路】特别篇--Django生产环境部署

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中H ...

  4. uwsgi+nginx+django生产环境部署

    1.升级python到2.7版本 2.安装uwsgi 出现uwsgi未找到 yum groupinstall "Development tools"yum install zlib ...

  5. Django + Uwsgi + Nginx 的生产环境部署

    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归 ...

  6. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  7. 第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块

    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块 virtualenv简介 1.安装virtuale ...

  8. 第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1

    第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1 1.检查系统是否安装了python [root@192 ~]# rpm -qa ...

  9. 第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6

    第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6 1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步 ...

随机推荐

  1. iis 导入和导出配置——iis管理

    首先我们打开服务器管理器,一般服务器都在左下角的任务栏中,直接点击即可打开 2 打开WEB服务器(IIS),选择IIS根目录,找到右边的共享管理 3 打开共享管理后,我们在右侧的操作中找到导出配置,选 ...

  2. 115个Java面试题和答案(上)

    转自:http://www.importnew.com/10980.html 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的 ...

  3. 【BZOJ】1652: [Usaco2006 Feb]Treats for the Cows(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1652 dp.. 我们按间隔的时间分状态k,分别为1-n天 那么每对间隔为k的i和j.而我们假设i或者 ...

  4. 学习:erlang正则

    一.re:run/3. ①.re:run("321321","2132",[caseless]).     {match,[{1,4}]} %% 返回值是 匹配 ...

  5. querySelectorAll 和getElementsByClassName的区别

    querySelectorAll 返回的是映射 改变其值不会改变document 而getElementsByClassName 改变它就会改变document 摘自JavaScript权威指南(jQ ...

  6. JS-实时修改在textarea里面的span(实际输入的文字)

    解决办法: 在开发中,多少会遇到一些界面,输入限制字数. 例如: //页面加载完毕 $(function() { //descrip是textarea的id $("#descrip" ...

  7. 用DX9画三角形,三个顶点要求

      用DX9画三角形,三个顶点的顺序有要求吗下面是全部代码,在 InitVB 函数中被注释掉的数组是我写的,没注释掉的是书上的代码,经过试验我的坐标不能显示出图形,而书上的坐标可以,这是为什么? #i ...

  8. matlab 中关于 varargin 参数

    varargin 提供了一种函数可变参数列表机制,允许调用者调用该函数时根据需要来改变输入参数的个数: varargin{1}代表可变参数列表的第一个实参,同理varargin{2}代表可变参数列表的 ...

  9. HDFS 常用Shell命令

    HDFS Shell命令 概述 HDFS Shell命令允许使用命令行在HDFS存储中进行文件夹和文件操作. 如文件夹的增删改查.文件的增删改查等. 开始练习hadoop时,打开Linux之后要用 s ...

  10. ORACLE安装(12c-Redhat6.5)

    Oracle安装(12c-Redhat6.5) Redhat6.5系统准备 / 10G SWAP 4G /boot 200M /HOME 4G /usr 8G /var 4G /u01 Preinst ...