python django+uwsgi+nginx

概念:

  1. WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface, 是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。

    自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。可以理解为一个标准和规范。

  2. 很多框架都自带了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。当然性能都不好,自带的 web server 更多的是测试用途,发布时则使用生产环境的 WSGI server或者是联合 nginx 做 uwsgi 。
  3. WSGI:WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。

    uWSGI:是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

    要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

    WSGI我们已经清楚了是一种通信协议。

    uwsgi同WSGI一样是一种通信协议。

    而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

  4. 为什么有了uWSGI还需要nginx?

    因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。

环境:

  1. python3.5.2
  2. django1.11.2 (pip3 install django)
  3. uwsgi2.0.15   (pip3 install uwsgi)
  4. nginx1.8.1   (yum -y install nginx)

部署:

  1. 首先确保django程序用自带的WSGI server可以启动;

注意settings.py中的一些配置:

DEBUG = False  #关闭调试,默认是开启状态

ALLOWED_HOSTS = [‘域名‘]  #如无域名,可绑定IP地址,如果均为修改服务启动后,将会报错。

LANGUAGE_CODE = ‘zh-Hans‘ #英文语言修改为中文

TIME_ZONE = ‘Asia/Shanghai #国际时区设置为上海时区

STATIC_ROOT = os.path.join(BASE_DIR, ‘static/‘) #因为admin所需的js ,css等静态文件都在django的安装目录内,但是我们并没有配置指向Django的配置文件,通过配置此参数来指定静态文件的默认家目录是那里

  1. 收集静态文件:

python manage.py collectstatic  (如果参数STATIC_ROOT 没有配置,此处会报错)

  1. 找到wsgi.py文件,启动uwsgi:

启动uwsgi :

uwsgi --http :8000 --module  hys_cmdb.wsgi

这里只是测试uwsgi是否能够正常启动,后面会使用ini配置文件进行启动。

vi uwsgi.ini  ---  (启动命令:uwsgi --ini uwsgi.ini)

[uwsgi]

socket = :8800   # 设置端口

chmod-socket = 666

master = true

processes = 2

chdir = /webserver/hys_cmdb/  # 程序主目录

module = hys_cmdb.wsgi  # wsgi.py模块相对位置

reload-mercy = 10

vacuum = true

max-requests = 1000

limit-as = 512

buffer-size = 30000

pidfile = /tmp/uwsgi8800.pid

daemonize = /backup/logs/log4j/hys_cmdb/uwsgi9090.log

  1. 配置nginx配置文件

cat /usr/local/nginx/conf/nginx.conf

#user  nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

#access_log  logs/access.log  main;

sendfile        on;

#tcp_nopush     on;

#keepalive_timeout  0;

keepalive_timeout  65;

#gzip  on;

server {

listen       80;

server_name  localhost;  # 域名或ip,localhost表示本机ip

location / {

include  uwsgi_params;

uwsgi_pass  127.0.0.1:8800;

uwsgi_param UWSGI_SCRIPT hys_cmdb.wsgi;

uwsgi_param UWSGI_CHDIR /webserver/hys_cmdb/;

}

location /static/ {

alias /webserver/hys_cmdb/static/;  # 静态文件

}

access_log  /backup/logs/nginx/local-access.log main;  # 日志

}

}

nginx 启动:/usr/local/nginx/sbin/nginx

nginx 重载: /usr/local/nginx/sbin/nginx -s reload

这样,uwsgi和nginx都启动后,就可以不加端口直接访问了。

时间: 2024-11-05 07:27:38

python django+uwsgi+nginx的相关文章

python django+uwsgi+nginx 搭建步骤(血一般的教训)

安装Django 没有pip的童鞋可以看http://blog.csdn.net/imphp/article/details/38228619安装python包管理工具pip 先在 https://pypi.python.org/ 上 搜索Django,排在第一的那个就是我们要安装的主要框架Django啦- 点进去可以查找一些相关文档,虽然全部是鸟语花香,不过有翻译.百度.炕忙,就算是菜鸟也成英国鸟了. Django 的官网文档 https://docs.djangoproject.com/en

python django uwsgi nginx安装

已安装完成python/django的情况下安装 pip install uwsgi cd /usr/share/nginx/html/ vim uwsgi.ini输入以下内容------------------------------------------------------------- #uwsgi.ini file [uwsgi] # Django-related settings # the base directory (full path) chdir = /usr/shar

python django uwsgi nginx   实例

实例:192.168.200.133 1.安装django wget  https://www.djangoproject.com/download/1.7.11/tarball/ 1.3.安装 cd Django-1.x.y sudo python setup.py install 1.4.创建  django-admin.py startproject testdj 1.5.启动测试 cd testdj # 切换到我们创建的项目 python manage.py runserver 2.安装

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

使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

Django + Uwsgi + Nginx 实现生产环境部署

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

Django+uWsgi+nginx部署

一.环境 操作系统:Ubuntu 14.04 64位 python:2.7.6 Django:1.8.2 项目源码:https://github.com/youchuancong/django.git 部署方式:Django+uWsgi+nginx 二.部署 1.Django安装 官网:https://www.djangoproject.com/ 安装 wget https://www.djangoproject.com/m/releases/1.8/Django-1.8.2.tar.gz ta

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

[linux]centos7.4部署django+Uwsgi+Nginx

前言:我已经写了几个接口用来部署在服务器上的,首先选择django+Uwsgi+Nginx因为配置简单,比较符合python的简单操作功能强大的特点 然后对于django的一些版本在之前的文章写了 参考:https://www.cnblogs.com/Jack-cx/p/9351633.html  根据版本,服务器pip3 install xxx 安装下 我的django项目大概结构: TestWebApi ----TestWebApi ----Apiso(创建的应用) ----manage.p

用Docker部署Django+uWSGI+Nginx

用Docker部署Django+uWSGI+Nginx 大致步骤如下: 创建Centos容器 安装Python及pip 安装MySQL 使Django连接到MySQL 运行uWSGI服务器 运行Nginx服务器 ? ? 创建Centos容器 安装docker软件 yum install docker 创建一个centos容器 docker run -d --name deploy1 --network host centos tail -f /dev/null -d:让它在后台运行. –name