LNuDP(Linux+Nginx+uWSGI+Django)架构

Nginx是一个非常好的反向代理和动静分离和web服务器。
uWSGI是一个针对python非常好的web服务器和中间件。
Django是一个非常好的Python web 框架。
Pytohn是一门非常好的编程语言。
四个非常好的软件组合,会碰撞出怎样的火花?敬请期待!

架构原理剖析:

 

 

概念说明:

  • APP(应用程序):就是开发者写的应用程序,例如django,bottle这些。记录怎么处理客户端发来的请求的逻辑部分。
  • WSGI:是一个协议,Python用于Web开发的协议,Python专用的协议。
  • uWSGI:是一个程序,可充当Web服务器或中间件。
  • uwsgi:是uWSGI程序实现的一个自有的协议,处理python程序速度很快。

采用二进制来存储数据,在存储空间和解析速度上,都优于字符串型协议。

推荐一篇文章:

Nginx+uWSGI+Django原理

http://www.cnblogs.com/Xjng/p/aa4dd23918359c6414d54e4b972e9081.html

 

 

本机系统:Ubuntu 17 64bit

 

 

环境安装:

 

安装MySQL:

sudo apt-get install mysql-server

sudo apt-get install mysql-client

sudo apt-get install libmysqlclient-dev

 

 

安装Django:

sudo apt-get python-django

 

安装pip:

sudo apt-get python-pip

 

安装pymysql:

pip install pymysql

 

 

安装uWSGI:

sudo apt-get uwsgi uwsgi-plugin-python

 

 

 

环境配置:

 

准备Django项目,如果已经存在Django项目则跳过这步。

 

一、     Django配置

 

1、创建一个名字问mysite的项目:

django-admin startproject mysite

 

 

2、创建一个APP:

cd mysite

python manage.py startapp blog

 

 

3、生成可运行的的APP,或者自行编写一个简单的APP,需要Django基础,实在不会就百度,有很多例子。

 python manage.py migrate 

 

 

4、运行Django项目,默认为8000端口,访问127.0.0.1:8000请求成功就说明以上3步正常,失败则需自行解决。

 python manage.py runserver

 

 

二、uWSGI配置

 

1、创建测试脚本:

vi test.py

 

#!/usr/bin/env python

def application(env, start_response):

   start_response('200 OK', [('Content-Type','text/html')])

   return ["Hello World"]

 

 

2、测试uWSGI是否能正常工作:

uwsgi --plugin python --http-socket :8000--wsgi-file test.py

 

访问127.0.0.1:8000,有显示Hello World则uWSGI正常。

 

 

3、测试uWSGI和Django:

创建Django项目时,Django项目下会默认生成wsgi.py文件,如果没有则新建。

例如mysite项目:……./mysite/mysite/wsgi.py

文件内容:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE","mysite.settings")

 

from django.core.wsgi importget_wsgi_application

application = get_wsgi_application()

 

 

uwsgi --plugin python --http-socket :8000--wsgi-file mysite/wsgi.py

 

访问127.0.0.1:8000,有显示Django程序结果则uWSGI+Django正常合作。

 

 

4、配置uWSGI配置文件,方便启动。配置文件有三种 ini、XML、YMAL,这里使用ini

配置文件路径可自定义,我这里直接放在Django项目下。

vi …/mysite/uwsgi.ini

 

[uwsgi]

#socket端口号

socket = :8000

#python插件,不用则报选项不存在的错误

plugin   = python

#可选项

pythonpath = /www

#APP目录

chdir = /www/python/mysite

#wsgi.py文件位置,和配置文件存放在同级目录下,我这里使用相对路径。

module = mysite.wsgi

#指定Django的wsgi.py文件位置

wsgi-file =/www/python/mysite/mysite/wsgi.py

process  = 4

threads = 2

#日志路径

daemonize = /var/log/uwsgi/uwsgi.log

 

 

 

 

三、Nginx配置

 

一般加一个虚拟主机即可,全局配置文件使用默认即可。

1、 虚拟主机配置:

server {

    listen    8080;

   server_name   127.0.0.1;

   access_log  /var/log/nginx/access.log;

   error_log   /var/log/nginx/error.log;

   root      /www/python/myiste;

   

location / {

     uwsgi_pass   127.0.0.1:8000;

     include     /etc/nginx/uwsgi_params;

uwsgi_read_timeout 300;

         uwsgi_param Host $host;

uwsgi_param X-Real-IP $remote_addr;

uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;

uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;

                  }

}

 

2、 重启Nginx使其配置文件生效:

service nginx restart

 

3、 查看8080端口是否开启

netstat -tnlp

 

 

 

四、结果测试

 

1、运行uWSGI:

uwsgi --ini uwsgi.ini

 

2、查看8000和8080端口是否起来,起来则成功,继续测试。

netstat -tnlp

 

4、 访问127.0.0.1:8080

是否显示Django项目,显示该架构搭建成功。

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统上部署Django + nginx + uWSGI的步骤如下: 1. 安装必要的软件 在Linux系统上安装必要的软件包,包括Python、pip、nginxuWSGI等。 2. 创建Django项目 使用Django创建一个新项目或使用现有的Django项目。 3. 配置uWSGIDjango项目的根目录下创建一个uwsgi.ini文件,用于配置uWSGI。示例配置如下: ``` [uwsgi] # 指定运行模式为WSGI http = :8000 # 指定Django应用的wsgi模块 wsgi-file = myproject.wsgi # 指定进程数 processes = 4 # 指定线程数 threads = 2 # 指定静态文件路径 static-map = /static=/path/to/static # 指定日志路径 logto = /path/to/logfile ``` 其中,http参数指定了监听的端口号,wsgi-file参数指定了Django应用的wsgi模块,processes参数指定了进程数,threads参数指定了线程数,static-map参数指定了静态文件的路径,logto参数指定了日志文件的路径。 4. 配置nginxnginx的配置文件中添加以下内容: ``` server { listen 80; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; } location /static { alias /path/to/static; } } ``` 其中,server_name指定了域名,access_log和error_log指定了日志文件的路径,uwsgi_pass指定了uWSGI的地址和端口号,include指定了uWSGI的参数。 5. 启动uWSGI服务 使用以下命令启动uWSGI服务: ``` uwsgi --ini uwsgi.ini ``` 6. 启动nginx服务 使用以下命令启动nginx服务: ``` sudo service nginx start ``` 这样就完成了Django + nginx + uWSGI的部署。可以通过访问该网站的域名来验证是否部署成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值