博文实践操作平台:

ubuntu10.10

如果说要简单的部署基于Django框架的web服务,大抵apache+mod_python就够了。但是apache+fastcig部署的模式由于自身的局限性,使得这种部署方式只适用于并发量少的性能要求较低的服务。现在市场上比较流行的另一种呢?从一定程度上说,它可以解决apache+mod_python这种方式的部分缺陷。这就是nginx+uwsgi+Django.

如果说你已经了解NUD的好处,并打算从头开始学习它,那么我的分享可能值得你一试。

我还是先来简单讲一下NUD个各部分之间的关系吧;

NGINX:这是一个可以独立运行的web服务器。它上面不仅可以跑web服务,而且还可以跑mail或者其他服务(没试验配置过)。上网收一下你就会知道。NGNIX会有诸多好的性能。在这儿NGINX就是一个简单的web服务器。注意:他不是tomcat那样是个容器,它不是容器!!!至于它的特殊之处我后面会说;

UWSGI:uwsgi是CGI的一种。也是可以独立运行的。自然是一种类CGI,那么自然他能给处理我们的请求。并启动DJango框架。

DJango:开发框架。

三者之间的关系是怎么样的呢?

首先,服务器跑着nginx,ugwsi(它们都是独立运行的嘛,装上就可以启动了)。如果你已经配置NUD了。当这两个服务启动的时候。基于Django开发的APP将被UWSGI服务Hood住。当一个请求到达Nginx的时候。nginx接受该请求。并在我们的配置文件中找到请求的URI是要被转向UWSGI服务。那么这个服务将被格式化后转到UWSGI了。

UWSGI收到该格式化的请求后呢? 它将会启动新的进程(有可能是进程池里面调度一个)去解析我们的请求。

UWSgI在启动的时候,它会监听在本地的某个端口,可能是UNIX套接字。负责接受Nginx转过来的请求。那么为什么还要使用nginx呢,单端运行uwsgi不行吗?这肯定是不行的。首先,nginx可以为我们提供它的很多优秀的性能。比如说抵消后,高并发,以及良好的负载均衡性能。其次,uwsgi是类CGI的一种,他接受的是标准的请求格式,它不能直接接受我们发出的HTTP请求。

大概了解的一下原理,下面就是一些基本的配置:

首先要配置的是uwsgi,这里需要创建uwsgi的配置文件,在django的根目录添加一个.xml文件,可以命名为config.xml.写入如下内容:

<?xml versiong="1.0" encodong:"utf-8"?>

<uwsgi>

<socket>127.0.0.1:9999</socket>

<module>wsgi</module>

</uwsgi>

其中127.0.0.1:9999是uwsgi启动是监听的地址。这儿是本机的9999端口。

Module就是app中需要给出的官员怎么让uwsgi来hook住django app;

我现在在同一目录下面新建一个wsgi.py的文件。写入如下Python代码:

import os,sys

if not os.path.dirname(__file__) in sys.path[:1]:

sys.path.insert(0,os.path.dirname(__file__))

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()

这里面,需要将app的settings全局配置模块假如到PYTHON_PATH.一边Py解释器能够找到。然后改脚本创建一个SGI处理器。当我们启动UWSGI服务的时候将我们创建的配置文件指定给服务进程。那么UWSGI服务就能Hook住app了。

接下来配置nginx:

1,找到NGINX的配置我恩见nginx.conf,通过apt安装的服务程序中,这个为文件位于:

/etc/nginx/nginx.conf

如果只是简单的使用,不做服务器性能优化,不做负载均衡和其他高级操作。仅仅是使这个web跑起来。那么只需要在这个文件中加入一个虚拟主机配置节点就行了:

server{

listen 80;

index index.html

location /{

uwsgi_pass 127.0.0.1:9999;

include uwsgi_params;

}

}

需要说明一下,listen端口中,如果要对客户端开放web服务。那么直接写80即可。如果只对本机或者某机器开发。那么需要这样ip:port

index 不用讲了是索引

location 节点是告诉我们这么处理特定的请求。本配置例子中对所有80端口的请求都会转向uwsgi服务。127.0.0.1:9999就是我在congfig.xml中的配置地址了。

最后就是这样启动服务了:

1,启动uwsgi服务,运行如下命令:

uwsgi -x config.xml文件的路径--绝度路径

2,启动nginx,运行如下命令:

nginx

或者 service nginx start

完毕!

转载于:https://blog.51cto.com/nimbleit/789446

在Linux机器上配置NUD相关推荐

  1. c 远程编辑linux文件,makefile - 在远程Linux机器上编译C ++ - “检测到时钟偏差”警告...

    makefile - 在远程Linux机器上编译C ++ - "检测到时钟偏差"警告 我通过PuTTY和WinSCP连接到我大学的小型Linux集群,使用后者传输文件,并使用前者编 ...

  2. 4.在master机器上配置环境变量

    重点:所有的环境变量的配置,必须配置在hadoop用户的~/.bashrc文件中 在master机器上配置hadoop的环境变量 (1) su hadoop #切换到hadoop用户下 sudo ge ...

  3. 在Linux服务器上配置phpMyAdmin--允许空密码

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  4. mysql在linux只有用空密码_在Linux服务器上配置phpMyAdmin--允许空密码

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  5. 在Linux服务器上配置phpMyAdmin

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  6. 转:在Linux服务器上配置phpMyAdmin

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  7. linux机器上crontab定时任务将日志输出到以日期命名的log文件

    linux机器上crontab定时任务将日志输出到以日期命名的log文件 需求:将ansible-playbook脚本加到crontab定时执行linux服务器清理.把清理时打印的日志输出到以日期命名 ...

  8. 在Linux系统上配置Samba客户端,访问Samba远程目录

    1. 前言 本文主要讲解如何在Linux系统上配置Samba客户端,访问Samba远程目录. 2. 安装smbclient Linux用户可以从命令行访问samba共享,使用文件管理器或挂载samba ...

  9. 跑linux主机配置,在 StorSimple Linux 主机上配置 MPIO | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在运行 CentOS ...

最新文章

  1. python or的用法_python中and和or的用法
  2. 海量数据处理:两个大文件中的相同记录
  3. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)
  4. jeecg下实现自动默认模糊查询
  5. Emgucv中快捷的显示图像直方图
  6. 这是人类高手输给AI的第一场辩论赛
  7. 通用线程 -- sed 实例
  8. python编程入门-python编程入门(第3版)
  9. Vue-watch侦听器和计算属性
  10. Ubuntu18.04安装python3.7.7和tensorflow-gpu 2.2.0
  11. Flutter — 实现验证码倒计时功能
  12. HDU 1596 find the safest road (最短路)
  13. 中国光谷·“华为杯”第十九届中国研究生数学建模竞赛LaTeX模版
  14. 智芯传感推出高性能低功耗ZXP2绝压压力传感器
  15. 新鲜出炉:2021 编程语言排行榜~
  16. iPhone/iPad用iTunes“同步”不等于“备份”
  17. 【渝粤教育】国家开放大学2018年春季 8624-21T物业管理案例分析 参考试题
  18. 涅槃?高效报表开发人员的五件武器
  19. 春招两次腾讯面试都挂二面了,分享下我失败+傻傻的面试经历
  20. QT实现滑动切换界面,ARM/Linux触屏滑动切换界面,切换Qwidget

热门文章

  1. Restlet入门示例
  2. 使用 Drools 规则引擎实现业务逻辑,可调试drl文件
  3. synchronized,ReentrantLock解决锁冲突,脏读的问题
  4. 同步 异步 阻塞 非阻塞深入理解
  5. MyBatis 问题(持续更新)
  6. 关于haproxy的重定向
  7. Hibernate入门(二)
  8. Linux下面 多线程死锁问题的调试
  9. java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextAware
  10. ORA-01180: can not create datafile 1 :解决一例