centos7下采用Nginx+uwsgi来部署django

之前写过采用Apache和mod_wsgi部署django,因为项目需要,并且想比较一下Nginx和Apache的性能,尝试采用Nginx+uwsgi的模式来部署django。

1、安装uwsgi以及Nginx

1 pip install uwsgi                          --目前的版本为2.0.15
2 yum install epel-release
3 yum install nginx*                         --目前的版本为1.10.2

2、测试

1 # test.py
2 def application(env, start_response):
3     start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
4     return "Hello World"
1 uwsgi --http :80 --wsgi-file test.py

采用浏览器访问主机或者采用postman模拟get操作,如果出现"Hello World"即测试成功

3、测试django工程

1 django-admin startproject myself
2 uwsgi --http :80 --chdir /home/myself --module myself.wsgi

并在django工程的settings里边添加主机的ip地址,采用浏览器访问主机或者采用postman模拟get操作,如果出现django的欢迎页面,“It works!”即测试成功

4、写uwsgi.ini配置文件

 1 #uwsgi.ini file
 2 [uwsgi]
 3
 4 # Django-related settings
 5 # the base directory (full path)
 6 chdir           = /home/myself
 7 # Django‘s wsgi file
 8 module          = myself.wsgi:application
 9 # the virtualenv (full path)
10 #home            = /path/to/virtualenv
11
12 # process-related settings
13 # master
14 master          = true
15 # maximum number of worker processes
16 processes       = 3
17 # the socket (use the full path to be safe)
18 #socket          = /home/myself/myself.sock
19 socket = 127.0.0.1:8001
20 # ... with appropriate permissions - may be needed
21 chmod-socket    = 666
22 chown-socket = nginx:nginx
23 # clear environment on exit
24 vacuum          = true
25 enable-threads = true

5、修改nginx配置文件

1 vim /etc/nginx/nginx/conf
  1 # For more information on configuration, see:
  2 #   * Official English Documentation: http://nginx.org/en/docs/
  3 #   * Official Russian Documentation: http://nginx.org/ru/docs/
  4
  5 user nginx;
  6 worker_processes auto;
  7 error_log /var/log/nginx/error.log;
  8 pid /run/nginx.pid;
  9
 10 # Load dynamic modules. See /usr/share/nginx/README.dynamic.
 11 include /usr/share/nginx/modules/*.conf;
 12
 13 events {
 14     worker_connections 1024;
 15 }
 16
 17 http {
 18     log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
 19                       ‘$status $body_bytes_sent "$http_referer" ‘
 20                       ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 21
 22     access_log  /var/log/nginx/access.log  main;
 23
 24     sendfile            on;
 25     tcp_nopush          on;
 26     tcp_nodelay         on;
 27     keepalive_timeout   65;
 28     types_hash_max_size 2048;
 29
 30     include             /etc/nginx/mime.types;
 31     default_type        application/octet-stream;
 32
 33     # Load modular configuration files from the /etc/nginx/conf.d directory.
 34     # See http://nginx.org/en/docs/ngx_core_module.html#include
 35     # for more information.
 36     include /etc/nginx/conf.d/*.conf;
 37
 38     upstream django {
 39     #server unix:/home/myself/myself.sock; # for a file socket
 40     server 127.0.0.1:8001; # for a web port socket (we‘ll use this first)   ---socket
 41     }
 42
 43     server {
 44         listen       80 default_server;
 45         listen       [::]:80 default_server;
 46         server_name  _;
 47         root         /usr/share/nginx/html;
 48
 49         # Load configuration files for the default server block.
 50         include /etc/nginx/default.d/*.conf;
 51
 52         location /static/ {
 53             root /home/myself;                                  ----project地址
 54         }
 55
 56         location / {
 57             include uwsgi_params;
 58             uwsgi_pass django;                                  ----上面修改socket的位置
 59         }
 60
 61         error_page 404 /404.html;
 62             location = /40x.html {
 63         }
 64
 65         error_page 500 502 503 504 /50x.html;
 66             location = /50x.html {
 67         }
 68     }
 69
 70 # Settings for a TLS enabled server.
 71 #
 72 #    server {
 73 #        listen       443 ssl http2 default_server;
 74 #        listen       [::]:443 ssl http2 default_server;
 75 #        server_name  _;
 76 #        root         /usr/share/nginx/html;
 77 #
 78 #        ssl_certificate "/etc/pki/nginx/server.crt";
 79 #        ssl_certificate_key "/etc/pki/nginx/private/server.key";
 80 #        ssl_session_cache shared:SSL:1m;
 81 #        ssl_session_timeout  10m;
 82 #        ssl_ciphers HIGH:!aNULL:!MD5;
 83 #        ssl_prefer_server_ciphers on;
 84 #
 85 #        # Load configuration files for the default server block.
 86 #        include /etc/nginx/default.d/*.conf;
 87 #
 88 #        location / {
 89 #        }
 90 #
 91 #        error_page 404 /404.html;
 92 #            location = /40x.html {
 93 #        }
 94 #
 95 #        error_page 500 502 503 504 /50x.html;
 96 #            location = /50x.html {
 97 #        }
 98 #    }
 99
100 }

6、采用Systemd管理uwsgi

1 mkdir -p /etc/uwsgi/ini
2 mv /home/myself/uwsgi.ini /etc/uwsgi/ini/
 1 vim /etc/systemd/system/uwsgi.service
 2
 3
 4 [Unit]
 5 Description=uWSGI Emperor
 6 After=syslog.target
 7
 8 [Service]
 9 ExecStart=/root/uwsgi/uwsgi --emperor /etc/uwsgi/ini
10 Restart=always
11 KillSignal=SIGQUIT
12 Type=notify
13 StandardError=syslog
14 NotifyAccess=all
15
16 [Install]
17 WantedBy=multi-user.target
时间: 2025-01-07 00:12:50

centos7下采用Nginx+uwsgi来部署django的相关文章

centos7 下通过nginx+uwsgi部署django应用

1. 安装python3.6 1. 获取 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz tar -xzvf Python-3.6.2.tgz -C /tmp cd /tmp/Python-3.6.2/ 2. 把Python3.6安装到 /usr/local 目录 ./configure --prefix=/usr/local make make altinstall 3. 更改/usr/bin/python链接 ln

Nginx+uWsgi生产部署Django

部署得过程很简单,部署得核心在于,为什么要这样做,每一个参数代表什么意思,最终的目的是得了解,一些基概念性的东西. uWsgi简介 说Uwsgi之前,先说一下Wsgi. 什么是Wsgi? WSGI: 是一种Web服务器网关接口,它是一个Web服务器(如Nginx) 与应用服务器(如uWSGI服务器)通信的一种规范. uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi,http等协议,Nginx中HttpUwsgiModul的作用是与uWSGI服务器进行交换 那么那些框架自带了Wsgi

Linux Centos7下实现nginx防盗链部署

一.原理: nginx 防止网站资源被盗用模块 ngx_http_referer_module ? HTTP Referer是Header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理,例如防止未经允许的网站盗链图片.文件等.因此HTTP Referer头信息是可以通过程序来伪装生成的,所以通过Referer信息防盗链并非100%可靠,但是,它能够限制大部分的盗链情况. 二.防盗链配置 [[emai

又一篇Centos7下的asp.net core部署教程

原文:又一篇Centos7下的asp.net core部署教程 历程2个多月的学习,我终于从PHP转.Net开发了. 虽然网上已经有很多关于asp.net core在linux下的部署教程了,但我还是想写一篇,主要增强我自己的记忆. 搭建的环境为Centos7 + .net core  + nginx + mysql5.7,我的网站是asp.net core后端,vue前端,数据据mysql: 第一次搭建时遇到不少的坑,我会在下面也说到 前提,你有一台可以联网,有root账号密码,有开通ssh的

Django+nginx+uwsgi架构部署

一.环境: Django版本:  Django-1.10.6.tar.gz Nginx 版本: nginx-1.11.10.tar.gz uwsgi 版本: uwsgi-2.0.14.tar.gz 二.安装部署:(在网上能搜到很多这种架构的安装,大都是千篇一律,但是在配置中有几个点说的非常模糊,不够明确.使很多人陷入迷茫之中) 1.将Django.nginx和uwsgi进行源码安装,安装步骤比较简单. # mkdir -p /data/logs          ## 创建uwsgi日志目录 安

nginx+uwsgi+djangos部署项目完整

1.基本信息 Linux 版本:SentOS7.4 Python 版本:3.7.1 2.下载 uWSGI pip3 install uwsgi uwsgi 主要的任务是座位分发路由的服务器. 先写一个测试文件,测试 uwsgi 是否可以正常使用. # test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World

Centos下搭建 nginx+uwsgi+python

python做web应用最麻烦的还是配置服务器了,此话不假,光中间件就有好几种选择,fastcgi.wsgi.uwsgi,难 免让人眼花缭乱. 而听说uwsgi的效率是fastcgi和wsgi的10倍,因此初学python的我就有点跃跃欲试了,打算在centos下搭建个 nginx+uwsgi+python玩玩. 下面是本人经过google和亲身实践所得: 准备工作: yum install python-devel libxml2-devel python-setuptools zlib-de

ubuntu下配置nginx+uwsgi+django

服务器配置是Ubuntu14.04 64位OS ubuntu14.04默认是安装好了python2.7版本不用自己安装了. 先更新下源 sudo apt-get update 第一步先安装pip sudo apt-get install -y python-pip 有些时候安装pip前需要安装几个相关包 sudo apt-get install -y python-dev sudo apt-get install -y libevent-dev 安装完pip后我们开始安装django sudo

Ubuntu + Django(DRF) + channels(websocket)+NGINX + uwsgi 环境部署

原来uwsgi并不能启动  asgi  呀!现在才知道,就因为这一点我花了一周时间才成功啊!!!!!!!! 是呀!你启动uwsgi 是将你的项目启动了,可是你也发现虽然启动了,但是你的websocket不能访问???why?? 原因是你的ASGI没有启动 明明你使用python manage.py runserver 是可以访问的,但是为啥部署到服务器上不能访问呢? 原因是uwsgi服务器不能启动ASGI, 但是你启动了WSGI所以可以访问HTTP请求,你可以留意一下启动的日志....坑啊! 要